aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Tari <robert@tari.in>2023-02-27 16:52:22 +0100
committerRobert Tari <robert@tari.in>2023-02-27 16:52:22 +0100
commite2a407893d722f0cb1ddcaea9788a1d434ecd7a8 (patch)
tree5ee9435deb8434ea2d21bac2ffa3e4f4df071be6
parentcbafa7e6bfb85e85bb8e2eaef102dcca5c76deab (diff)
parent4e48436b26e2ac7e088cd378ee103407a46b6298 (diff)
downloadayatana-indicator-session-e2a407893d722f0cb1ddcaea9788a1d434ecd7a8.tar.gz
ayatana-indicator-session-e2a407893d722f0cb1ddcaea9788a1d434ecd7a8.tar.bz2
ayatana-indicator-session-e2a407893d722f0cb1ddcaea9788a1d434ecd7a8.zip
Merge branch 'sunweaver-pr/special-handling-for-ubuntu-touch'
Attributes GH PR #84: https://github.com/AyatanaIndicators/ayatana-indicator-session/pull/84
-rw-r--r--src/backend-dbus/actions.c6
-rw-r--r--src/service.c14
-rw-r--r--src/utils.c82
-rw-r--r--src/utils.h1
4 files changed, 78 insertions, 25 deletions
diff --git a/src/backend-dbus/actions.c b/src/backend-dbus/actions.c
index d735f00..5a2523e 100644
--- a/src/backend-dbus/actions.c
+++ b/src/backend-dbus/actions.c
@@ -890,10 +890,12 @@ my_power_off (IndicatorSessionActions * actions)
static void
my_desktop_help (IndicatorSessionActions * self G_GNUC_UNUSED)
{
- if (ayatana_common_utils_have_budgie_program ("yelp"))
+ if (g_strcmp0(get_desktop_session(), "ubuntu-touch") == 0)
+ ayatana_common_utils_open_url("https://ubuntu-touch.io/");
+ else if (ayatana_common_utils_have_budgie_program ("yelp"))
ayatana_common_utils_execute_command ("yelp help:gnome-user-guide");
else if (ayatana_common_utils_is_lomiri())
- ayatana_common_utils_open_url("https://forums.ubports.com");
+ ayatana_common_utils_open_url("https://lomiri.com");
else if (ayatana_common_utils_have_gnome_program ("yelp"))
ayatana_common_utils_execute_command ("yelp help:gnome-user-guide");
else if (ayatana_common_utils_have_mate_program ("yelp"))
diff --git a/src/service.c b/src/service.c
index d467859..760c64b 100644
--- a/src/service.c
+++ b/src/service.c
@@ -379,8 +379,18 @@ create_admin_section (IndicatorSessionService * self)
{
GMenu * menu;
priv_t * p = self->priv;
- gchar * desktop_help_label = g_strdup_printf(_("%s Help"), get_desktop_name());
- gchar * distro_help_label = g_strdup_printf(_("%s Help…"), get_distro_name());
+ gchar * desktop_help_label = NULL;
+ gchar * distro_help_label = NULL;
+ if (g_strcmp0(get_desktop_session(), "ubuntu-touch") == 0)
+ {
+ desktop_help_label = g_strdup(_("About Ubuntu Touch…"));
+ distro_help_label = g_strdup(_("About UBports Foundation…"));
+ }
+ else
+ {
+ desktop_help_label = g_strdup_printf(_("%s Help…"), get_desktop_name());
+ distro_help_label = g_strdup_printf(_("%s Help…"), get_distro_name());
+ }
menu = g_menu_new ();
if (ayatana_common_utils_is_lomiri()) {
diff --git a/src/utils.c b/src/utils.c
index 991f4ec..cd01edf 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -98,21 +98,29 @@ get_distro_url (void)
if (distro_url == NULL)
{
- GHashTable * os_release = get_os_release();
- gpointer value = g_hash_table_lookup(os_release, "SUPPORT_URL");
-
- if (value == NULL)
- {
- value = g_hash_table_lookup(os_release, "HOME_URL");
-
- if (value == NULL)
+ if (g_strcmp0(get_desktop_session(), "ubuntu-touch") == 0)
{
- value = "https://www.gnu.org"; /* fallback value */
+ distro_url = g_strdup("https://ubports.com");
}
- }
+ else
+ {
- distro_url = g_strdup(value);
- g_hash_table_destroy(os_release);
+ GHashTable * os_release = get_os_release();
+ gpointer value = g_hash_table_lookup(os_release, "SUPPORT_URL");
+
+ if (value == NULL)
+ {
+ value = g_hash_table_lookup(os_release, "HOME_URL");
+
+ if (value == NULL)
+ {
+ value = "https://www.gnu.org"; /* fallback value */
+ }
+ }
+
+ distro_url = g_strdup(value);
+ g_hash_table_destroy(os_release);
+ }
}
return distro_url;
@@ -125,12 +133,19 @@ get_distro_bts_url (void)
if (distro_bts_url == NULL)
{
- GHashTable * os_release = get_os_release();
- gpointer value = g_hash_table_lookup(os_release, "BUG_REPORT_URL");
- if (value == NULL)
- value = "https://github.com/AyatanaIndicators/ayatana-indicator-session/issues"; /* fallback value */
- distro_bts_url = g_strdup(value);
- g_hash_table_destroy(os_release);
+ if (g_strcmp0(get_desktop_session(), "ubuntu-touch") == 0)
+ {
+ distro_bts_url = g_strdup("https://gitlab.com/ubports/porting");
+ }
+ else
+ {
+ GHashTable * os_release = get_os_release();
+ gpointer value = g_hash_table_lookup(os_release, "BUG_REPORT_URL");
+ if (value == NULL)
+ value = "https://github.com/AyatanaIndicators/ayatana-indicator-session/issues"; /* fallback value */
+ distro_bts_url = g_strdup(value);
+ g_hash_table_destroy(os_release);
+ }
}
return distro_bts_url;
@@ -145,10 +160,35 @@ get_desktop_name (void)
if (desktop_name == NULL)
{
xdg_current_desktop = g_getenv ("XDG_CURRENT_DESKTOP");
- if (xdg_current_desktop != NULL) {
- desktop_name = g_strsplit (xdg_current_desktop, ":", 0)[0];
- }
+ if (xdg_current_desktop != NULL)
+ {
+ desktop_name = g_strsplit (xdg_current_desktop, ":", 0)[0];
+ }
}
return desktop_name;
}
+
+const char*
+get_desktop_session (void)
+{
+ static const char * desktop_session = NULL;
+ const char * xdg_desktop_session;
+
+ if (desktop_session == NULL)
+ {
+ xdg_desktop_session = g_getenv ("XDG_DESKTOP_SESSION");
+
+ if (xdg_desktop_session == NULL)
+ {
+ /* try DESKTOP_SESSION env var if XDG_DESKTOP_SESSION is unset */
+ desktop_session = g_getenv ("DESKTOP_SESSION");
+ }
+ else
+ {
+ desktop_session = xdg_desktop_session;
+ }
+ }
+
+ return desktop_session;
+}
diff --git a/src/utils.h b/src/utils.h
index 149087b..d57eebe 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -24,6 +24,7 @@ const char* get_distro_name();
const char* get_distro_url();
const char* get_distro_bts_url();
const char* get_desktop_name();
+const char* get_desktop_session();
GHashTable* get_os_release();
#endif /* __INDICATOR_SESSION_UTILS_H__ */