aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2025-02-28 17:25:29 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2025-02-28 17:34:47 +0100
commitfc90dc2da7979f927b7bcb2b041c0f2f72346cb5 (patch)
tree18bbece174c26abf54b8f76a771de2a31bf6883a
parent67f0b729a2be751f2ac95dba310faa9bc7331c3b (diff)
downloadlibayatana-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.c8
-rw-r--r--tests/tst_utils.cpp28
-rw-r--r--tests/tst_utils.vala34
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);