linux-安装中文输入法-Fcitx5

上一级页面:index-wsl

前言

Fcitx5 是继 Fcitx 后的新一代输入法框架。

Fcitx5 现在已经很成熟了,特别是有友好的官方WIKI,非常建议跟着它配置,见Fcitx5 (简体中文) - ArchWiki (archlinux.org)

卸载fcitx4

其安装过程见linux-安装中文输入法

按所提到的包顺序卸载

1
2
3
4
5
6
sudo apt remove fcitx
# 安装输入码表
sudo apt remove fcitx-table
sudo apt remove fcitx-table-all
# 为GTK Qt 提供了输入法模块
sudo apt remove fcitx-frontend-all
1
sudo apt remove fcitx-modules

然后见liunx如何卸载安装的软件

清理旧的配置文件

删除 ~/.config/fcitx/ 文件夹

1
2
rm -rf ~/.config/fcitx
rm -rf ~/.config/fcitx5

设置中文语言-更换中文字体

wsl2设置中文语言-更换中文字体-进行中文优化

安装dbus,生成dbus机器码(machine-id)

"machine ID"通常在系统安装或首次启动时从一个随机数源生成, 并且之后无论经过多少次开关机,也一直保持不变。

ubuntu与ui交互需要D-Bus,一般不用安装dbus,ubuntu自带这个包,

1
2
sudo apt install dbus dbus-x11
sudo apt-mark auto dbus dbus-x11

生成dbus机器码(machine-id)

1
sudo systemd-machine-id-setup

环境预备工作

首先需要确保LC_ALL/LC_CTYPE等变量的设置,见linux-修改系统默认语言为中文

输入法环境变量需要配置到全局用户可用,并且shell和非shell环境可用

那么应当放入到/etc/environment(bash的环境变量配置文件)或者/etc/zsh/zshenv(zsh的环境变量配置文件中)

为了让wsl端和windows正常通信,还需要暴露出dbus session:具体做法如下

  1. 首先在 wsl 端安装输入法和 dbus,

  2. 然后用 dbus-launch 启动一个 dbus session,并且让 x server 和输入法同时得到 DBUS_SESSION_BUS_ADDRESS,这样输入法才能正常使用,脚本如下:

1
2
3
4
# 设置DBUS_SESSION_BUS_ADDRESS
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
eval `dbus-launch --sh-syntax`
fi

最终配置见:wsl2-x11-环境变量配置

Pasted image 20220607172304

现在重启你的系统!!

1
wsl --shutdown

安装Fcitx5

按照WIKI的说法进行安装,安装Fcitx5 - Fcitx (fcitx-im.org)

fcitx5-im 包组提供了 fcitx5 本体、#配置工具、和必要的 #输入法模块 。

为了方便起见,建议直接安装 fcitx5-im 和 #输入法引擎

中文输入法引擎 fcitx5-chinese-addons 包含了大量中文输入方式:拼音、双拼、五笔拼音、自然码、仓颉、冰蟾全息、二笔等

安装

1
2
3
sudo apt install fcitx5
# 下面这些会随着fcitx5自动安装
# fcitx5-frontend-qt5 fcitx5-frontend-gtk3

安装中文输入法引擎

1
sudo apt install fcitx5-chinese-addons

可选安装,为过时的或者还为成为主流的应用程序提供后端支持

1
2
3
4
# qt2后端,为qt2程序提供输入支持
sudo apt install fcitx5-frontend-gtk2
sudo apt install fcitx5-frontend-gtk4
sudo apt install fcitx5-frontend-qt6

安装其他输入法

除了下载的fcitx5-chinese-addons,Fcitx5还有其他输入法Fcitx5 (简体中文) - ArchWiki (archlinux.org)

配置环境变量

如果你使用bash,修改/etc/environment(bash的环境变量配置文件),添加全局的环境变量

如果你使用WSL,应当在一个nologin 全用户生效的配置文件下进行配置

1
sudo vim /etc/environment

如果你使用zsh,有类似的profile文件,见zsh的环境变量的加载-zprofile-zlogin-zshrc-zshenv

1
sudo vim /etc/zsh/zshenv

最终配置见:wsl2-x11-环境变量配置

