现象
今天遇到一个非常奇怪的事情,我更新完archlinux
以后发现我的fcitx5
中文输入法无法使用了。
严谨点说:
- kitty终端中可以使用。
- 其他常见程序中都无法使用。
- i3wm和 KDE桌面环境中都无法正常使用
环境
简单看一下我的环境吧:
itkey@vivobook: ~ $ neofetch [17:47:20]
-` itkey@vivobook
.o+` --------------
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: VivoBook_ASUSLaptop K3402ZA_K3402ZA 1.0
`+oooooo: Kernel: 5.15.74-1-lts
-+oooooo+: Uptime: 5 mins
`/:-:++oooo+: Packages: 1377 (pacman)
`/++++/+++++++: Shell: zsh 5.9
`/++++++++++++++: Resolution: 2880x1800, 3840x2160
`/+++ooooooooooooo/` WM: i3
./ooosssso++osssssso+` Theme: Breeze [GTK2/3]
.oossssso-````/ossssss+` Icons: breeze [GTK2/3]
-osssssso. :ssssssso. Terminal: kitty
:osssssss/ osssso+++. CPU: 12th Gen Intel i5-12500H (16) @ 4.500GHz
/ossssssss/ +ssssooo/- GPU: Intel Alder Lake-P
`/ossssso+/:- -:/+osssso+- Memory: 2237MiB / 15621MiB
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
原因分析
pambase
升级后不再读取设置在 ~/.pam_environment
的环境变量。在 ~/.pam_environment
中设置桌面环境用的环境变量的用户请注意,pambase >=20221020-1
之后取消了 user_readenv=1
参数,不再读取设置在 ~/.pam_environment
中的环境变量。可以考虑在 /etc/environment
设置系统全局的环境变量或者采用其它方案。
另请注意 /etc/environment
的语法格式和 ~/.pam_environment
并不相同,不能直接复制文件内容。细节请参阅 https://wiki.archlinux.org/title/Environment_variables_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#%E4%BD%BF%E7%94%A8_pam_env
关于其余设置环境变量的方案也可参考 https://wiki.archlinux.org/title/Environment_variables_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
fcitx5 相关的环境变量还可参考 https://wiki.archlinux.org/title/Fcitx5_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#%E9%9B%86%E6%88%90
检测方法
echo $INPUT_METHOD
可以先执行以上命令,正确的返回值是fcitx5
解决办法
pambase
升级后不再读取设置在 ~/.pam_environment
的环境变量。
我把配置放到~/.xprofile
可以生效。内容如下:
export INPUT_METHOD=fcitx5
export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5
然后重启电脑,问题解决。
当然也可以配置在/etc/environment
内容如下:
INPUT_METHOD=fcitx5
GTK_IM_MODULE=fcitx5
QT_IM_MODULE=fcitx5
XMODIFIERS=@im=fcitx5
以下内容可忽略。。。
折腾过程
本节只做记录,可以不看。
i3wm和 KDE桌面环境各种切换测试,配置文件也多方面调整,因为kitty终端
中是可以正常使用的。
我的kitty启动命令与别的程序有点特殊
env GLFW_IM_MODULE=ibus kitty
我用同样的方法启动别的程序也无法正常使用。各种无效的尝试,这里就不叙述了。
反正我最终准备放弃fcitx5
了,准备使用IBus
。
卸载
大致的命令如下:
pacman -R fcitx5-chinese-addons
pacman -R libime
pacman -R fcitx5-im
安装
pacman -S fcitx5 fcitx5-chinese-addons fcitx5-im fcitx5-configtool --noconfirm
总结
真的好无语,真的好无语。为了这个输入法浪费了我两个小时啊。