diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2025-05-15 09:39:00 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2025-05-15 09:39:00 +0200 |
commit | d23f0fca1b03e24b84d0c146624121cfa9e88eca (patch) | |
tree | 24985fd54fb08f31767840c89c2c6f5e04fa5f5f | |
parent | 70a3ea2b263a3d9095a9c00b09e2b3086d3f55cc (diff) | |
parent | 0228ae333701838150196be8addc508a479d9612 (diff) | |
download | ayatana-indicator-keyboard-main.tar.gz ayatana-indicator-keyboard-main.tar.bz2 ayatana-indicator-keyboard-main.zip |
Attributes GH PR #77: https://github.com/AyatanaIndicators/ayatana-indicator-keyboard/pull/77
-rw-r--r-- | debian/control | 2 | ||||
-rw-r--r-- | src/keyboard-lomiri.c | 9 | ||||
-rw-r--r-- | src/keyboard-x11.c | 13 | ||||
-rw-r--r-- | src/keyboard.h | 4 | ||||
-rw-r--r-- | src/service.c | 20 |
5 files changed, 35 insertions, 13 deletions
diff --git a/debian/control b/debian/control index 1bc2b27e..04d30fc6 100644 --- a/debian/control +++ b/debian/control @@ -28,7 +28,7 @@ Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ayatana-indicator-common, - matekbd-keyboard-display | gkbd-capplet, + matekbd-keyboard-display | gkbd-capplet | tecla, Description: Ayatana Indicator Keyboard Applet This package contains the keyboard indicator, which should show as an icon in the top panel of indicator aware destkop environments. diff --git a/src/keyboard-lomiri.c b/src/keyboard-lomiri.c index c00bc55a..bc6b3f93 100644 --- a/src/keyboard-lomiri.c +++ b/src/keyboard-lomiri.c @@ -1,5 +1,5 @@ /* - * Copyright 2021-2024 Robert Tari <robert@tari.in> + * Copyright 2021-2025 Robert Tari <robert@tari.in> * * 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 @@ -179,7 +179,7 @@ guint keyboard_GetLayoutIndex (Keyboard *pKeyboard) return pKeyboard->pPrivate->nLayout; } -void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription) +void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription, gchar **pId) { if (nLayout == -1) { @@ -199,6 +199,11 @@ void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gc { *pDescription = g_strdup(pLayout->sDescription); } + + if (pId != NULL) + { + *pId = g_strdup (sLayout); + } } void keyboard_SetLayout(Keyboard *pKeyboard, gint nLayout) diff --git a/src/keyboard-x11.c b/src/keyboard-x11.c index d7d482f5..27dfb97c 100644 --- a/src/keyboard-x11.c +++ b/src/keyboard-x11.c @@ -1,5 +1,5 @@ /* - * Copyright 2021-2024 Robert Tari <robert@tari.in> + * Copyright 2021-2025 Robert Tari <robert@tari.in> * * 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 @@ -390,7 +390,7 @@ guint keyboard_GetLayoutIndex (Keyboard *pKeyboard) return pKeyboard->pPrivate->nLayout; } -void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription) +void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription, gchar **pId) { if (nLayout == -1) { @@ -432,7 +432,14 @@ void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gc *pDescription = g_strdup(pLayout->sDescription); } - g_free(sId); + if (pId != NULL) + { + *pId = sId; + } + else + { + g_free(sId); + } } void keyboard_SetLayout(Keyboard *pKeyboard, gint nLayout) diff --git a/src/keyboard.h b/src/keyboard.h index 39f822cd..49c21056 100644 --- a/src/keyboard.h +++ b/src/keyboard.h @@ -1,5 +1,5 @@ /* - * Copyright 2021-2023 Robert Tari <robert@tari.in> + * Copyright 2021-2025 Robert Tari <robert@tari.in> * * 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 @@ -48,7 +48,7 @@ Keyboard* keyboard_new(); void keyboard_AddSource(Keyboard *pKeyboard); guint keyboard_GetNumLayouts(Keyboard *pKeyboard); guint keyboard_GetLayoutIndex (Keyboard *pKeyboard); -void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription); +void keyboard_GetLayout(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription, gchar **pId); void keyboard_SetLayout(Keyboard *pKeyboard, gint nLayout); G_END_DECLS diff --git a/src/service.c b/src/service.c index 31f6ca3b..f4b086cc 100644 --- a/src/service.c +++ b/src/service.c @@ -31,7 +31,7 @@ static Keyboard* (*m_fnKeyboardNew)(); static void (*m_fnKeyboardAddSource)(Keyboard *pKeyboard); static guint (*m_fnKeyboardGetNumLayouts)(Keyboard *pKeyboard); static guint (*m_fnKeyboardGetLayoutIndex)(Keyboard *pKeyboard); -static void (*m_fnKeyboardGetLayout)(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription); +static void (*m_fnKeyboardGetLayout)(Keyboard *pKeyboard, gint nLayout, gchar **pLanguage, gchar **pDescription, gchar **pId); static void (*m_fnKeyboardSetLayout)(Keyboard *pKeyboard, gint nLayout); enum @@ -121,7 +121,7 @@ static GVariant* createHeaderState(IndicatorKeyboardService *self, int nProfile) else { gchar *sLanguage; - m_fnKeyboardGetLayout(self->pPrivate->pKeyboard, -1, &sLanguage, NULL); + m_fnKeyboardGetLayout(self->pPrivate->pKeyboard, -1, &sLanguage, NULL, NULL); gchar *sIcon = g_strconcat("ayatana-indicator-keyboard-", sLanguage, NULL); g_free(sLanguage); @@ -158,7 +158,7 @@ static GMenuModel* createLayoutSection(IndicatorKeyboardService *self) { gchar *sLanguage; gchar *sDescription; - m_fnKeyboardGetLayout(self->pPrivate->pKeyboard, nLayout, &sLanguage, &sDescription); + m_fnKeyboardGetLayout(self->pPrivate->pKeyboard, nLayout, &sLanguage, &sDescription, NULL); GMenuItem *pItem = g_menu_item_new(sDescription, NULL); g_free(sDescription); g_menu_item_set_action_and_target_value(pItem, "indicator.layout", g_variant_new_byte(nLayout)); @@ -345,17 +345,27 @@ static void onDisplay (GSimpleAction *pAction, GVariant *pVariant, gpointer pDat IndicatorKeyboardService *self = INDICATOR_KEYBOARD_SERVICE (pData); guint nLayout = m_fnKeyboardGetLayoutIndex (self->pPrivate->pKeyboard); gchar *sProgram = NULL; + gchar *sArgs = NULL; + gboolean bMate = ayatana_common_utils_is_mate (); + gboolean bLomiri = ayatana_common_utils_is_lomiri (); - if (ayatana_common_utils_is_mate ()) + if (bMate) { sProgram = "matekbd-keyboard-display"; + sArgs = g_strdup_printf ("-g %i", nLayout + 1); + } + else if (bLomiri) + { + + sProgram = "tecla"; + m_fnKeyboardGetLayout (self->pPrivate->pKeyboard, -1, NULL, NULL, &sArgs); } else { sProgram = "gkbd-keyboard-display"; + sArgs = g_strdup_printf ("-g %i", nLayout + 1); } - gchar *sArgs = g_strdup_printf ("-g %i", nLayout + 1); ayatana_common_utils_execute_command_warn (sProgram, sArgs); g_free (sArgs); } |