Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAntenore Gatta (tmow) <antenore@simbiosi.org>2021-12-16 17:59:04 +0300
committerAntenore Gatta (tmow) <antenore@simbiosi.org>2021-12-16 17:59:04 +0300
commita61527d615c8608fefd8acb271c98ab7d1b0dfbd (patch)
treec3ccd903bb74a75fd2c6ec73ef4e9d8e2605bef1 /src
parent4a267b53a1d4762efa6ae5052d7e43531e694b9d (diff)
Make Appindicator optional
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt23
-rw-r--r--src/remmina_exec.c5
-rw-r--r--src/remmina_icon.c25
-rw-r--r--src/remmina_pref_dialog.c9
4 files changed, 43 insertions, 19 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 71fc9ff2e..779211728 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -263,17 +263,20 @@ if(sodium_FOUND)
target_link_libraries(remmina sodium)
endif()
+option(HAVE_LIBAPPINDICATOR "Build with support for status icon. Appindicator is required" ON)
if(GTK3_FOUND)
- find_required_package(APPINDICATOR)
- if(APPINDICATOR_FOUND)
- add_definitions(-DHAVE_LIBAPPINDICATOR)
- include_directories(${APPINDICATOR_INCLUDE_DIRS})
- target_link_libraries(remmina ${APPINDICATOR_LIBRARIES})
- message(STATUS "AppIndicator library dirs ${APPINDICATOR_LIBRARIES}")
- message(STATUS "AppIndicator include dirs ${APPINDICATOR_INCLUDE_DIRS}")
- else()
- message(FATAL_ERROR "AppIndicator not found")
- endif()
+ if(HAVE_LIBAPPINDICATOR)
+ find_required_package(APPINDICATOR)
+ if(APPINDICATOR_FOUND)
+ add_definitions(-DHAVE_LIBAPPINDICATOR)
+ include_directories(${APPINDICATOR_INCLUDE_DIRS})
+ target_link_libraries(remmina ${APPINDICATOR_LIBRARIES})
+ message(STATUS "AppIndicator library dirs ${APPINDICATOR_LIBRARIES}")
+ message(STATUS "AppIndicator include dirs ${APPINDICATOR_INCLUDE_DIRS}")
+ else()
+ message(FATAL_ERROR "AppIndicator not found")
+ endif()
+ endif()
find_required_package(JSONGLIB)
if(JSONGLIB_FOUND)
include_directories(${JSONGLIB_INCLUDE_DIRS})
diff --git a/src/remmina_exec.c b/src/remmina_exec.c
index 530e9e7d9..b3140a66f 100644
--- a/src/remmina_exec.c
+++ b/src/remmina_exec.c
@@ -53,11 +53,12 @@
#include "remmina_about.h"
#include "remmina_plugin_manager.h"
#include "remmina_exec.h"
-#include "remmina_icon.h"
#include "remmina/remmina_trace_calls.h"
#include "remmina_file_manager.h"
#include "remmina_crypt.h"
+#include "remmina_icon.h"
+
#ifdef SNAP_BUILD
# define ISSNAP "- SNAP Build -"
#else
@@ -96,8 +97,10 @@ void remmina_exec_exitremmina()
/* Delete all widgets, main window not included */
remmina_widget_pool_foreach(cb_closewidget, NULL);
+#ifdef HAVE_LIBAPPINDICATOR
/* Remove systray menu */
remmina_icon_destroy();
+#endif
/* close/destroy main window struct and window */
remmina_main_destroy();
diff --git a/src/remmina_icon.c b/src/remmina_icon.c
index e9c3b1855..85df8f277 100644
--- a/src/remmina_icon.c
+++ b/src/remmina_icon.c
@@ -35,8 +35,16 @@
*/
#include "config.h"
+
#include <gtk/gtk.h>
#include <glib/gi18n.h>
+
+#ifdef HAVE_LIBAPPINDICATOR
+# ifdef HAVE_AYATANA_LIBAPPINDICATOR
+# include <libayatana-appindicator/app-indicator.h>
+# else
+# include <libappindicator/app-indicator.h>
+# endif
#include "remmina_widget_pool.h"
#include "remmina_pref.h"
#include "remmina_exec.h"
@@ -51,14 +59,6 @@
#include "remmina/remmina_trace_calls.h"
#include "remmina_sysinfo.h"
-#ifdef HAVE_LIBAPPINDICATOR
-#ifdef HAVE_AYATANA_LIBAPPINDICATOR
-#include <libayatana-appindicator/app-indicator.h>
-#else
-#include <libappindicator/app-indicator.h>
-#endif
-#endif
-
typedef struct _RemminaIcon {
AppIndicator * icon;
gboolean indicator_connected;
@@ -450,3 +450,12 @@ void remmina_icon_set_autostart(gboolean autostart)
}
g_key_file_free(gkeyfile);
}
+
+#else
+void remmina_icon_init(void) {};
+void remmina_icon_destroy(void) {};
+gboolean remmina_icon_is_available(void) {return FALSE;};
+void remmina_icon_populate_menu(void) {};
+void remmina_icon_set_autostart(gboolean autostart) {} ;
+gboolean remmina_icon_is_autostart(void) {return FALSE;};
+#endif
diff --git a/src/remmina_pref_dialog.c b/src/remmina_pref_dialog.c
index 24980eaa8..b2964a463 100644
--- a/src/remmina_pref_dialog.c
+++ b/src/remmina_pref_dialog.c
@@ -509,12 +509,21 @@ static void remmina_pref_dialog_init(void)
g_snprintf(buf, sizeof(buf), "%i", remmina_pref.recent_maximum);
gtk_entry_set_text(remmina_pref_dialog->entry_options_recent_items, buf);
+#ifdef HAVE_LIBAPPINDICATOR
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_applet_new_connection_on_top), remmina_pref.applet_new_ontop);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_applet_hide_totals), remmina_pref.applet_hide_count);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_applet_disable_tray), remmina_pref.disable_tray_icon);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_dark_theme), remmina_pref.dark_theme);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_applet_start_in_tray), remmina_icon_is_autostart());
gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->checkbutton_applet_start_in_tray), !remmina_pref.disable_tray_icon);
+#else
+ remmina_pref.disable_tray_icon = TRUE;
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog->checkbutton_dark_theme), remmina_pref.dark_theme);
+ gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->checkbutton_applet_new_connection_on_top), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->checkbutton_applet_hide_totals), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->checkbutton_applet_disable_tray), FALSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog->checkbutton_applet_start_in_tray), FALSE);
+#endif
remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_host_key, remmina_pref.hostkey);
remmina_pref_dialog_set_button_label(remmina_pref_dialog->button_keyboard_fullscreen, remmina_pref.shortcutkey_fullscreen);