看到一个2020年的镜像问题:debian 10.4 testing无法调出中文输入法。
我原本是正常使用debian 12 stable,后来因为换装了 intel arc a380 显卡,所以升级到了 debian testing, 一切正常使用。前几天又换装了固态硬盘,所以重装系统。这次也是先装了 debian 12.7 + kde (英文版,这时没有安装任何输入法), 然后在命令行模式下升到了testing,然后也顺利进入了 kde,这时再安装中文输入法,就出现问题了,即使切换到中文,但是也没办法输入任何中文(不出现候选框),而且重启系统后,输入法丢失,必须用fcitx5-configtool重装加回来,但是也没解决调出输入法的问题。
感觉和这个关系不大。而是和内核有关。testing好像是6.9的内核。今天又在qemu虚拟机试了一下,先装stable 12.7, 内核6.1,然后backports 安装内核,内核变成了6.10, 然后 wayland kde 中 fcitx5 输入法丢失,这时在设置里虚拟键盘加入一下,问题解决(重启也没有丢失的问题),但是 x11 kde中每次启动还是输入法丢失,只能手动 fcitx5 & .
问题更新,使用 testing 源将系统全面更新后(这时内核6.11,比backport还要新一点),fcitx5在kde x11和kde wayland中还是无法使用。卸载后安装fcitx, 在wayland中选字框无法跟随,在x11中没有太大问题(个别如kitty中无法输入)。然后再换ibus,在kde x11 和 kde wayland都可以使用,但是wayland中明显选字框有延迟。
大都督黄石:
感觉和这个关系不大
这个是哪个?
你不要问了问题又不听别人在说什么——这样你还不如一开始就不要问。
我明天在虚拟机里把这个问题复现一下,贴出来fcitx5-diagnose结果给你看。上次我看了好像没问题。
fctix5仍是在debian testing 的 wayland/x11 下都无法使用。使用 ibus 和 老版 fcitx 也存在这样那样的问题。网上相关信息也少。下面是 fcitx5-diagnose, 请看一下问题出在哪里,谢谢:
系统信息:
uname -a
:
Linux localhost 6.12.6-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.6-1 (2024-12-21) x86_64 GNU/Linux
lsb_release -a
:
Distributor ID: Debian
Description: Debian GNU/Linux trixie/sid
Release: n/a
Codename: trixie
lsb_release -d
:
Description: Debian GNU/Linux trixie/sid
/etc/lsb-release
:
DISTRIB_ID=Kylin
DISTRIB_RELEASE=V10
DISTRIB_CODENAME=kylin
DISTRIB_DESCRIPTION="Kylin V10 SP1"
DISTRIB_KYLIN_RELEASE=V10
DISTRIB_VERSION_TYPE=enterprise
DISTRIB_VERSION_MODE=normal
/etc/os-release
:
PRETTY_NAME="Debian GNU/Linux trixie/sid"
NAME="Debian GNU/Linux"
VERSION_CODENAME=trixie
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
桌面环境:
桌面环境为 kde
。
XDG 会话类型:
XDG_SESSION_TYPE='wayland'
Bash 版本:
BASH_VERSION='5.2.37(1)-release'
环境:
DISPLAY:
DISPLAY=':1'
WAYLAND_DISPLAY='wayland-0'
键盘布局:
setxkbmap
:
WARNING: Running setxkbmap against an Xwayland server
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
xprop
:
_XKB_RULES_NAMES(STRING) = "evdev", "pc105", "us", "", ""
Locale:
全部可用 locale:
C
C.utf8
en_US.utf8
POSIX
zh_CN.utf8
当前 locale:
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
目录:
主目录:
/home/zhao
${XDG_CONFIG_HOME}
:
环境变量 XDG_CONFIG_HOME
没有设定。
XDG_CONFIG_HOME
的当前值是 ~/.config
(/home/zhao/.config
)。
Fcitx5 设置目录:
当前 fcitx5 设置目录是 ~/.config/fcitx5
(/home/zhao/.config/fcitx5
)。
当前用户:
脚本作为 zhao (1000) 运行。
Fcitx 状态:
可执行文件:
在 /usr/bin/fcitx5
找到了 fcitx5。
版本:
Fcitx 版本: 5.1.11
进程:
找到了 1 个 fcitx5 进程:
2448 fcitx5
fcitx5-remote
:
fcitx5-remote
工作正常。
DBus 界面:
使用 dbus-send
来检查 dbus。
DBus 名称 org.fcitx.Fcitx5
的所有者是 :1.69
。
DBus 名称 org.fcitx.Fcitx5
的 PID 所有者是 2448
。
来自 dbus 的调试信息:
Group [wayland:] has 3 InputContext(s)
IC [a6ea5d59b95e4dd09c669b6a47fbc651] program:xfce4-terminal frontend:wayland cap:100000072 focus:1
IC [4880908ae0f4473d99a5ab4ee03fb3a5] program:firefox-esr frontend:wayland cap:72 focus:0
IC [08633143e0a74d72bcb24ca82f700801] program: frontend:wayland cap:100000072 focus:0
Group [x11::1] has 0 InputContext(s)
Input Context without group
Fcitx 配置界面:
配置工具封装:
在 /usr/bin/fcitx5-configtool
找到了 fcitx5-configtool。
Qt 的配置界面:
在 /usr/bin/fcitx5-config-qt
找到了 fcitx5-config-qt
。
KDE 的配置界面:
kcmshell5
未找到.
前端设置:
此脚本检查的环境变量仅能显示当前命令行的环境。仍有可能您的环境并没有应用于整个桌面。您可以通过使用命令对某个无法正常工作的进程使用命令 xargs -0 -L1 /proc/$PID/environ
检查此进程的实际的环境变量。
Xim:
${XMODIFIERS}
:
XMODIFIERS 没有设置
请使用您发行版提供的工具将环境变量 XMODIFIERS 设为 “@im=fcitx” 或者将 export XMODIFIERS=@im=fcitx
添加到您的 ~/.xprofile
中。参见 输入法相关的环境变量:XMODIFIERS 。
从环境变量中获取的 Xim 服务名称为 fcitx.
根窗口上的 XIM_SERVERS:
Xim 服务的名称与环境变量中设置的相同。
Qt:
qt4 - ${QT4_IM_MODULE}
:
请使用您发行版提供的工具将环境变量 QT_IM_MODULE 设为 “fcitx” 或者将 export QT_IM_MODULE=fcitx
添加到您的 ~/.xprofile
中。参见 输入法相关的环境变量:QT_IM_MODULE 。
fcitx5-qt4-immodule-probing
未找到.
qt5 - ${QT_IM_MODULE}
:
请使用您发行版提供的工具将环境变量 QT_IM_MODULE 设为 “fcitx” 或者将 export QT_IM_MODULE=fcitx
添加到您的 ~/.xprofile
中。参见 输入法相关的环境变量:QT_IM_MODULE 。
如果您的混成器完全支持 qt5 使用的 text-input 协议,您也可以使用 qt5 内置的 Wayland 模块。
使用 fcitx5-qt5-immodule-probing 来检查在当前环境下将被实际使用的输入法模块:
QT_QPA_PLATFORM=wayland
QT_IM_MODULE=
IM_MODULE_CLASSNAME=QtWaylandClient::QWaylandInputContext
qt6 - ${QT_IM_MODULE}
:
请使用您发行版提供的工具将环境变量 QT_IM_MODULE 设为 “fcitx” 或者将 export QT_IM_MODULE=fcitx
添加到您的 ~/.xprofile
中。参见 输入法相关的环境变量:QT_IM_MODULE 。
如果您的混成器完全支持 qt6 使用的 text-input 协议,您也可以使用 qt6 内置的 Wayland 模块。
使用 fcitx5-qt6-immodule-probing 来检查在当前环境下将被实际使用的输入法模块:
QT_QPA_PLATFORM=wayland
QT_IM_MODULE=
IM_MODULE_CLASSNAME=QtWaylandClient::QWaylandInputContext
Qt 输入法模块文件:
找到了 fcitx5 qt5 模块:/usr/lib/x86_64-linux-gnu/fcitx5/qt5/libfcitx-quickphrase-editor5.so
。
找到了 fcitx5 qt6 模块:/usr/lib/x86_64-linux-gnu/fcitx5/qt6/libfcitx-quickphrase-editor5.so
。
找到了 fcitx5 的 qt5 输入法模块:/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so
。
找到了 fcitx5 的 qt6 输入法模块:/usr/lib/x86_64-linux-gnu/qt6/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so
。
找到了未知的 fcitx qt 模块:/usr/lib/x86_64-linux-gnu/qt6/plugins/plasma/kcms/systemsettings/kcm_fcitx5.so
。
下列错误也许并不准确,因为对路径所对应的 Qt 版本的猜测取决于发行版如何打包 Qt。如果您不使用任何对应版本的 Qt 程序,或者在 Wayland 下使用 Qt 的 text-input 支持,下列错误也不是严重问题。
无法找到 Qt4 的 fcitx5 输入法模块。
Gtk:
gtk - ${GTK_IM_MODULE}
:
请使用您发行版提供的工具将环境变量 GTK_IM_MODULE 设为 “fcitx” 或者将 export GTK_IM_MODULE=fcitx
添加到您的 ~/.xprofile
中。参见 输入法相关的环境变量:GTK_IM_MODULE 。
如果您的混成器完全支持 gtk 使用的 text-input 协议,您也可以使用 gtk 内置的 Wayland 模块。
fcitx5-gtk2-immodule-probing
未找到.
使用 fcitx5-gtk3-immodule-probing 来检查在当前环境下将被实际使用的输入法模块:
GTK_IM_MODULE=wayland
使用 fcitx5-gtk4-immodule-probing 来检查在当前环境下将被实际使用的输入法模块:
GTK_IM_MODULE=wayland
gtk-query-immodules
:
gtk 2:
无法找到 gtk 2 的 gtk-query-immodules
。
无法找到 gtk 2 的 fcitx5 输入法模块。
gtk 3:
无法找到 gtk 3 的 gtk-query-immodules
。
无法找到 gtk 3 的 fcitx5 输入法模块。
Gtk 输入法模块缓存:
gtk 2:
在 /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules.cache
找到了 gtk 2.24.33
的输入法模块缓存。
版本行:
# Created by /usr/lib/x86_64-linux-gnu/libgtk2.0-0t64/gtk-query-immodules-2.0 from gtk+-2.24.33
无法输入法模块缓存 /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules.cache
中找到 fcitx5
无法在缓存中找到 gtk 2 的 fcitx5 输入法模块。
gtk 3:
在 /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache
找到了 gtk 3.24.43
的输入法模块缓存。
版本行:
# Created by /usr/lib/x86_64-linux-gnu/libgtk-3-0t64/gtk-query-immodules-3.0 from gtk+-3.24.43
已找到 gtk 3.24.43
的 fcitx5 输入法模块。
"/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-fcitx5.so"
"fcitx" "Fcitx5 (Flexible Input Method Framework5)" "fcitx5" "/usr/locale" "ja:ko:zh:*"
"fcitx5" "Fcitx5 (Flexible Input Method Framework5)" "fcitx5" "/usr/locale" "ja:ko:zh:*"
Gtk 输入法模块文件:
gtk 2:
找到的全部 Gtk 2 输入法模块文件均存在。
gtk 3:
找到的全部 Gtk 3 输入法模块文件均存在。
gtk 4:
找到的全部 Gtk 4 输入法模块文件均存在。
配置:
Fcitx 插件:
插件配置文件目录:
找到了 fcitx5 的插件配置目录:/usr/share/fcitx5/addon
。
插件列表:
找到了 21 个已启用的插件:
Classic User Interface 5.1.11
Clipboard 5.1.11
DBus 5.1.11
DBus Frontend 5.1.11
Emoji 5.1.11
Fcitx4 Frontend 5.1.11
IBus Frontend 5.1.11
Input method selector 5.1.11
Keyboard 5.1.11
KDE Input Method Panel 5.1.11
Status Notifier 5.1.11
Notification 5.1.11
Quick Phrase 5.1.11
Rime 5.1.9
Spell 5.1.11
Unicode 5.1.11
DBus Virtual Keyboard 5.1.11
Wayland 5.1.11
Wayland Input method frontend 5.1.11
XCB 5.1.11
X Input Method Frontend 5.1.11
找到了 0 个被禁用的插件:
插件库:
所有插件所需的库都被找到。
用户界面:
找到了 3 个已启用的用户界面插件:
Classic User Interface
KDE Input Method Panel
DBus Virtual Keyboard
输入法:
/home/zhao/.config/fcitx5/profile
:
/home/zhao/.config/fcitx5/profile
未找到.
日志:
date
:
2025年 01月 06日 星期一 10:10:42 HKT
/home/zhao/.config/fcitx5/crash.log
:
/home/zhao/.config/fcitx5/crash.log
未找到.
警告:fcitx5-diagnose 的输出可能包含敏感信息,包括发行版名称,内核版本,正在运行的程序名称等。
尽管这些信息对于开发者诊断问题有帮助,请在公开发送到在线网站前检查并且根据需要移除的对应信息。
那能激活输入法吗(看托盘图标,会变吗)?什么叫作「输入法丢失」?
为什么会没有这个文件啊……
我这里的输入法丢失的意思是使用键盘快捷键可以使得右下脚panel 输入法的地方显示出来RIME的图标,但是在任何窗口中敲击按键(kate, gedit, konsole, mousepad, chrome, firefox) 中没有出现候选框,F4也不出现 rime 的方案选择。
另外,profile没有这个文件的问题我也发现了,我从虚拟机中把这个文件拷贝出来复制到同样的地方,也未能解决问题。
还有,我目前无法复现这个问题。我用虚拟机qemu原来安装的debian12.7镜像升到了testing, 然后fcitx5输入法一切正常,但是实体机就是这样。两者安装的区别在于,虚拟机安装12.7使用kde桌面默认进去,顺手安装了fcitx5,然后再升testing. 而实体机因为是intel arc a380显示,安装了12.7和kde桌面后,因为内核不支持显卡,无法进入桌面,所以在命令行下升到了testing, 然后这时再安装 fcitx5. 我现在准备用同样的步骤再复现一下。
大都督黄石:
但是在任何窗口中敲击按键(kate, gedit, konsole, mousepad, chrome, firefox) 中没有出现候选框
我在想,是不是只是 RIME 出问题?你安装 fcitx5-chinese-addons 并使用它里边的输入法试试看?
这个文件应当会自动生成的。
没那么复杂。首先,你要运行一下im-config,也就是点击一下“输入法”那个app,设置默认输入法是fcitx5.然后重启就好了。