diff options
-rw-r--r-- | src/CMakeLists.txt | 26 | ||||
-rw-r--r-- | src/utils.c | 14 | ||||
-rw-r--r-- | src/utils.h | 5 | ||||
-rw-r--r-- | tests/tst_utils.cpp | 41 | ||||
-rw-r--r-- | tests/tst_utils.vala | 42 |
5 files changed, 109 insertions, 19 deletions
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() diff --git a/src/utils.c b/src/utils.c index 0a33a74..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; @@ -74,6 +78,12 @@ ayatana_common_utils_is_lomiri () } gboolean +ayatana_common_utils_is_ubuntutouch () +{ + return is_xdg_current_desktop(DESKTOP_UBUNTUTOUCH, SESSION_UBUNTUTOUCH); +} + +gboolean ayatana_common_utils_is_gnome () { return is_xdg_current_desktop(DESKTOP_GNOME, SESSION_GNOME); diff --git a/src/utils.h b/src/utils.h index 9d3e641..efb3ec7 100644 --- a/src/utils.h +++ b/src/utils.h @@ -23,13 +23,15 @@ #include <gio/gio.h> 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"; 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"; 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(); diff --git a/tests/tst_utils.cpp b/tests/tst_utils.cpp index a1cf7c5..db2c672 100644 --- a/tests/tst_utils.cpp +++ b/tests/tst_utils.cpp @@ -41,51 +41,85 @@ 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", "ubuntu-touch", 1); + 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()); } +TEST_F(XdgCurrentDesktopUtilsTest, isUbuntuTouch) +{ + unsetenv("XDG_CURRENT_DESKTOP"); + unsetenv("DESKTOP_SESSION"); + EXPECT_FALSE(ayatana_common_utils_is_ubuntutouch()); + setenv("XDG_CURRENT_DESKTOP", "Lomiri", 1); + 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()); } @@ -93,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()); @@ -100,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 44ce6fe..e63ed99 100644 --- a/tests/tst_utils.vala +++ b/tests/tst_utils.vala @@ -6,62 +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", "ubuntu-touch", true); + 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("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); |