fedora KDE Plasma 上安装 fcitx5 rime

现在 fcitx 已经升级到了 fcitx5, 本来用着 fcitx4 挺好,也没有想着升级,在折腾 fcitx.vim 的时候发现 fcitx 居然升级了,使得我的 vim 插件无法正常工作了,一顿折腾,本来以为很简单没想到进了个大坑 。
主要是不愿意放弃我的一万多行的 rime 用户词库,多年的积累了,不过 Linux 用户不就是老折腾吗, 唉。

fcitx5-rime 的默认的配置目录已经变为 ~/.local/share/fcitx5/rime, fcitx4 默认的配置目录是 ~/.config/fcitx/rime

安装 fcitx5 和 fcitx5 rime

1
2
sudo dnf install -y fcitx5 fcitx5-autostart fcitx5-chinese-addons fcitx5-configtool fcitx5-gtk fcitx5-qt kcm-fcitx5
sudo dnf install -y fcitx5-rime

Fedora dnf 已经默认有 fcitx5-rime 的安装包了,不用自己重新编译了,非常不错。 fcitx5-chinese-addons 为 fcitx5 自己默认带的中文输入法,这些和 rime 没有什么关系,网络上有人说, fcitx 的中文输入较以前有较大改进。fcitx5-autostart 用于自启动,不安装其实也没有什么问题。

Fcitx5 官方说明需要设置启动文件。

1
mkdir -p ~/.config/autostart && cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart

执行命令 sudo alternatives --config xinputrc ,选择 fcitx5。执行命令 im-chooser 选择 fcitx5

启动输入法很简单,自己手动执行 fcitx5 -d 即可。

设置正确的环境变量

修改 ~/.xprofile~/.zshrc~/.xinitrc~/.bash_profile/etc/profile 等文件

1
2
3
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

有的文章中说要设置成 fcitx5 但是根据 fcitx5-diagnose 正确的环境变量应该是 fcitx

environment.d 是 system.d 引入的,被  GDM 或 Plasma 5.22+ 支持,可以往 ~/.config/environment/ 目录写文件,注意不要写 export

1
2
3
4
5
6
cat << EOF > ~/.config/environment.d/00-fcitx5.conf
INPUT_METHOD=fcitx5
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
EOF

配置中文环境

1
2
3
4
sudo vim /etc/locale.conf

export LANG="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"

安装 rime 词库

rime 现在已经使用 plum 管理词库,如果需要安装双拼输入法的,可以执行下面的命令:

1
2
curl -fsSL https://git.io/rime-install | bash
rime_frontend=fcitx5-rime bash rime-install double_pinyin

rime 为了保证输入速度,词库很小,为了能够自动显示更多的词组,就需要使用拓展词库。

1
2
git clone https://github.com/rime-aca/dictionaries.git
cp dictionaries/luna_pinyin.dict/* ~/.local/share/fcitx5/rime/

安装了上面的拓展词库后,输入特殊符号的能力还是比较弱,需要把 symbols.yaml 也给加进来。

https://github.com/rime/rime-prelude 提供了我们所需要的 symbols.yaml 和 default.yaml,可以使用 東風破 安裝: rime_frontend=fcitx5-rime bash rime-install prelude

由于我们使用的是自然码双拼,需要修改的文件为 double_pinyin.custom.yaml

1
2
3
4
5
patch:
# 載入朙月拼音擴充詞庫
"translator/dictionary": luna_pinyin.extended
"punctuator/import_preset": symbols
"recognizer/patterns/punct": "^/([A-Z|a-z]*|[0-9]|10)$"

设置完成后,要重新启动输入法,比如要输入 ☆ ,输入 /xh 即可

将用户词库导入 rime

rime_dict_manager -i luna_pinyin luna_pinyin.userdb.txt

这一步很关键啊,多年的积累不能浪费了。

配置 fcitx5 皮肤

fcitx5 默认的皮肤不太好看,所以下载更新了皮肤,这款简约风格的皮肤非常符合老夫的胃口。

1
2
git clone https://github.com/thep0y/fcitx5-themes.git
cp spring ~/.local/share/fcitx5/themes -r

修改配置文件 ~/.config/fcitx5/conf/classicui.conf

1
2
3
4
5
6
7
8
9
10
11
# 垂直候选列表
Vertical Candidate List=False

# 按屏幕 DPI 使用
PerScreenDPI=True

# Font (设置成你喜欢的字体)
Font="Smartisan Compact CNS 13"

# 主题(这里要改成你想要使用的主题名,主题名就在下面)
Theme=spring

另外还有一款 fcitx5 皮肤相对流行:https://github.com/hosxy/Fcitx5-Material-Color

切换皮肤的方法是,点击鼠标右键点击 配置 -> 附加组件 -> 经典用户界面 -> 点击右边图标 -> 选择皮肤

设置 fcitx rime 单行模式

如果要将输入法设置为单行模式,需要修改配置文件 ~/.config/fcitx5/conf/rime.conf

1
PreeditInApplication=True

或者按快捷键 ctrl + alt + p, 这个快捷键可以来回切换很方便,单行还是双行就因人而异了,我个人觉得单行好点。

让 fcitx5 正确显示菜单

要做这个步骤是因为 rime 有 「部署」、「同步」这几个操作按钮,如果不正确配置的话在 fcitx5 上没法正常显示。fcitx5 在任务上有个托盘图标,点击右键就可以看到这些菜单。

要让 fcitx 正确显示菜单,关键在于让 rime 输入法默认处于激活状态,根据 fcitx5 配置的提示第一个输入法为非激活状态。

  • (1) 将第一个输入法设置为 键盘-英语 (美国),第二个输入法设置为 中州韵
  • (2) 在全局设置中,勾上默认状态为激活,共享输入状态设置为 程序

fcitx.vim

这个章节是写给 linux vim 用户看的,没有此需求的可以直接跳过这段。

vim 确实是程序编辑的利器,但是在用vim 写中文文档的时候,有一个痛点,你在用 fcitx 写中文的时候想保存文档,vim 必须切换到 normal 模式才能输入保存的命令 :w,进入normal 模式的方法是连续按两下 ESC,好了现在你应该输入命令了,但是你没法输入你现在还在打中文呢,没有办法你必须先切换到英文输入法,然后才能正确地输入 :w 痛苦啊。

fcitx.vim 就是为解决这个痛点而生的插件,个人觉得这是vim 必装的几个插件之一。fcitx.vim 的github 仓库地址为:https://github.com/lilydjwg/fcitx.vim

值得一提的是这个仓库有两个分支,fcitx4 分支 和 fcitx5 分支,使用的时候一定要分清楚,这两个分支如果使用错了,就没法正常使用 fcitx.vim 插件了。fcitx4 和 fcitx5 dbus 对象名字有变化,导致代码通用性不好。现在默认分支为 fcitx5,如果你使用 fcitx4 可能直接 git clone 下来就会发现插件用不了,我也是因为这个原因才发现 fcitx 居然更新了。

后记

可能有些人不知道为什么要折腾 rime,rime 的用户词库文件是个宝贝,这个词库是都是你真实的在日常使用中用到的词库,小巧又实用还能到处同步,上传到云后永不丢失,符合自己的数据自己掌握的硬道理。至于国内的那些输入法,我就不加以评价了,在这商业的社会要保持基本的做人底线不易。

参考资料


fedora KDE Plasma 上安装 fcitx5 rime
http://usmacd.com/cn/fcitx5-rime/
Author
henices
Posted on
July 26, 2021
Licensed under