diff options
author | Bastien Nocera <hadess@hadess.net> | 2020-04-08 13:52:48 +0200 |
---|---|---|
committer | Felipe Borges <felipeborges@gnome.org> | 2023-02-10 13:16:19 +0000 |
commit | fbf8886b91b597b7bacfa93623d0c6c176ae3e9a (patch) | |
tree | b7e02051e098394363021042313ec5224f145e08 /shell | |
parent | d08fe40bb64a685733999f0c52529b9616f55c3d (diff) | |
download | gnome-control-center-fbf8886b91b597b7bacfa93623d0c6c176ae3e9a.tar.gz |
shell: Refuse to run under unsupported desktops
Closes: #945
Diffstat (limited to 'shell')
-rw-r--r-- | shell/main.c | 36 | ||||
-rw-r--r-- | shell/org.gnome.Settings.desktop.in | 3 |
2 files changed, 38 insertions, 1 deletions
diff --git a/shell/main.c b/shell/main.c index 5a30382be..b8c0cc76a 100644 --- a/shell/main.c +++ b/shell/main.c @@ -33,6 +33,36 @@ #include "cc-log.h" #include "cc-application.h" +static char ** +get_current_desktops (void) +{ + const char *envvar; + + envvar = g_getenv ("XDG_CURRENT_DESKTOP"); + + if (!envvar) + return g_new0 (char *, 0 + 1); + + return g_strsplit (envvar, G_SEARCHPATH_SEPARATOR_S, 0); +} + +static gboolean +is_supported_desktop (void) +{ + g_auto(GStrv) desktops = NULL; + guint i; + + desktops = get_current_desktops (); + for (i = 0; desktops[i] != NULL; i++) + { + /* This matches OnlyShowIn in gnome-control-center.desktop.in.in */ + if (g_ascii_strcasecmp (desktops[i], "GNOME") == 0) + return TRUE; + } + + return FALSE; +} + int main (gint argc, gchar **argv) @@ -46,6 +76,12 @@ main (gint argc, setlocale (LC_ALL, ""); cc_log_init (); + if (!is_supported_desktop ()) + { + g_message ("Running gnome-control-center is only supported under GNOME and Unity, exiting"); + return 1; + } + application = cc_application_new (); return g_application_run (G_APPLICATION (application), argc, argv); diff --git a/shell/org.gnome.Settings.desktop.in b/shell/org.gnome.Settings.desktop.in index 5eb6055a8..1af2cd1d8 100644 --- a/shell/org.gnome.Settings.desktop.in +++ b/shell/org.gnome.Settings.desktop.in @@ -7,7 +7,8 @@ Terminal=false Type=Application StartupNotify=true Categories=GNOME;GTK;Settings; -OnlyShowIn=GNOME;Unity; +# See also is_supported_desktop() in main.c +OnlyShowIn=GNOME; # Translators: Search terms to find this app. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! Keywords=Preferences;Settings; # Translators: Do NOT translate or transliterate this text (these are enum types)! |