From cf42441b43aec2e0457ec6e4dfdf2af8e58ac716 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Fri, 28 Feb 2025 16:11:01 +0100 Subject: src/utils.(c|h): Add ayatana_common_utils_is_ubuntutouch() function. --- src/utils.c | 6 ++++++ src/utils.h | 3 +++ 2 files changed, 9 insertions(+) (limited to 'src') diff --git a/src/utils.c b/src/utils.c index 0a33a74..712b060 100644 --- a/src/utils.c +++ b/src/utils.c @@ -73,6 +73,12 @@ ayatana_common_utils_is_lomiri () return is_xdg_current_desktop(DESKTOP_LOMIRI, SESSION_LOMIRI); } +gboolean +ayatana_common_utils_is_ubuntutouch () +{ + return is_xdg_current_desktop(DESKTOP_UBUNTUTOUCH, SESSION_UBUNTUTOUCH); +} + gboolean ayatana_common_utils_is_gnome () { diff --git a/src/utils.h b/src/utils.h index 9d3e641..c7c658e 100644 --- a/src/utils.h +++ b/src/utils.h @@ -23,6 +23,7 @@ #include static const char * const DESKTOP_LOMIRI = "Lomiri"; +static const char * const DESKTOP_UBUNTUTOUCH = NULL; static const char * const DESKTOP_UNITY = "Unity"; static const char * const DESKTOP_MATE = "MATE"; static const char * const DESKTOP_GNOME = "GNOME"; @@ -30,6 +31,7 @@ static const char * const DESKTOP_XFCE = "XFCE"; static const char * const DESKTOP_PANTHEON = "PANTHEON"; static const char * const DESKTOP_BUDGIE = "Budgie"; static const char * const SESSION_LOMIRI = "ubuntu-touch"; +static const char * const SESSION_UBUNTUTOUCH = "ubuntu-touch"; static const char * const SESSION_UNITY = NULL; static const char * const SESSION_MATE = "mate"; static const char * const SESSION_GNOME = "gnome"; @@ -38,6 +40,7 @@ static const char * const SESSION_PANTHEON = NULL; static const char * const SESSION_BUDGIE = "budgie-desktop"; gboolean ayatana_common_utils_is_lomiri(); +gboolean ayatana_common_utils_is_ubuntutouch(); gboolean ayatana_common_utils_is_unity(); gboolean ayatana_common_utils_is_gnome(); gboolean ayatana_common_utils_is_mate(); -- cgit v1.2.3 From 27fdf5af170bf355b6da32e11e3135e99a5e675a Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Fri, 28 Feb 2025 16:11:55 +0100 Subject: src/utils.h: On Linux Desktop, if Lomiri is running, but not Ubuntu Touch, then DESKTOP_SESSION is set to 'lomiri'. --- src/utils.h | 2 +- tests/tst_utils.cpp | 2 +- tests/tst_utils.vala | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/utils.h b/src/utils.h index c7c658e..efb3ec7 100644 --- a/src/utils.h +++ b/src/utils.h @@ -30,7 +30,7 @@ static const char * const DESKTOP_GNOME = "GNOME"; static const char * const DESKTOP_XFCE = "XFCE"; static const char * const DESKTOP_PANTHEON = "PANTHEON"; static const char * const DESKTOP_BUDGIE = "Budgie"; -static const char * const SESSION_LOMIRI = "ubuntu-touch"; +static const char * const SESSION_LOMIRI = "lomiri"; static const char * const SESSION_UBUNTUTOUCH = "ubuntu-touch"; static const char * const SESSION_UNITY = NULL; static const char * const SESSION_MATE = "mate"; diff --git a/tests/tst_utils.cpp b/tests/tst_utils.cpp index 0d59da0..4f85d68 100644 --- a/tests/tst_utils.cpp +++ b/tests/tst_utils.cpp @@ -43,7 +43,7 @@ TEST_F(XdgCurrentDesktopUtilsTest, isLomiri) unsetenv("XDG_CURRENT_DESKTOP"); unsetenv("DESKTOP_SESSION"); EXPECT_FALSE(ayatana_common_utils_is_lomiri()); - setenv("DESKTOP_SESSION", "ubuntu-touch", 1); + setenv("DESKTOP_SESSION", "lomiri", 1); EXPECT_TRUE(ayatana_common_utils_is_lomiri()); setenv("XDG_CURRENT_DESKTOP", "Lomiri", 1); EXPECT_TRUE(ayatana_common_utils_is_lomiri()); diff --git a/tests/tst_utils.vala b/tests/tst_utils.vala index 4d070e7..3762364 100644 --- a/tests/tst_utils.vala +++ b/tests/tst_utils.vala @@ -9,7 +9,7 @@ static int main(string[] args) unset_variable("DESKTOP_SESSION"); unset_variable("XDG_CURRENT_DESKTOP"); assert(! utils_is_lomiri()); - set_variable("DESKTOP_SESSION", "ubuntu-touch", true); + set_variable("DESKTOP_SESSION", "lomiri", true); assert(utils_is_lomiri()); set_variable("XDG_CURRENT_DESKTOP", "Lomiri", true); assert(utils_is_lomiri()); -- cgit v1.2.3 From 67f0b729a2be751f2ac95dba310faa9bc7331c3b Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Fri, 28 Feb 2025 16:12:32 +0100 Subject: src/CMakeLists.txt: Bump SOVERSION_MINOR (due to added symbol 'ayatana_common_utils_is_ubuntutouch'). --- src/CMakeLists.txt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c7d351d..8da66c0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,7 +19,7 @@ set(PUBLIC_HEADERS set_target_properties(ayatana-common PROPERTIES - VERSION ${API_VERSION}.0.0 + VERSION ${API_VERSION}.1.0 SOVERSION ${ABI_VERSION} ) @@ -33,7 +33,7 @@ install(TARGETS ayatana-common DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) if (INTROSPECTION_FOUND) add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.gir" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.gir" DEPENDS "ayatana-common" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND @@ -41,44 +41,44 @@ if (INTROSPECTION_FOUND) utils.c utils.h --no-libtool --namespace=AyatanaCommon - --nsversion=0.0 + --nsversion=0.1 --c-include=ayatana/common/utils.h --quiet --warn-all --include=GLib-2.0 --library="ayatana-common" --library-path=${CMAKE_CURRENT_BINARY_DIR} - --output "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.gir" + --output "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.gir" ) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.gir" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.gir" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/gir-1.0") # AyatanaCommon.typelib add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.typelib" - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.gir" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.typelib" + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.gir" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${INTROSPECTION_COMPILER} --includedir=${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.gir - -o "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.typelib" + ${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.gir + -o "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.typelib" ) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.typelib" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.typelib" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/girepository-1.0") # AyatanaCommon.vapi if (VALA_COMPILER) add_custom_command( OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon.vapi" - DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.typelib" + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.typelib" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${VAPI_GEN} --library=AyatanaCommon - AyatanaCommon-0.0.gir + AyatanaCommon-0.1.gir ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon.vapi" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/vala/vapi") @@ -87,7 +87,7 @@ if (INTROSPECTION_FOUND) else() - add_custom_target("src" ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.0.typelib") + add_custom_target("src" ALL DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/AyatanaCommon-0.1.typelib") endif() -- cgit v1.2.3 From fc90dc2da7979f927b7bcb2b041c0f2f72346cb5 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Fri, 28 Feb 2025 17:25:29 +0100 Subject: src/utils.c: Prefer XDG_SESSION_DESKTOP over DESKTOP_SESSION. --- src/utils.c | 8 ++++++-- tests/tst_utils.cpp | 28 ++++++++++++++++++++++++++++ tests/tst_utils.vala | 34 ++++++++++++++++++++++++++++++++-- 3 files changed, 66 insertions(+), 4 deletions(-) (limited to 'src') 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); -- cgit v1.2.3