Tumbleweed 与中文安装相关的一些小问题

这是我第一次使用 OpenSUSE Tumbleweed ,当我在运行安装媒介时,我选择去使用简体中文进行安装,在我正在进行一些配置时(如,配置磁盘分区),我遇到了中文字体缺失的问题(显示为方块字)。万幸的是在完成安装进入系统之后似乎一切都能正常工作,包括中文输入法。

然而,不幸的是,当我将默认的 nouveau 切换为 Nvidia 闭源驱动(通过 Yast)并切换到 Wayland 之后,事情开始发生了变化,而这包括输入法——我的 fcitx 输入法无法再继续正常工作,尽管我已经按照 Wiki 页面所描述的那样在 /etc/environment 中写入了指定的环境变量。而这个问题似乎并没有较好的办法解决。我也尝试了修改 .profile.xprofile 文件,而他们都不能使得 fcitx 正常工作。

这个问题最好的解决方案似乎是在安装时选择 English,而非简体中文。当我在默认使用 English 进行安装,通过 Yast 添加简体中文为第二语言(这里还存在一个小问题,即,安装进度条数字显示为负数,虽然这并未影响最终的安装过程),并通过 zypper 手动安装 fcitx5 之后,一切都正常了起来。我想这或许是 Tumbleweed 在简体中文下的正确打开方式,默认的简体中文安装程序似乎存在一定的问题。

也许设完 /etc/environment 没有重启,因为 fcitx5 设置的变量跟 fcitx 完全相同。

不幸的是我曾尝试重启多次,而这似乎都不能帮助我解决问题,但是先安装英文再装中文语言包和输入法就没有这个问题,有点令人费解

@ 一之瀬千夜

那就有点 tricky 了,我能想到的还有 LC_CTYPE=$LANG 这个变量的设置问题。

因为我记得当时写 fcitx5 的 service 的时候研究过,之前 fcitx 是往 xim.d 下面写变量的,启动时候会自动加载,换成 wayland 不会加载变量,只能通过 systemd 加载变量。我记得当时就是不好用,我特意 patch 了 systemd, sddm 和 startplasma 三个去看 LC_CTYPE 在什么阶段加载,我记得好像 systemd 阶段(即在 sddm 出来之前)是不加载的,到了 sddm 和 startplasma 才有。有个 racing 还是什么的问题。也就是说你的 fcitx 要看什么时间启动的,因为它不是 systemd 管理的,它启动的时候这个变量可能是空的还未设置。

哦对了,我还记得通过 systemd 设置的变量只在 systemd 里可用。

要抄作业的话,你可以试试装一下 systemd-inputmethod-generator,然后写一个 fcitx.service 的 systsemd user service 扔到 /usr/lib/systemd/user/fcitx.service。

[Unit]
Description=Next generation of Flexible Input Method Framework
Conflicts=ibus.service fcitx.service

[Service]
ExecStart=/usr/bin/fcitx -D

[Install]
Alias=input-method.service
WantedBy=default.target

然后 systemctl --user enable fcitx.service && systemctl --user start fcitx.service 就可以了。

1赞

https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland