aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2025-05-15 09:39:00 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2025-05-15 09:39:00 +0200
commitd23f0fca1b03e24b84d0c146624121cfa9e88eca (patch)
tree24985fd54fb08f31767840c89c2c6f5e04fa5f5f
parent70a3ea2b263a3d9095a9c00b09e2b3086d3f55cc (diff)
parent0228ae333701838150196be8addc508a479d9612 (diff)
downloadayatana-indicator-keyboard-main.tar.gz
ayatana-indicator-keyboard-main.tar.bz2
ayatana-indicator-keyboard-main.zip
Merge branch 'tari01-pr/add-tecla'HEADmain
Attributes GH PR #77: https://github.com/AyatanaIndicators/ayatana-indicator-keyboard/pull/77
-rw-r--r--debian/control2
-rw-r--r--src/keyboard-lomiri.c9
-rw-r--r--src/keyboard-x11.c13
-rw-r--r--src/keyboard.h4
-rw-r--r--src/service.c20
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);
}