类似于下面的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# gtk 输入法
export GTK_IM_MODULE=fcitx
# qt 输入法
export QT_IM_MODULE=fcitx
# x11输入法
export XMODIFIERS=@im=fcitx
# wayland输入法
export INPUT_METHOD=fcitx
# 使用特定版本 SDL2 库的游戏
export SDL_IM_MODULE=fcitx
# 让 kitty 启用输入法支持
export GLFW_IM_MODULE=ibus


如果使用 en_US.UTF-8 时,遇到 GTK2 无法激活 fcitx5,可专门为该 GTK2 应用程序设置输入法为 xim,如

1
GTK_IM_MODULE=xim your_gtk2_application

请勿将GTK_IM_MODULE全局设置为 xim,因为它也会影响 GTK3 程序。XIM 有各种问题(比如输入法重启之后再无法输入),尽可能不要使用。

注意:

  • SDL_IM_MODULE 是为了让一些使用特定版本 SDL2 库的游戏,比如 Dota2 能正常使用输入法。
  • GLFW_IM_MODULE 是为了让 kitty 启用输入法支持。此环境变量的值只能为 ibus。

设置成默认输入法

运行 im-config ,默认输入法设置

1
sudo apt install -y im-config
1
im-config

设置 Fcitx5 为默认输入法:

Pasted%20image%2020220612160946.png

若图形界面模糊,使用命令设置也可以,如下:

1
im-config -n fcitx5

重新配置dbus

配置Dbus

1
sudo dpkg-reconfigure dbus

重启wsl

1
wsl --shutdown

配置

配置工具

fcitx5 的配置文件位于 ~/.config/fcitx5,尽管您可以使用文本编辑器编辑配置文件,但是使用 GUI 配置显然更方便。安装 fcitx5-configtool 软件包。

配置工具:fcitx5-configtool(Ubuntu 21.04及以上版本可用)

安装完 Fcitx5 之后建议卸载其他的 Fcitx 和 ibus 框架,重启Linux,退出Fcitx

如果是20.04,自己创建一个 profile 文件 (无后缀名) 复制到 ~/.cofig/Fcitx5, 文件内容可以参考原文以修改:

配置文件见文末

配置输入法

1
fcitx5-configtool

列表第一项将作为「未激活」状态使用,请将此项设为键盘布局输入法,比如「(键盘 - 英文)」,第一项后面的输入法都是活动输入法。。

警告: 请必须将键盘布局输入法设为列表中第一项, 否则可能会无法禁用中文输入。

有一个only show current lanaguage的选择,记得取消选择,然后搜索输入法,添加进来。

设置输入模式为双拼,

Pasted%20image%2020220613083809.png

启用小鹤双拼,并且启用预测和云拼音

Pasted%20image%2020220613083832.png

Pasted%20image%2020220613083900.png

更改输入法快捷键

在_全局配置_中, 触发输入法快捷键仅在未激活输入法最后一个活动输入法之间切换。

切换输入法 快捷键默认仅在不同的活动输入法间切换,但是在高级设置中可以将非激活输入法加入切换选择。

切换输入法快捷键需要按顺序按下,例如 ALT_SHIFT 仅在先按 alt 再按 shift 后生效。

Trigger Input Method:切换激活/非激活

Scroll between Input Method:输入法切换键

Pasted%20image%2020220613083751.png

在任意GUI應用用 Trigger Input 設定的快捷鍵啟用輸入法,

用 Scroll between Input Method 的快捷鍵切換輸入法,效果如下:

主题和外观

主题

仓库内的主题数量有限,如果需要更多主题,可以去 GitHub 发现更多主题。

然后前往 Fcitx5设置 -> 配置附加组件 -> 经典用户界面 -> 主题 设置主题。

