public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Resolves: #2076596 Disable XKB engines in Plasma Wayland
@ 2026-05-31  2:07 Takao Fujiwara
  0 siblings, 0 replies; only message in thread
From: Takao Fujiwara @ 2026-05-31  2:07 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/ibus
Branch : autotool
Commit : b42011fc2a13daf091e9b9f728d4539745d566c9
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date   : 2022-04-20T20:05:24+09:00
Stats  : +248/-1 in 2 file(s)
URL    : https://src.fedoraproject.org/rpms/ibus/c/b42011fc2a13daf091e9b9f728d4539745d566c9?branch=autotool

Log:
Resolves: #2076596 Disable XKB engines in Plasma Wayland

---
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index c3ef9f9..a0b9991 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -511,3 +511,246 @@ index 48528326..6b208345 100755
 -- 
 2.34.1
 
+From b024ea8fcee6fe1a20570a6f80cc4f9f8f420706 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Wed, 20 Apr 2022 19:36:10 +0900
+Subject: [PATCH] ui/gtk3: Disable XKB engines in Plasma Wayland
+
+Currently ibus-ui-gtk3 runs the setxkbmap command internally to set
+the XKB keymaps from XKB engines but setxkbmap does not work in Wayland
+session.
+The IBus XKB engines are disabled at the moment in Plamsa Wayland
+and ibus-ui-gtk3 asks users to use systemsettings5.
+
+Will use libinput and libxkbcommon later but it would be better
+to implement IBus in Plamsa Wayland compositor.
+
+BUG=rhbz#2076596
+---
+ configure.ac        | 16 ++++++++++
+ ui/gtk3/Makefile.am | 17 ++++++++++-
+ ui/gtk3/panel.vala  | 74 +++++++++++++++++++++++++++++++++++++++++----
+ 3 files changed, 100 insertions(+), 7 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index a3cdb2da..79b9c11a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -636,6 +636,21 @@ if test x"$enable_engine" = x"yes"; then
+     enable_engine="yes (enabled, use --disable-engine to disable)"
+ fi
+ 
++# --disable-libnotify
++AC_ARG_ENABLE(libnotify,
++    AS_HELP_STRING([--disable-libnotify],
++                   [Disable to link libnotify]),
++    [enable_libnotify=$enableval],
++    [enable_libnotify=yes]
++)
++AM_CONDITIONAL([ENABLE_LIBNOTIFY], [test x"$enable_libnotify" = x"yes"])
++if test x"$enable_libnotify" = x"yes"; then
++    PKG_CHECK_MODULES(LIBNOTIFY, [
++        libnotify >= 0.7
++    ])
++    enable_libnotify="yes (enabled, use --disable-libnotify to disable)"
++fi
++
+ PKG_CHECK_MODULES(XTEST,
+     [x11 xtst],
+     [enable_xtest=yes],
+@@ -871,6 +886,7 @@ Build options:
+   No snooper regexes            "$NO_SNOOPER_APPS"
+   Panel icon                    "$IBUS_ICON_KEYBOARD"
+   Enable surrounding-text       $enable_surrounding_text
++  Enable libnotify              $enable_libnotify
+   Enable Emoji dict             $enable_emoji_dict
+   Unicode Emoji directory       $UNICODE_EMOJI_DIR
+   CLDR annotation directory     $EMOJI_ANNOTATION_DIR
+diff --git a/ui/gtk3/Makefile.am b/ui/gtk3/Makefile.am
+index ab379328..2a9cabde 100644
+--- a/ui/gtk3/Makefile.am
++++ b/ui/gtk3/Makefile.am
+@@ -3,7 +3,7 @@
+ # ibus - The Input Bus
+ #
+ # Copyright (c) 2007-2015 Peng Huang <shawn.p.huang@gmail.com>
+-# Copyright (c) 2015-2020 Takao Fujwiara <takao.fujiwara1@gmail.com>
++# Copyright (c) 2015-2022 Takao Fujwiara <takao.fujiwara1@gmail.com>
+ # Copyright (c) 2007-2020 Red Hat, Inc.
+ #
+ # This library is free software; you can redistribute it and/or
+@@ -81,6 +81,21 @@ AM_VALAFLAGS = \
+ 	--target-glib="$(VALA_TARGET_GLIB_VERSION)" \
+ 	$(NULL)
+ 
++if ENABLE_LIBNOTIFY
++AM_CFLAGS += \
++       @LIBNOTIFY_CFLAGS@ \
++       $(NULL)
++
++AM_LDADD += \
++       @LIBNOTIFY_LIBS@ \
++       $(NULL)
++
++AM_VALAFLAGS += \
++       --pkg=libnotify \
++       -D ENABLE_LIBNOTIFY \
++       $(NULL)
++endif
++
+ if ENABLE_APPINDICATOR
+ AM_VALAFLAGS += --define=INDICATOR
+ endif
+diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
+index 07ce6524..bd70d7d2 100644
+--- a/ui/gtk3/panel.vala
++++ b/ui/gtk3/panel.vala
+@@ -73,6 +73,7 @@ class Panel : IBus.PanelService {
+     private string m_icon_prop_key = "";
+     private int m_property_icon_delay_time = 500;
+     private uint m_property_icon_delay_time_id;
++    private bool m_is_wayland;
+ #if INDICATOR
+     private bool m_is_kde = is_kde();
+ #else
+@@ -93,6 +94,18 @@ class Panel : IBus.PanelService {
+ 
+         m_bus = bus;
+ 
++#if USE_GDK_WAYLAND
++        Gdk.set_allowed_backends("*");
++        var display = Gdk.DisplayManager.get().open_display(null);
++        Type instance_type = display.get_type();
++        Type wayland_type = typeof(GdkWayland.Display);
++        m_is_wayland = instance_type.is_a(wayland_type);
++        Gdk.set_allowed_backends("x11");
++#else
++        m_is_wayland = false;
++        warning("Checking Wayland is disabled");
++#endif
++
+         init_settings();
+ 
+         // init ui
+@@ -553,6 +566,11 @@ class Panel : IBus.PanelService {
+         GLib.List<IBus.EngineDesc> im_engines =
+                 get_engines_from_locale(engines);
+ 
++        if (m_is_wayland) {
++            if (xkb_engines.length() > 0)
++                xkb_engines = new GLib.List<IBus.EngineDesc>();
++        }
++
+         string[] names = {};
+         foreach (unowned IBus.EngineDesc engine in xkb_engines)
+             names += engine.get_name();
+@@ -728,6 +746,32 @@ class Panel : IBus.PanelService {
+         inited_engines_order = false;
+     }
+ 
++    private void update_version_1_5_26() {
++#if ENABLE_LIBNOTIFY
++        if (!Notify.is_initted()) {
++            Notify.init ("ibus");
++        }
++
++        var notification = new Notify.Notification(
++                _("IBus Attention"),
++                _("Layout changes do not work in Plasma Wayland. " +
++                  "Please use systemsettings5."),
++                "ibus");
++        notification.set_timeout(30 * 1000);
++        notification.set_category("hotkey");
++
++        try {
++            notification.show();
++        } catch (GLib.Error e){
++            warning (_("Layout changes do not work in Plasma Wayland. " +
++                        "Please use systemsettings5."));
++        }
++#else
++        warning (_("Layout changes do not work in Plasma Wayland. " +
++                   "Please use systemsettings5."));
++#endif
++    }
++
+     private void set_version() {
+         string prev_version = m_settings_general.get_string("version");
+         string current_version = null;
+@@ -735,6 +779,9 @@ class Panel : IBus.PanelService {
+         if (compare_versions(prev_version, "1.5.8") < 0)
+             update_version_1_5_8();
+ 
++        if (compare_versions(prev_version, "1.5.26") < 0)
++            update_version_1_5_26();
++
+         current_version = "%d.%d.%d".printf(IBus.MAJOR_VERSION,
+                                             IBus.MINOR_VERSION,
+                                             IBus.MICRO_VERSION);
+@@ -856,7 +903,7 @@ class Panel : IBus.PanelService {
+         m_icon_prop_key = "";
+ 
+         // set xkb layout
+-        if (!m_use_system_keyboard_layout)
++        if (!m_use_system_keyboard_layout && !m_is_wayland)
+             m_xkblayout.set_layout(engine);
+ 
+         set_language_from_engine(engine);
+@@ -960,17 +1007,25 @@ class Panel : IBus.PanelService {
+                                 string[]? order_names) {
+         string[]? engine_names = unowned_engine_names;
+ 
+-        if (engine_names == null || engine_names.length == 0)
+-            engine_names = {"xkb:us::eng"};
++        if (engine_names == null || engine_names.length == 0) {
++            if (m_is_wayland)
++                engine_names = {};
++            else
++                engine_names = {"xkb:us::eng"};
++        }
+ 
+         string[] names = {};
+ 
+         foreach (var name in order_names) {
++            if (m_is_wayland && name.has_prefix("xkb:"))
++                continue;
+             if (name in engine_names)
+                 names += name;
+         }
+ 
+         foreach (var name in engine_names) {
++            if (m_is_wayland && name.has_prefix("xkb:"))
++                continue;
+             if (name in names)
+                 continue;
+             names += name;
+@@ -1011,9 +1066,14 @@ class Panel : IBus.PanelService {
+ 	}
+ 
+         if (m_engines.length == 0) {
+-            m_engines = engines;
+-            switch_engine(0, true);
+-            run_preload_engines(engines, 1);
++            if (engines.length > 0) {
++                m_engines = engines;
++                switch_engine(0, true);
++                run_preload_engines(engines, 1);
++            } else {
++                m_candidate_panel.set_language(new Pango.AttrLanguage(
++                        Pango.Language.from_string(null)));
++            }
+         } else {
+             var current_engine = m_engines[0];
+             m_engines = engines;
+@@ -1478,6 +1538,8 @@ class Panel : IBus.PanelService {
+         /* Do not change the order of m_engines during running switcher. */
+         if (m_switcher.is_running())
+             return;
++        if (m_engines.length == 0)
++            return;
+ 
+         if (m_icon_type == IconType.INDICATOR) {
+             // Wait for the callback of the session bus.
+-- 
+2.34.1
+

diff --git a/ibus.spec b/ibus.spec
index 47573f5..e145dd9 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -39,7 +39,7 @@
 
 Name:           ibus
 Version:        1.5.26
-Release:        3%{?dist}
+Release:        4%{?dist}
 Summary:        Intelligent Input Bus for Linux OS
 License:        LGPLv2+
 URL:            https://github.com/ibus/%name/wiki
@@ -322,6 +322,7 @@ autoreconf -f -i -v
     --enable-install-tests \
     %{nil}
 
+make -C ui/gtk3 maintainer-clean-generic
 %make_build
 
 %install
@@ -521,6 +522,9 @@ dconf update || :
 %{_datadir}/installed-tests/ibus
 
 %changelog
+* Wed Apr 20 2022 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.26-4
+- Resolves: #2076596 Disable XKB engines in Plasma Wayland
+
 * Thu Mar 31 2022 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.26-3
 - Fix refcounting issues in IBusText & IBusProperty
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-05-31  2:07 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:07 [rpms/ibus] autotool: Resolves: #2076596 Disable XKB engines in Plasma Wayland Takao Fujiwara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox