diff options
author | Antenore Gatta (tmow) <antenore@simbiosi.org> | 2021-12-16 17:59:04 +0300 |
---|---|---|
committer | Antenore Gatta (tmow) <antenore@simbiosi.org> | 2021-12-16 17:59:04 +0300 |
commit | a61527d615c8608fefd8acb271c98ab7d1b0dfbd (patch) | |
tree | c3ccd903bb74a75fd2c6ec73ef4e9d8e2605bef1 /src | |
parent | 4a267b53a1d4762efa6ae5052d7e43531e694b9d (diff) |
Make Appindicator optional
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 23 | ||||
-rw-r--r-- | src/remmina_exec.c | 5 | ||||
-rw-r--r-- | src/remmina_icon.c | 25 | ||||
-rw-r--r-- | src/remmina_pref_dialog.c | 9 |
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); |