注意: 如果您在 GNOME 环境下使用了 gnome-shell-extension-kimpanel-gitAUR,那么主题设置对于 Fcitx5 不起作用。3(https://yanqiyu.info/2020/11/06/fcitx5-fedora-updated/#60d50c0a87a8c64ae965e403)

设置单行模式

在拼音输入法(或者 Rime 输入法)的设置中,启用“ 在程序中显示预编辑文本 ”即可启用单行模式

词库

对于 Fcitx5 的中文输入法, 目前在仓库里提供了数个词库:

具体见Fcitx5 (简体中文) - ArchWiki (archlinux.org)

下载萌娘词库Releases · outloudvi/mw2fcitx (github.com)

其安装说明见outloudvi/mw2fcitx at v1 (github.com)

下载wiki词库Releases · felixonmars/fcitx5-pinyin-zhwiki (github.com)

其安装说明见felixonmars/fcitx5-pinyin-zhwiki: Fcitx 5 Pinyin Dictionary from zh.wikipedia.org (github.com)

下载搜狗词库CHN-beta/sougou-dict (github.com)

1
2
cd ~/src
git clone git@github.com:CHN-beta/sougou-dict.git
1
2
3
cd sougou-dict

sudo cp -r dict /usr/share/fcitx5/pinyin/dictionaries/sougou-dict

下载-cedict词库:从 cedict辞典 导出的词库。

Releases · cathaysia/fcitx5_dicts (github.com)

1
2
cd ~/src
wget https://github.com/cathaysia/fcitx5_dicts/releases/download/v0.0.2/chinese-frequency-word-list.dict
1
sudo cp chinese-frequency-word-list.dict /usr/share/fcitx5/pinyin/dictionaries

配置开机自启动

开机启动(有桌面环境的话)

注意:

  • 如果您使用的桌面环境是兼容 XDG 的(例如 KDEGNOMEXfceLXDE等),则 无需 此步骤。
  • 如果使用i3awesome等窗口管理器,需要在其脚本中添加 Fcitx5 以实现自启动。例如,如果您使用 i3 或 sway ,可以在配置文件中添加exec --no-startup-id fcitx5 -d
  • 如果使用dwm,则需要添加 autostart 补丁。在 ~/.dwm/autostart.sh 中添加fcitx5 -d

想要 fcitx5 随桌面环境开机自启,执行

1
$ cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/

如果您使用的桌面环境并不自动支持 XDG 自动启动, 或者您根本没有桌面环境,

请在您使用的启动脚本里面添加 fcitx5 -d 以实现自动启动。(见下一小节,我根本就没有桌面环境,只能通过在启动脚本中添加自动启动语句来启动)

如何查看使用的桌面环境是否自动支持 XDG 自动启动?

  1. 目录下有文件
    1
    ll /etc/xdg
  2. 有桌面环境,比如gnome,且会启动桌面环境,然后运行其他应用程序

就说明支持 XDG 自动启动

XDG Autostart 规范定义了一种通过将其放置在特定#目录中来在桌面环境启动和可移动介质安装中自动启动普通桌面配置项的方法。

就是说,XDG Autostart在设计规范上就是为桌面环境设计的,你得有一个桌面环境,才能够正常使用。

XDG Autostart (简体中文) - ArchWiki (archlinux.org)

如果没有桌面环境,可以通过配置环境变量来启动fcitx5

通过环境变量配置自启动(没有桌面环境的话)

添加到zprofile

1
sudo vim /etc/zsh/zprofile

内容如下

1
fcitx5 -d --keep &>/dev/null &

输入法测试

安装一个gvim

1
sudo apt install vim-gtk3

启动gvim

1
gvim

按ctrl+空格切换输入法

故障处理

诊断问题

当你遇到任何 Fcitx 5 有关的问题,比如 Ctrl+Space 快捷键在有的程序中不能工作,首先应该用 fcitx5-diagnose 命令诊断问题的原因。 fcitx5-diagnose 会列出所有 Fcitx 5 正常运行所需的前提条件,从输出结果中通常可以找到问题的原因。

部分应用中 Fcitx 5 的单行默认无效

  1. 如果是 Firefox 等 gtk 应用中单行模式不生效,请安装 fcitx5-gtk

  2. 在 WPS 和 Sublime 中单行模式无效,这是 WPS 和 Sublime 自身的问题,而不是 fcitx5 的问题。4(https://github.com/fcitx/fcitx5/issues/60)

WPS 无法正常呼出输入法

请参阅 WPS Office (简体中文)#Fcitx5 无法输入中文

IntelliJ 系列软件的 IDE 中输入框位置不正确

此问题的根本原因是 IDE 附带的 JBR 不正确,要处理此问题,需要:

  1. 前往 https://github.com/RikudouPatrickstar/JetBrainsRuntime-for-Linux-x64/releases 下载 jbr 并解压到任意路径

  2. 按照 此指导 更改 IDE 的 JBR

Emoji 在候选框中无法正常显示

  1. 首先确保电脑上已经安装了带有 Emoji 的字体(例如 noto-fonts-emoji)。

  2. 将字体设置为 Noto Sans CJK SC

  3. 运行以下命令来 重启 Fcitx5

1
$ kill `ps -A | grep fcitx5 | awk '{print $1}'` && fcitx5&

网易云音乐无法调出输入法

有两种方法:

RStudio 中无法调出输入法

运行以下命令:

1
$ strings /usr/lib/rstudio/lib/libQt5Core.so.5 | grep "Qt 5"

找出 Qt 库的版本,使用该版本重新编译 fcitx5-qt 中的 libfcitx5platforminputcontextplugin.so ,再放到 /usr/lib/rstudio/plugins/platforminputcontexts/ 目录中。

如果使用的是 rstudio-desktop-binAUR ,可直接安装 rstudio-fcitx5AUR 。

在 Steam 和 Dota2 中无法使用

事实上,Fcitx5 能够在 Steam 大屏模式和 Dota2 中使用。但是需要使用 Ctrl + Space 激活输入法而不是 Ctrl + Shift 5(https://github.com/fcitx/fcitx5/issues/442)

提示和技巧

如何查看选中字体的 Unicode 编码

  • 如果你需要查看文本编辑器中选中文字的 Unicode 编码,那么直接选中文字,然后使用快捷键 ctrl + alt + shift + u 可以查看选中文字的编码

  • 如果你需要查看非编辑区域(比如本 wiki)中文字的 Unicode 编码,那么需要首先将该段文字复制到剪贴板,然后点击任意一个可编辑区域(比如搜索框),然后使用快捷键 ctrl + alt + shift + u 可以查看剪贴板中文字的编码

通过 Fcitx5 输入特殊字符

要输入特殊符号,有两种方式:

以  为例:

将光标定位到任意一个输入框内,然后按下 Ctrl + Alt + Shift + U,然后输入 circle one,您将会看到多种形式的 。alpha, beta, sigma 等同理。

在 vim 中自动切换输入法

追加代码:6(https://www.zhihu.com/question/341748857/answer/1739052604)

1
~/.vimrc
1
2
3
4
5
6
7
autocmd InsertLeave * :silent !fcitx5-remote -c " 退出插入模式时禁用输入法

autocmd BufCreate * :silent !fcitx5-remote -c " 创建 Buf 时禁用输入法

autocmd BufEnter * :silent !fcitx5-remote -c " 进入 Buf 时禁用输入法

autocmd BufLeave * :silent !fcitx5-remote -c " 离开 Buf 时禁用输入法

如果使用的是 neovim ,则追加上述代码到 ~/.config/nvim/init.vim

注意: 如果您在 vim.cmd 中添加此代码,可能需要将注释去掉

附件:配置文件

创建默认个人配置文件

1
sudo vim ~/.config/fcitx5/profile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[Groups/0]
# Group Name
Name=默认
# Layout
Default Layout=cn
# Default Input Method
DefaultIM=shuangpin

[Groups/0/Items/0]
# Name
Name=keyboard-cn
# Layout
Layout=

[Groups/0/Items/1]
# Name
Name=shuangpin
# Layout
Layout=

[GroupOrder]
0=默认
1
sudo vim ~/.config/fcitx5/config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[Hotkey]
# 反复按切换键时进行轮换
EnumerateWithTriggerKeys=True
# 轮换输入法时跳过第一个输入法
EnumerateSkipFirst=False

[Hotkey/TriggerKeys]
0=Control+space
1=Zenkaku_Hankaku
2=Hangul

[Hotkey/AltTriggerKeys]
0=Shift_L

[Hotkey/EnumerateForwardKeys]
0=Control+Shift_L

[Hotkey/EnumerateBackwardKeys]
0=Control+Shift_R

[Hotkey/EnumerateGroupForwardKeys]
0=Super+space

[Hotkey/EnumerateGroupBackwardKeys]
0=Shift+Super+space

[Hotkey/ActivateKeys]
0=Hangul_Hanja

[Hotkey/DeactivateKeys]
0=Hangul_Romaja

[Hotkey/PrevPage]
0=Up

[Hotkey/NextPage]
0=Down

[Hotkey/PrevCandidate]
0=Shift+Tab

[Hotkey/NextCandidate]
0=Tab

[Hotkey/TogglePreedit]
0=Control+Alt+P

[Behavior]
# 默认状态为激活
ActiveByDefault=False
# 共享输入状态
ShareInputState=No
# 在程序中显示预编辑文本
PreeditEnabledByDefault=True
# 切换输入法时显示输入法信息
ShowInputMethodInformation=True
# 在焦点更改时显示输入法信息
showInputMethodInformationWhenFocusIn=False
# 显示紧凑的输入法信息
CompactInputMethodInformation=True
# 显示第一个输入法的信息
ShowFirstInputMethodInformation=True
# 默认页大小
DefaultPageSize=5
# 覆盖 Xkb 选项
OverrideXkbOption=False
# 自定义 Xkb 选项
CustomXkbOption=
# Force Enabled Addons
EnabledAddons=
# Force Disabled Addons
DisabledAddons=
# Preload input method to be used by default
PreloadInputMethod=True

PageSize=9, 就是一行候选字数. 应该需要权限:

1
sudo vim  ~/.config/fcitx5/conf/pinyin.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# 双拼方案
ShuangpinProfile=Xiaohe
# 显示当前双拼模式
ShowShuangpinMode=True
# 页大小
PageSize=7
# 启用拼写检查
SpellEnabled=True
# 启用颜文字
EmojiEnabled=True
# 启用拆字
ChaiziEnabled=True
# 启用云拼音
CloudPinyinEnabled=True
# 云拼音位置
CloudPinyinIndex=2
# 在程序中显示预编辑文本
PreeditInApplication=True
# 固定嵌入预编辑文本光标在预编辑的开头
PreeditCursorPositionAtBeginning=True
# 在预编辑中显示完整拼音
PinyinInPreedit=False
# 启用预测
Prediction=True
# 预测个数
PredictionSize=5
# 选择第 2 个候选词
SecondCandidate=
# 选择第 3 个候选词
ThirdCandidate=
# 句子数量
Number of sentence=2
# 输入长于...时提示长词 (设置为 0 时禁用)
LongWordLengthLimit=4
# 快速输入的触发键
QuickPhraseKey=semicolon
# 使用 V 来触发快速输入
VAsQuickphrase=True
# FirstRun
FirstRun=False

[ForgetWord]
0=Control+7

[PrevPage]
0=minus
1=Up
2=KP_Up

[NextPage]
0=equal
1=Down
2=KP_Down

[PrevCandidate]
0=Shift+Tab

[NextCandidate]
0=Tab

[ChooseCharFromPhrase]
0=bracketleft
1=bracketright

[FilterByStroke]
0=grave

[QuickPhrase trigger]
0=www.
1=ftp.
2=http:
3=mail.
4=bbs.
5=forum.
6=https:
7=ftp:
8=telnet:
9=mailto:

[Fuzzy]
# ue -> ve
VE_UE=True
# gn -> ng
NG_GN=True
# 内模糊音节 (xian -> xi'an)
Inner=True
# 短拼音的内模糊音节 (qie -> qi'e)
InnerShort=True
# 匹配不完整的元音 (e -> en, eng, ei)
PartialFinal=True
# 输入长度大于 4 时进行部分双拼匹配
PartialSp=False
# u <-> v
V_U=False
# an <-> ang
AN_ANG=False
# en <-> eng
EN_ENG=False
# ian <-> iang
IAN_IANG=False
# in <-> ing
IN_ING=False
# u <-> ou
U_OU=False
# uan <-> uang
UAN_UANG=False
# c <-> ch
C_CH=False
# f <-> h
F_H=False
# l <-> n
L_N=False
# s <-> sh
S_SH=False
# z <-> zh
Z_ZH=False

可以更改云拼音后端为百度

1
sudo vim  ~/.config/fcitx5/conf/cloudpinyin.conf
1
2
3
4
5
6
7
8
9
# 最小拼音长度
MinimumPinyinLength=4
# 后端
Backend=GoogleCN
# 代理
Proxy=

[Toggle Key]
0=Control+Alt+Shift+C

参考、引用、致谢

如何现在就在 Ubuntu 20.04 下用上 Fcitx 5.0.2 - Plum’s Blog (plumz.me)

如何现在就在 Ubuntu 20.04 用上 Fcitx 5 - Plum’s Blog (plumz.me)

Fcitx5 : 阿瓦西罗生也 (launchpad.net)

在 Ubuntu 20.10 上使用 Fcitx 5 – Ubuntu Club

拥抱 Fcitx5 (coelacanthus.moe)