From baa08a2ea41872d6c3bf7c526a800ce99c8e73df Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Fri, 3 Sep 2021 22:13:47 +0200 Subject: Replace local code with libayatana-common --- CMakeLists.txt | 2 +- src/CMakeLists.txt | 2 +- src/service.c | 6 +- src/utils.c | 167 ----------------------------------------------------- src/utils.h | 38 ------------ 5 files changed, 5 insertions(+), 210 deletions(-) delete mode 100644 src/utils.c delete mode 100644 src/utils.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 45149409..a9053180 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,7 +39,7 @@ add_definitions (-DGETTEXT_PACKAGE="${GETTEXT_PACKAGE}" -DLOCALEDIR="${CMAKE_INS find_package (PkgConfig REQUIRED) include (CheckIncludeFile) include (FindPkgConfig) -pkg_check_modules(SERVICE_DEPS REQUIRED glib-2.0>=2.36 gio-2.0>=2.36 x11>=1.6.7 libxklavier>=5.4) +pkg_check_modules(SERVICE_DEPS REQUIRED glib-2.0>=2.36 gio-2.0>=2.36 x11>=1.6.7 libxklavier>=5.4 libayatana-common>=0.9.3) include_directories (SYSTEM ${SERVICE_DEPS_INCLUDE_DIRS}) # custom targets diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3eb7caf9..6efa4677 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,7 +5,7 @@ set (SERVICE_EXEC "ayatana-indicator-keyboard-service") add_definitions(-DG_LOG_DOMAIN="ayatana-indicator-keyboard") # handwritten sources -set(SERVICE_MANUAL_SOURCES keyboard.c service.c utils.c) +set(SERVICE_MANUAL_SOURCES keyboard.c service.c) # generated sources set(SERVICE_GENERATED_SOURCES) diff --git a/src/service.c b/src/service.c index 8d662a20..afeed80f 100644 --- a/src/service.c +++ b/src/service.c @@ -16,8 +16,8 @@ #include #include +#include #include "service.h" -#include "utils.h" #define BUS_NAME "org.ayatana.indicator.keyboard" #define BUS_PATH "/org/ayatana/indicator/keyboard" @@ -256,9 +256,9 @@ static void onLayoutSelected(GSimpleAction *pAction, GVariant *pVariant, gpointe static void onSettings(GSimpleAction *pAction, GVariant *pVariant, gpointer pUserData) { - if (is_mate()) + if (ayatana_common_utils_is_mate()) { - execute_command("mate-keyboard-properties"); + ayatana_common_utils_execute_command("mate-keyboard-properties"); } } diff --git a/src/utils.c b/src/utils.c deleted file mode 100644 index 82f9cff0..00000000 --- a/src/utils.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright 2021 Marius Gripsgard - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3, as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranties of - * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -#include "utils.h" - -#include - -#ifdef HAS_URLDISPATCHER -# include -#endif - -// TODO: make case insensitive -gboolean -is_xdg_current_desktop (const gchar* desktop) -{ - const gchar *xdg_current_desktop; - gchar **desktop_names; - int i; - - xdg_current_desktop = g_getenv ("XDG_CURRENT_DESKTOP"); - if (xdg_current_desktop != NULL) { - desktop_names = g_strsplit (xdg_current_desktop, ":", 0); - for (i = 0; desktop_names[i]; ++i) { - if (!g_strcmp0 (desktop_names[i], desktop)) { - g_strfreev (desktop_names); - return TRUE; - } - } - g_strfreev (desktop_names); - } - return FALSE; -} - -gboolean -is_lomiri () -{ - // For legacy reasons keep the MIR_SOCKET hack - return (g_getenv ("MIR_SOCKET") != NULL || - is_xdg_current_desktop(DESKTOP_LOMIRI)); -} - -gboolean -is_gnome () -{ - return is_xdg_current_desktop(DESKTOP_GNOME); -} - -gboolean -is_unity () -{ - return is_xdg_current_desktop(DESKTOP_UNITY); -} - -gboolean -is_mate () -{ - return is_xdg_current_desktop(DESKTOP_MATE); -} - -gboolean -is_xfce () -{ - return is_xdg_current_desktop(DESKTOP_XFCE); -} - -gboolean -is_pantheon () -{ - return is_xdg_current_desktop(DESKTOP_PANTHEON); -} - -// Bit of a hacky way? should use xdg open -char * -find_browser () -{ - static char * browser_path = NULL; - char* tmp_browser_path; - gchar **browser_names; - - int i; - - if (browser_path == NULL) - { - browser_names = g_strsplit ("x-www-browser,google-chrome,firefox,chromium", ",", 0); - - for (i = 0; browser_names[i]; ++i) { - tmp_browser_path = g_find_program_in_path (browser_names[i]); - - if (tmp_browser_path) { - browser_path = g_strdup (tmp_browser_path); - g_free (tmp_browser_path); - g_strfreev (browser_names); - break; - } - } - } - - return browser_path; -} - -gboolean -execute_command (const gchar * cmd) -{ - GError * err = NULL; - - g_debug ("Issuing command '%s'", cmd); - - if (!g_spawn_command_line_async (cmd, &err)) - { - g_warning ("Unable to start %s: %s", cmd, err->message); - g_error_free (err); - return FALSE; - } - - return TRUE; -} - -gboolean -open_url (const gchar * url) -{ - char * browser = NULL; - - if (is_lomiri()) - { -#ifdef HAS_URLDISPATCHER - url_dispatch_send("settings:///system/battery", NULL, NULL); - return TRUE; -#else - g_warning("Built without url-dispatcher, is not able to open url"); -#endif - } - - if (browser == NULL) - browser = find_browser(); - - if (browser != NULL) - return execute_command(g_strdup_printf("%s '%s'", browser, url)); - else - return FALSE; - -} - -gboolean -have_program (const gchar * program) -{ - gchar *path; - gboolean have; - - path = g_find_program_in_path(program); - have = path != NULL; - g_free(path); - - return have; -} diff --git a/src/utils.h b/src/utils.h deleted file mode 100644 index 52e491f2..00000000 --- a/src/utils.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2021 Marius Gripsgard - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3, as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranties of - * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - - -#pragma once - -#include - -#define DESKTOP_LOMIRI "Lomiri" -#define DESKTOP_UNITY "Unity" -#define DESKTOP_MATE "MATE" -#define DESKTOP_GNOME "GNOME" -#define DESKTOP_XFCE "XFCE" -#define DESKTOP_PANTHEON "PANTHEON" - -gboolean is_lomiri(); -gboolean is_unity(); -gboolean is_gnome(); -gboolean is_mate(); -gboolean is_xfce(); -gboolean is_pantheon(); - -gboolean execute_command(const gchar * cmd); -gboolean open_url(const gchar * url); -gboolean have_program(const gchar * program); -- cgit v1.2.3 From e81e7fa8faaa40a36c436529c03b09133d1a2a76 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Fri, 3 Sep 2021 22:14:56 +0200 Subject: debian/control: add libayatana-common-dev build dependency --- debian/control | 1 + 1 file changed, 1 insertion(+) diff --git a/debian/control b/debian/control index 8afa5797..2f401e8f 100644 --- a/debian/control +++ b/debian/control @@ -7,6 +7,7 @@ Build-Depends: cmake, libglib2.0-dev (>= 2.36), libx11-dev (>=1.7.0), libxklavier-dev (>=5.4), + libayatana-common-dev (>= 0.9.3), # for packaging debhelper (>= 10), dh-systemd | hello, -- cgit v1.2.3 From d42da41264e8e7a8939068791e9bb5038bdaf649 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Fri, 3 Sep 2021 22:16:59 +0200 Subject: .build.yml: Install libayatana-common dependency from GitHub --- .build.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.build.yml b/.build.yml index 4d8c04d9..7265d2cb 100644 --- a/.build.yml +++ b/.build.yml @@ -17,6 +17,7 @@ requires: - glib2 - libx11 - libxklavier +# - libayatana-common debian: # Useful URL: https://salsa.debian.org/debian-ayatana-team/ayatana-ido @@ -34,6 +35,7 @@ requires: - libx11-dev - libxklavier-dev - systemd +# - libayatana-common-dev ubuntu: - autopoint @@ -49,6 +51,7 @@ requires: - libx11-dev - libxklavier-dev - systemd +# - libayatana-common-dev variables: - 'CHECKERS=" @@ -68,6 +71,16 @@ variables: -enable-checker alpha.core.FixedAddr -enable-checker security.insecureAPI.strcpy"' +before_scripts: + - cd ${START_DIR} + - if [ ! -d libayatana-common-build ]; then + - git clone --depth 1 https://github.com/AyatanaIndicators/libayatana-common.git libayatana-common-build + - fi + - cd libayatana-common-build + - cmake . -DCMAKE_INSTALL_PREFIX=/usr + - make + - make install + build_scripts: - if [ ${DISTRO_NAME} == "debian" ];then - export CFLAGS+=" -Wsign-compare -Wunused-parameter" @@ -78,7 +91,7 @@ build_scripts: - NOCONFIGURE=1 ./autogen.sh - scan-build $CHECKERS ./configure --prefix=/usr --enable-gtk-doc --enable-compile-warnings=maximum - elif [ -e ./CMakeLists.txt ]; then - - if [ ${DISTRO_NAME} == "debian" ];then + - if [ ${DISTRO_NAME} == "debian" ] || [ ${DISTRO_NAME} == "ubuntu" ]; then - scan-build $CHECKERS cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTS=ON - else - scan-build $CHECKERS cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON @@ -104,7 +117,7 @@ build_scripts: #after_scripts: # - if [ ${BUILD_TYPE} == "scripts" ];then # - XVFB_RUN="$(which xvfb-run || true)" -# - if [ ${DISTRO_NAME} == "debian" ];then +# - if [ ${DISTRO_NAME} == "debian" ] || [ ${DISTRO_NAME} == "ubuntu" ];then # - if [ -e ./autogen.sh ]; then # - ${XVFB_RUN} make check # - elif [ -e ./CMakeLists.txt ]; then -- cgit v1.2.3