diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2025-02-28 17:25:29 +0100 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2025-02-28 17:34:47 +0100 |
commit | fc90dc2da7979f927b7bcb2b041c0f2f72346cb5 (patch) | |
tree | 18bbece174c26abf54b8f76a771de2a31bf6883a | |
parent | 67f0b729a2be751f2ac95dba310faa9bc7331c3b (diff) | |
download | libayatana-common-fc90dc2da7979f927b7bcb2b041c0f2f72346cb5.tar.gz libayatana-common-fc90dc2da7979f927b7bcb2b041c0f2f72346cb5.tar.bz2 libayatana-common-fc90dc2da7979f927b7bcb2b041c0f2f72346cb5.zip |
src/utils.c: Prefer XDG_SESSION_DESKTOP over DESKTOP_SESSION.
-rw-r--r-- | src/utils.c | 8 | ||||
-rw-r--r-- | tests/tst_utils.cpp | 28 | ||||
-rw-r--r-- | tests/tst_utils.vala | 34 |
3 files changed, 66 insertions, 4 deletions
diff --git a/src/utils.c b/src/utils.c index 712b060..3a854a6 100644 --- a/src/utils.c +++ b/src/utils.c @@ -55,13 +55,17 @@ is_xdg_current_desktop (const gchar* desktop, const gchar* session) if (session != NULL) { - const gchar *desktop_session = g_getenv ("DESKTOP_SESSION"); + const gchar *xdg_session_desktop = g_getenv ("XDG_SESSION_DESKTOP"); + if (xdg_session_desktop != NULL && g_str_equal(xdg_session_desktop, session)) + { + return TRUE; + } + const gchar *desktop_session = g_getenv ("DESKTOP_SESSION"); if (desktop_session != NULL && g_str_equal(desktop_session, session)) { return TRUE; } - } return FALSE; diff --git a/tests/tst_utils.cpp b/tests/tst_utils.cpp index 4f85d68..db2c672 100644 --- a/tests/tst_utils.cpp +++ b/tests/tst_utils.cpp @@ -41,10 +41,14 @@ public: TEST_F(XdgCurrentDesktopUtilsTest, isLomiri) { unsetenv("XDG_CURRENT_DESKTOP"); + unsetenv("XDG_SESSION_DESKTOP"); unsetenv("DESKTOP_SESSION"); EXPECT_FALSE(ayatana_common_utils_is_lomiri()); setenv("DESKTOP_SESSION", "lomiri", 1); EXPECT_TRUE(ayatana_common_utils_is_lomiri()); + unsetenv("DESKTOP_SESSION"); + setenv("XDG_SESSION_DESKTOP", "lomiri", 1); + EXPECT_TRUE(ayatana_common_utils_is_lomiri()); setenv("XDG_CURRENT_DESKTOP", "Lomiri", 1); EXPECT_TRUE(ayatana_common_utils_is_lomiri()); } @@ -58,45 +62,64 @@ TEST_F(XdgCurrentDesktopUtilsTest, isUbuntuTouch) EXPECT_FALSE(ayatana_common_utils_is_ubuntutouch()); setenv("DESKTOP_SESSION", "ubuntu-touch", 1); EXPECT_TRUE(ayatana_common_utils_is_ubuntutouch()); + unsetenv("DESKTOP_SESSION"); + setenv("XDG_SESSION_DESKTOP", "ubuntu-touch", 1); + EXPECT_TRUE(ayatana_common_utils_is_ubuntutouch()); } TEST_F(XdgCurrentDesktopUtilsTest, isGnome) { unsetenv("XDG_CURRENT_DESKTOP"); + unsetenv("XDG_SESSION_DESKTOP"); unsetenv("DESKTOP_SESSION"); EXPECT_FALSE(ayatana_common_utils_is_gnome()); setenv("DESKTOP_SESSION", "gnome", 1); EXPECT_TRUE(ayatana_common_utils_is_gnome()); + unsetenv("DESKTOP_SESSION"); + setenv("XDG_SESSION_DESKTOP", "gnome", 1); + EXPECT_TRUE(ayatana_common_utils_is_gnome()); setenv("XDG_CURRENT_DESKTOP", "GNOME", 1); EXPECT_TRUE(ayatana_common_utils_is_gnome()); } TEST_F(XdgCurrentDesktopUtilsTest, isUnity) { unsetenv("XDG_CURRENT_DESKTOP"); + unsetenv("XDG_SESSION_DESKTOP"); unsetenv("DESKTOP_SESSION"); EXPECT_FALSE(ayatana_common_utils_is_unity()); setenv("DESKTOP_SESSION", "gnome-fallback", 1); EXPECT_FALSE(ayatana_common_utils_is_unity()); + unsetenv("DESKTOP_SESSION"); + setenv("XDG_SESSION_DESKTOP", "gnome-fallback", 1); + EXPECT_FALSE(ayatana_common_utils_is_unity()); setenv("XDG_CURRENT_DESKTOP", "Unity", 1); EXPECT_TRUE(ayatana_common_utils_is_unity()); } TEST_F(XdgCurrentDesktopUtilsTest, isMate) { unsetenv("XDG_CURRENT_DESKTOP"); + unsetenv("XDG_SESSION_DESKTOP"); unsetenv("DESKTOP_SESSION"); EXPECT_FALSE(ayatana_common_utils_is_mate()); setenv("DESKTOP_SESSION", "mate", 1); EXPECT_TRUE(ayatana_common_utils_is_mate()); + unsetenv("DESKTOP_SESSION"); + setenv("XDG_SESSION_DESKTOP", "mate", 1); + EXPECT_TRUE(ayatana_common_utils_is_mate()); setenv("XDG_CURRENT_DESKTOP", "MATE", 1); EXPECT_TRUE(ayatana_common_utils_is_mate()); } TEST_F(XdgCurrentDesktopUtilsTest, isXfce) { unsetenv("XDG_CURRENT_DESKTOP"); + unsetenv("XDG_SESSION_DESKTOP"); unsetenv("DESKTOP_SESSION"); EXPECT_FALSE(ayatana_common_utils_is_xfce()); setenv("DESKTOP_SESSION", "xfce", 1); EXPECT_TRUE(ayatana_common_utils_is_xfce()); + unsetenv("DESKTOP_SESSION"); + setenv("XDG_SESSION_DESKTOP", "xfce", 1); + EXPECT_TRUE(ayatana_common_utils_is_xfce()); setenv("XDG_CURRENT_DESKTOP", "XFCE", 1); EXPECT_TRUE(ayatana_common_utils_is_xfce()); } @@ -104,6 +127,7 @@ TEST_F(XdgCurrentDesktopUtilsTest, isPantheon) { unsetenv("XDG_CURRENT_DESKTOP"); unsetenv("DESKTOP_SESSION"); + unsetenv("XDG_SESSION_DESKTOP"); EXPECT_FALSE(ayatana_common_utils_is_pantheon()); setenv("XDG_CURRENT_DESKTOP", "PANTHEON", 1); EXPECT_TRUE(ayatana_common_utils_is_pantheon()); @@ -111,10 +135,14 @@ TEST_F(XdgCurrentDesktopUtilsTest, isPantheon) TEST_F(XdgCurrentDesktopUtilsTest, isBudgie) { unsetenv("XDG_CURRENT_DESKTOP"); + unsetenv("XDG_SESSION_DESKTOP"); unsetenv("DESKTOP_SESSION"); EXPECT_FALSE(ayatana_common_utils_is_budgie()); setenv("DESKTOP_SESSION", "budgie-desktop", 1); EXPECT_TRUE(ayatana_common_utils_is_budgie()); + unsetenv("DESKTOP_SESSION"); + setenv("XDG_SESSION_DESKTOP", "budgie-desktop", 1); + EXPECT_TRUE(ayatana_common_utils_is_budgie()); setenv("XDG_CURRENT_DESKTOP", "Budgie:GNOME", 1); EXPECT_TRUE(ayatana_common_utils_is_budgie()); } diff --git a/tests/tst_utils.vala b/tests/tst_utils.vala index 3762364..e63ed99 100644 --- a/tests/tst_utils.vala +++ b/tests/tst_utils.vala @@ -6,70 +6,100 @@ static int main(string[] args) { assert(args.length == 2); - unset_variable("DESKTOP_SESSION"); unset_variable("XDG_CURRENT_DESKTOP"); + unset_variable("DESKTOP_SESSION"); + unset_variable("XDG_SESSION_DESKTOP"); assert(! utils_is_lomiri()); set_variable("DESKTOP_SESSION", "lomiri", true); assert(utils_is_lomiri()); + unset_variable("DESKTOP_SESSION"); + set_variable("XDG_SESSION_DESKTOP", "lomiri", true); + assert(utils_is_lomiri()); set_variable("XDG_CURRENT_DESKTOP", "Lomiri", true); assert(utils_is_lomiri()); - unset_variable("DESKTOP_SESSION"); unset_variable("XDG_CURRENT_DESKTOP"); + unset_variable("DESKTOP_SESSION"); + unset_variable("XDG_SESSION_DESKTOP"); assert(! utils_is_ubuntutouch()); set_variable("XDG_CURRENT_DESKTOP", "Lomiri", true); assert(! utils_is_ubuntutouch()); set_variable("DESKTOP_SESSION", "ubuntu-touch", true); assert(utils_is_ubuntutouch()); + unset_variable("DESKTOP_SESSION"); + set_variable("XDG_SESSION_DESKTOP", "ubuntu-touch", true); + assert(utils_is_ubuntutouch()); unset_variable("XDG_CURRENT_DESKTOP"); unset_variable("DESKTOP_SESSION"); + unset_variable("XDG_SESSION_DESKTOP"); assert(! utils_is_gnome()); set_variable("DESKTOP_SESSION", "gnome", true); assert(utils_is_gnome()); + unset_variable("DESKTOP_SESSION"); + set_variable("XDG_SESSION_DESKTOP", "gnome", true); + assert(utils_is_gnome()); set_variable("XDG_CURRENT_DESKTOP", "GNOME", true); assert(utils_is_gnome()); unset_variable("XDG_CURRENT_DESKTOP"); unset_variable("DESKTOP_SESSION"); + unset_variable("XDG_SESSION_DESKTOP"); assert(! utils_is_unity()); set_variable("DESKTOP_SESSION", "gnome-fallback", true); assert(! utils_is_unity()); + unset_variable("DESKTOP_SESSION"); + set_variable("XDG_SESSION_DESKTOP", "gnome-fallback", true); + assert(! utils_is_unity()); set_variable("XDG_CURRENT_DESKTOP", "Unity", true); assert(utils_is_unity()); unset_variable("XDG_CURRENT_DESKTOP"); unset_variable("DESKTOP_SESSION"); + unset_variable("XDG_SESSION_DESKTOP"); assert(! utils_is_mate()); set_variable("DESKTOP_SESSION", "mate", true); assert(utils_is_mate()); + unset_variable("DESKTOP_SESSION"); + set_variable("XDG_SESSION_DESKTOP", "mate", true); + assert(utils_is_mate()); set_variable("XDG_CURRENT_DESKTOP", "MATE", true); assert(utils_is_mate()); unset_variable("XDG_CURRENT_DESKTOP"); unset_variable("DESKTOP_SESSION"); + unset_variable("XDG_SESSION_DESKTOP"); assert(! utils_is_xfce()); set_variable("DESKTOP_SESSION", "xfce", true); assert(utils_is_xfce()); + unset_variable("DESKTOP_SESSION"); + set_variable("XDG_SESSION_DESKTOP", "xfce", true); + assert(utils_is_xfce()); set_variable("XDG_CURRENT_DESKTOP", "XFCE", true); assert(utils_is_xfce()); unset_variable("XDG_CURRENT_DESKTOP"); unset_variable("DESKTOP_SESSION"); + unset_variable("XDG_SESSION_DESKTOP"); assert(! utils_is_pantheon()); set_variable("XDG_CURRENT_DESKTOP", "PANTHEON", true); assert(utils_is_pantheon()); unset_variable("XDG_CURRENT_DESKTOP"); unset_variable("DESKTOP_SESSION"); + unset_variable("XDG_SESSION_DESKTOP"); assert(! utils_is_budgie()); set_variable("DESKTOP_SESSION", "budgie-desktop", true); assert(utils_is_budgie()); + unset_variable("DESKTOP_SESSION"); + set_variable("XDG_SESSION_DESKTOP", "budgie-desktop", true); + assert(utils_is_budgie()); set_variable("XDG_CURRENT_DESKTOP", "Budgie:GNOME", true); assert(utils_is_budgie()); unset_variable("XDG_CURRENT_DESKTOP"); unset_variable("DESKTOP_SESSION"); + unset_variable("XDG_SESSION_DESKTOP"); set_variable("GSETTINGS_SCHEMA_DIR", args[1], true); set_variable("GSETTINGS_BACKEND", "memory", true); |