1 Commits

Author SHA256 Message Date
Takashi Iwai
2c97fbc942 Add an initial setup feature for Plasma Wayland
enables IBus as the active virtual keyboard on the first login,
allowing users to input text using IBus without manual configuration

Fix boo#1084804, boo#1246423
2025-09-16 16:22:10 +02:00
4 changed files with 84 additions and 0 deletions

60
20-ibus-plasma-setup.sh Normal file
View File

@@ -0,0 +1,60 @@
#!/bin/sh
#
# If the virtual keyboard of Plasma Wayland has not been configured,
# configure it for this IM.
#
im_name="ibus"
desktop_file="/usr/share/applications/org.freedesktop.IBus.Panel.Wayland.Gtk3.desktop"
# Do nothing for X11 session
if [ "$XDG_SESSION_TYPE" != "wayland" ]; then
exit 0
fi
# Do nothing if kreadconfig6 is not available
if ! command -v kreadconfig6 >/dev/null 2>&1; then
exit 0
fi
# check current virtual keyboard
current_im=$(kreadconfig6 --file kwinrc --group Wayland --key InputMethod)
#
# initialize virtual keyboard if not configured yet
#
# check if $XDG_CONFIG_HOME/plasma_wayland_input_method_configured does not exist
config_dir="${XDG_CONFIG_HOME:-$HOME/.config}"
stamp_file="$config_dir/plasma_wayland_input_method_configured"
if [ ! -e "$stamp_file" ]; then
mkdir -p "$config_dir"
echo "$im_name" > "$stamp_file"
# check current virtual keyboard is None
if [ -z "$current_im" ]; then
# The virtual keyboard is not configured
echo "$0 is configuring the virtual keyboard for IBus."
current_im=$desktop_file
kwriteconfig6 --file kwinrc --group Wayland --key InputMethod $current_im
else
echo "$0 detected a virtual keyboard configured."
fi
fi
#
# export environment variables for applications running on Xwayland
#
if [ "$current_im" = "$desktop_file" ]; then
# do not override Qt IM module settings
if [ -z "$QT_IM_MODULE" ] && [ -z "$QT_IM_MODULES" ]; then
echo "$0 is setting QT_IM_MODULES for $im_name."
export QT_IM_MODULES="wayland;$im_name"
fi
# do not override xim settings
if [ -z "$XMODIFIERS" ]; then
echo "$0 is setting XMODIFIERS for $im_name."
export XMODIFIERS="@im=$im_name"
fi
fi

View File

@@ -1,5 +1,12 @@
#!/bin/sh
#
# Normal start process for X11 session
# Note that INPUT_METHOD is not usually set under a Wayland session.
#
# For Plasma Wayland, see also /usr/etc/xdg/plasma-workspace/env/20-ibus-plasma-setup.sh.
# To configure input method (virtual keyboard), please use KDE System Settings rather than
# INPUT_METHOD variable.
test x"$INPUT_METHOD" = x"ibus" || exit 0
# GNOME starts ibus by itself
@@ -11,6 +18,7 @@ esac
if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
case "$XDG_CURRENT_DESKTOP" in
*KDE*)
# This will update kwinrc and set IBus for the active virtual keyboard
ibus start --type=kde-wayland
exit 0;;
*)

View File

@@ -1,3 +1,11 @@
-------------------------------------------------------------------
Mon Sep 15 13:45:03 UTC 2025 - Fuminobu Takeyama <ftake@geeko.jp>
- Add an initial setup feature for Plasma Wayland
* enables IBus as the active virtual keyboard on the first login,
allowing users to input text using IBus without manual configuration
* Fix boo#1084804, boo#1246423
-------------------------------------------------------------------
Sat Jun 14 08:35:05 UTC 2025 - Takashi Iwai <tiwai@suse.com>

View File

@@ -48,6 +48,7 @@ Source7: macros.ibus
Source10: ibus-autostart
Source11: ibus-autostart.desktop
Source12: 20-defaults-openSUSE.conf
Source13: 20-ibus-plasma-setup.sh
Source99: baselibs.conf
# PATFH-FIX-OPENSUSE ibus-xim-fix-re-focus-after-lock.patch bnc#874869 tiwai@suse.de
# Fix lost XIM input after screenlock
@@ -286,6 +287,9 @@ install -c -m 0644 ibus-autostart.desktop %{buildroot}%{_sysconfdir}/xdg/autosta
mkdir -p %{buildroot}%{_userunitdir}/org.freedesktop.IBus.session.generic.service.d
install -c -m 0644 %{SOURCE12} %{buildroot}%{_userunitdir}/org.freedesktop.IBus.session.generic.service.d
# setup script for Plasma
install -D -m 0755 %{SOURCE13} %{buildroot}%{_distconfdir}/xdg/plasma-workspace/env/20-ibus-plasma-setup.sh
PRIORITY=40
pushd %{buildroot}%{_distconfdir}/X11/xim.d/
for lang in am ar as bn el fa gu he hi hr ja ka kk kn ko lo ml my \
@@ -360,6 +364,7 @@ rm -rf %{buildroot}%{_libdir}/libibus*
rm -rf %{buildroot}%{_libdir}/pkgconfig
rm -rf %{buildroot}%{_prefix}/lib/systemd
rm -rf %{buildroot}%{_sysconfdir}/xdg
rm -rf %{buildroot}%{_distconfdir}/xdg
%post -n %{_name}-gtk4
%{gtk4_immodule_post}
@@ -418,6 +423,9 @@ fi
%config %{_sysconfdir}/dconf/db/ibus.d/00-upstream-settings
%config %{_sysconfdir}/dconf/profile/ibus
%config %{_sysconfdir}/xdg/autostart/ibus-autostart.desktop
%dir %{_distconfdir}/xdg/plasma-workspace
%dir %{_distconfdir}/xdg/plasma-workspace/env
%{_distconfdir}/xdg/plasma-workspace/env/20-ibus-plasma-setup.sh
%{_mandir}/man1/ibus.1%{ext_man}
%{_mandir}/man1/ibus-daemon.1%{ext_man}
%{_mandir}/man1/ibus-setup.1%{ext_man}