aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt26
-rw-r--r--src/utils.c14
-rw-r--r--src/utils.h5
-rw-r--r--tests/tst_utils.cpp41
-rw-r--r--tests/tst_utils.vala42
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);