public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Replace HEAD.patch with 2267615-wayland-init-keymap.patch
@ 2026-05-31 2:08 Takao Fujiwara
0 siblings, 0 replies; only message in thread
From: Takao Fujiwara @ 2026-05-31 2:08 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/ibus
Branch : autotool
Commit : 0be81a70692b1d34f802146521ce5b7a519a93bb
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date : 2024-03-25T16:05:42+09:00
Stats : +227/-225 in 3 file(s)
URL : https://src.fedoraproject.org/rpms/ibus/c/0be81a70692b1d34f802146521ce5b7a519a93bb?branch=autotool
Log:
Replace HEAD.patch with 2267615-wayland-init-keymap.patch
---
diff --git a/ibus-2267615-wayland-init-keymap.patch b/ibus-2267615-wayland-init-keymap.patch
new file mode 100644
index 0000000..4729ede
--- /dev/null
+++ b/ibus-2267615-wayland-init-keymap.patch
@@ -0,0 +1,225 @@
+From b6376d3a680f7f43583de7731629666b8dd85f01 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Fri, 22 Mar 2024 09:47:28 +0900
+Subject: [PATCH] ui/gtk3: Configure initial keymaps with localectl in Wayland
+
+`setxkbmap -query` returns US layout with Xwayland and it does not
+correspond to the session keymaps so ibus-panel now uses
+`localectl status` in Wayland but it does not provide the session
+XKB options against `setxkbmap` command in Xorg.
+Need to think how to load or set the XKB options in Wayland later.
+
+BUG=rhbz#2267615
+---
+ ui/gtk3/panel.vala | 2 +-
+ ui/gtk3/xkblayout.vala | 123 ++++++++++++++++++++++++++++++-----------
+ 2 files changed, 91 insertions(+), 34 deletions(-)
+
+diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
+index c7176619..3576972d 100644
+--- a/ui/gtk3/panel.vala
++++ b/ui/gtk3/panel.vala
+@@ -509,7 +509,7 @@ class Panel : IBus.PanelService {
+ string layouts;
+ string variants;
+ string option;
+- XKBLayout.get_layout(out layouts, out variants, out option);
++ m_xkblayout.get_layout(out layouts, out variants, out option);
+
+ GLib.List<IBus.EngineDesc> xkb_engines =
+ new GLib.List<IBus.EngineDesc>();
+diff --git a/ui/gtk3/xkblayout.vala b/ui/gtk3/xkblayout.vala
+index 729b48ce..7812c4bb 100644
+--- a/ui/gtk3/xkblayout.vala
++++ b/ui/gtk3/xkblayout.vala
+@@ -4,7 +4,7 @@
+ *
+ * Copyright(c) 2014 Red Hat, Inc.
+ * Copyright(c) 2014 Peng Huang <shawn.p.huang@gmail.com>
+- * Copyright(c) 2014 Takao Fujiwara <tfujiwar@redhat.com>
++ * Copyright(c) 2014-2024 Takao Fujiwara <tfujiwar@redhat.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+@@ -25,11 +25,11 @@
+ class XKBLayout
+ {
+ private const string XKB_COMMAND = "setxkbmap";
+- private const string XKB_QUERY_ARG = "-query";
+ private const string XKB_LAYOUT_ARG = "-layout";
+ private const string XMODMAP_COMMAND = "xmodmap";
+ private const string[] XMODMAP_KNOWN_FILES = {".xmodmap", ".xmodmaprc",
+ ".Xmodmap", ".Xmodmaprc"};
++ private string[] m_get_layout_args = {};
+ private string[] m_xkb_latin_layouts = {};
+ private string m_default_layout = "";
+ private string m_default_variant = "";
+@@ -39,16 +39,23 @@ class XKBLayout
+ public XKBLayout() {
+ }
+
++
+ public void set_latin_layouts(string[] xkb_latin_layouts) {
+ m_xkb_latin_layouts = xkb_latin_layouts;
+ }
+
+- public static void get_layout(out string layout,
+- out string variant,
+- out string option) {
++
++ public void get_layout(out string layout,
++ out string variant,
++ out string option) {
++ search_get_layout_program();
++ if (m_get_layout_args[0] == null) {
++ warning("Not found localectl or setxkbmap command in PATH");
++ return;
++ }
+ string[] exec_command = {};
+- exec_command += XKB_COMMAND;
+- exec_command += XKB_QUERY_ARG;
++ foreach (unowned string arg in m_get_layout_args)
++ exec_command += arg;
+ string standard_output = null;
+ string standard_error = null;
+ int exit_status = 0;
+@@ -69,46 +76,94 @@ class XKBLayout
+ } catch (GLib.SpawnError err) {
+ stderr.printf("IBUS_ERROR: %s\n", err.message);
+ }
+- if (exit_status != 0) {
++ if (exit_status != 0)
+ stderr.printf("IBUS_ERROR: %s\n", standard_error ?? "");
+- }
+- if (standard_output == null) {
++ if (standard_output == null)
+ return;
++
++ if (exec_command[0] == "localectl") {
++ parse_localectl_status_str(standard_output,
++ out layout,
++ out variant,
++ out option);
++ } else if (exec_command[0] == XKB_COMMAND) {
++ parse_xkbmap_query_str(standard_output,
++ out layout,
++ out variant,
++ out option);
+ }
++ }
++
+
++ private void search_get_layout_program() {
++ if (m_get_layout_args[0] != null)
++ return;
++ string get_layout_command = null;
++ // setxkbmap can get the session XKB options in Xorg.
++ if (BindingCommon.default_is_xdisplay())
++ get_layout_command = "setxkbmap -query";
++ else if (GLib.Environment.find_program_in_path("localectl") != null)
++ get_layout_command = "localectl status";
++ else if (GLib.Environment.find_program_in_path("setxkbmap") != null)
++ get_layout_command = "setxkbmap -query";
++ if (get_layout_command != null)
++ m_get_layout_args = get_layout_command.split(" ");
++ }
++
++
++ private void parse_localectl_status_str(string standard_output,
++ out string layout,
++ out string variant,
++ out string option) {
++ layout = "";
++ variant = "";
++ option = "";
+ foreach (string line in standard_output.split("\n")) {
+- string element = "layout:";
+- string retval = "";
+- if (line.has_prefix(element)) {
+- retval = line[element.length:line.length];
+- if (retval != null) {
+- retval = retval.strip();
++ const string[] elements = { "X11 Layout:", "X11 Variant:" };
++ foreach (unowned string element in elements) {
++ string retval = "";
++ int index = line.index_of(element);
++ if (index >= 0) {
++ retval = line[index + element.length:line.length];
++ if (retval != null)
++ retval = retval.strip();
++ if (element == elements[0])
++ layout = retval;
++ else if (element == elements[1])
++ variant = retval;
+ }
+- layout = retval;
+ }
++ }
++ }
+
+- element = "variant:";
+- retval = "";
+- if (line.has_prefix(element)) {
+- retval = line[element.length:line.length];
+- if (retval != null) {
+- retval = retval.strip();
+- }
+- variant = retval;
+- }
+
+- element = "options:";
+- retval = "";
+- if (line.has_prefix(element)) {
+- retval = line[element.length:line.length];
+- if (retval != null) {
+- retval = retval.strip();
++ private void parse_xkbmap_query_str(string standard_output,
++ out string layout,
++ out string variant,
++ out string option) {
++ layout = "";
++ variant = "";
++ option = "";
++ foreach (string line in standard_output.split("\n")) {
++ const string[] elements = { "layout:", "variant:", "options:" };
++ foreach (unowned string element in elements) {
++ string retval = "";
++ if (line.has_prefix(element)) {
++ retval = line[element.length:line.length];
++ if (retval != null)
++ retval = retval.strip();
++ if (element == elements[0])
++ layout = retval;
++ else if (element == elements[1])
++ variant = retval;
++ else if (element == elements[2])
++ option = retval;
+ }
+- option = retval;
+ }
+ }
+ }
+
++
+ public void set_layout(IBus.EngineDesc engine) {
+ string layout = engine.get_layout();
+ string variant = engine.get_layout_variant();
+@@ -206,6 +261,7 @@ class XKBLayout
+ run_xmodmap();
+ }
+
++
+ public void run_xmodmap() {
+ if (!m_use_xmodmap) {
+ return;
+@@ -246,6 +302,7 @@ class XKBLayout
+ }
+ }
+
++
+ public void set_use_xmodmap(bool use_xmodmap) {
+ m_use_xmodmap = use_xmodmap;
+ }
+--
+2.43.0
+
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
deleted file mode 100644
index 4729ede..0000000
--- a/ibus-HEAD.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-From b6376d3a680f7f43583de7731629666b8dd85f01 Mon Sep 17 00:00:00 2001
-From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 22 Mar 2024 09:47:28 +0900
-Subject: [PATCH] ui/gtk3: Configure initial keymaps with localectl in Wayland
-
-`setxkbmap -query` returns US layout with Xwayland and it does not
-correspond to the session keymaps so ibus-panel now uses
-`localectl status` in Wayland but it does not provide the session
-XKB options against `setxkbmap` command in Xorg.
-Need to think how to load or set the XKB options in Wayland later.
-
-BUG=rhbz#2267615
----
- ui/gtk3/panel.vala | 2 +-
- ui/gtk3/xkblayout.vala | 123 ++++++++++++++++++++++++++++++-----------
- 2 files changed, 91 insertions(+), 34 deletions(-)
-
-diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
-index c7176619..3576972d 100644
---- a/ui/gtk3/panel.vala
-+++ b/ui/gtk3/panel.vala
-@@ -509,7 +509,7 @@ class Panel : IBus.PanelService {
- string layouts;
- string variants;
- string option;
-- XKBLayout.get_layout(out layouts, out variants, out option);
-+ m_xkblayout.get_layout(out layouts, out variants, out option);
-
- GLib.List<IBus.EngineDesc> xkb_engines =
- new GLib.List<IBus.EngineDesc>();
-diff --git a/ui/gtk3/xkblayout.vala b/ui/gtk3/xkblayout.vala
-index 729b48ce..7812c4bb 100644
---- a/ui/gtk3/xkblayout.vala
-+++ b/ui/gtk3/xkblayout.vala
-@@ -4,7 +4,7 @@
- *
- * Copyright(c) 2014 Red Hat, Inc.
- * Copyright(c) 2014 Peng Huang <shawn.p.huang@gmail.com>
-- * Copyright(c) 2014 Takao Fujiwara <tfujiwar@redhat.com>
-+ * Copyright(c) 2014-2024 Takao Fujiwara <tfujiwar@redhat.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
-@@ -25,11 +25,11 @@
- class XKBLayout
- {
- private const string XKB_COMMAND = "setxkbmap";
-- private const string XKB_QUERY_ARG = "-query";
- private const string XKB_LAYOUT_ARG = "-layout";
- private const string XMODMAP_COMMAND = "xmodmap";
- private const string[] XMODMAP_KNOWN_FILES = {".xmodmap", ".xmodmaprc",
- ".Xmodmap", ".Xmodmaprc"};
-+ private string[] m_get_layout_args = {};
- private string[] m_xkb_latin_layouts = {};
- private string m_default_layout = "";
- private string m_default_variant = "";
-@@ -39,16 +39,23 @@ class XKBLayout
- public XKBLayout() {
- }
-
-+
- public void set_latin_layouts(string[] xkb_latin_layouts) {
- m_xkb_latin_layouts = xkb_latin_layouts;
- }
-
-- public static void get_layout(out string layout,
-- out string variant,
-- out string option) {
-+
-+ public void get_layout(out string layout,
-+ out string variant,
-+ out string option) {
-+ search_get_layout_program();
-+ if (m_get_layout_args[0] == null) {
-+ warning("Not found localectl or setxkbmap command in PATH");
-+ return;
-+ }
- string[] exec_command = {};
-- exec_command += XKB_COMMAND;
-- exec_command += XKB_QUERY_ARG;
-+ foreach (unowned string arg in m_get_layout_args)
-+ exec_command += arg;
- string standard_output = null;
- string standard_error = null;
- int exit_status = 0;
-@@ -69,46 +76,94 @@ class XKBLayout
- } catch (GLib.SpawnError err) {
- stderr.printf("IBUS_ERROR: %s\n", err.message);
- }
-- if (exit_status != 0) {
-+ if (exit_status != 0)
- stderr.printf("IBUS_ERROR: %s\n", standard_error ?? "");
-- }
-- if (standard_output == null) {
-+ if (standard_output == null)
- return;
-+
-+ if (exec_command[0] == "localectl") {
-+ parse_localectl_status_str(standard_output,
-+ out layout,
-+ out variant,
-+ out option);
-+ } else if (exec_command[0] == XKB_COMMAND) {
-+ parse_xkbmap_query_str(standard_output,
-+ out layout,
-+ out variant,
-+ out option);
- }
-+ }
-+
-
-+ private void search_get_layout_program() {
-+ if (m_get_layout_args[0] != null)
-+ return;
-+ string get_layout_command = null;
-+ // setxkbmap can get the session XKB options in Xorg.
-+ if (BindingCommon.default_is_xdisplay())
-+ get_layout_command = "setxkbmap -query";
-+ else if (GLib.Environment.find_program_in_path("localectl") != null)
-+ get_layout_command = "localectl status";
-+ else if (GLib.Environment.find_program_in_path("setxkbmap") != null)
-+ get_layout_command = "setxkbmap -query";
-+ if (get_layout_command != null)
-+ m_get_layout_args = get_layout_command.split(" ");
-+ }
-+
-+
-+ private void parse_localectl_status_str(string standard_output,
-+ out string layout,
-+ out string variant,
-+ out string option) {
-+ layout = "";
-+ variant = "";
-+ option = "";
- foreach (string line in standard_output.split("\n")) {
-- string element = "layout:";
-- string retval = "";
-- if (line.has_prefix(element)) {
-- retval = line[element.length:line.length];
-- if (retval != null) {
-- retval = retval.strip();
-+ const string[] elements = { "X11 Layout:", "X11 Variant:" };
-+ foreach (unowned string element in elements) {
-+ string retval = "";
-+ int index = line.index_of(element);
-+ if (index >= 0) {
-+ retval = line[index + element.length:line.length];
-+ if (retval != null)
-+ retval = retval.strip();
-+ if (element == elements[0])
-+ layout = retval;
-+ else if (element == elements[1])
-+ variant = retval;
- }
-- layout = retval;
- }
-+ }
-+ }
-
-- element = "variant:";
-- retval = "";
-- if (line.has_prefix(element)) {
-- retval = line[element.length:line.length];
-- if (retval != null) {
-- retval = retval.strip();
-- }
-- variant = retval;
-- }
-
-- element = "options:";
-- retval = "";
-- if (line.has_prefix(element)) {
-- retval = line[element.length:line.length];
-- if (retval != null) {
-- retval = retval.strip();
-+ private void parse_xkbmap_query_str(string standard_output,
-+ out string layout,
-+ out string variant,
-+ out string option) {
-+ layout = "";
-+ variant = "";
-+ option = "";
-+ foreach (string line in standard_output.split("\n")) {
-+ const string[] elements = { "layout:", "variant:", "options:" };
-+ foreach (unowned string element in elements) {
-+ string retval = "";
-+ if (line.has_prefix(element)) {
-+ retval = line[element.length:line.length];
-+ if (retval != null)
-+ retval = retval.strip();
-+ if (element == elements[0])
-+ layout = retval;
-+ else if (element == elements[1])
-+ variant = retval;
-+ else if (element == elements[2])
-+ option = retval;
- }
-- option = retval;
- }
- }
- }
-
-+
- public void set_layout(IBus.EngineDesc engine) {
- string layout = engine.get_layout();
- string variant = engine.get_layout_variant();
-@@ -206,6 +261,7 @@ class XKBLayout
- run_xmodmap();
- }
-
-+
- public void run_xmodmap() {
- if (!m_use_xmodmap) {
- return;
-@@ -246,6 +302,7 @@ class XKBLayout
- }
- }
-
-+
- public void set_use_xmodmap(bool use_xmodmap) {
- m_use_xmodmap = use_xmodmap;
- }
---
-2.43.0
-
diff --git a/ibus.spec b/ibus.spec
index 126a3ba..91f1e87 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -67,6 +67,8 @@ Source1: %{name}-xinput
Source2: %{name}.conf.5
# Patch0: %%{name}-HEAD.patch
Patch0: %{name}-HEAD.patch
+# #2267615
+Patch2: %{name}-2267615-wayland-init-keymap.patch
# Under testing #1349148 #1385349 #1350291 #1406699 #1432252 #1601577
Patch1: %{name}-1385349-segv-bus-proxy.patch
%if 0%{?fedora:0}%{?rhel:1}
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-05-31 2:08 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-31 2:08 [rpms/ibus] autotool: Replace HEAD.patch with 2267615-wayland-init-keymap.patch Takao Fujiwara
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox