linux-安装中文输入法

上一级页面:index-wsl

前言

fcitx是Linux比较流行的输入法框架。

如果你在ubuntu2204-lts,那么更推荐fcitx5。linux-安装中文输入法-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
sudo systemctl reboot

安装fcitx

安装 fcitx 提供核心的输入框框架

安装 fcitx-frontend-all 可以覆盖所有图形界面平台支持。

安装通用的输入法码表fcitx-table* 套件

1
2
3
4
sudo apt install fcitx
# 安装输入码表
sudo apt install fcitx-table-all

安装中文输入法

根据需要安装一个或多个输入法,见Fcitx (简体中文) - ArchWiki (archlinux.org)

标准拼音输入法 包含双拼自然码等

1
2
# 标准拼音输入法 包含双拼自然码等
sudo apt install fcitx-pinyin

推荐sun拼音输入法,在输入速度和输入精度之间有较好的平衡。支持双拼

1
2
# sun拼音输入法,在输入速度和输入精度之间有较好的平衡。
sudo apt install fcitx-sunpinyin

Pasted%20image%2020220612120051.png

推荐fcitx-libpinyin,算法比 sunpinyin 先进。

1
2
# libpinyin,算法比 sunpinyin 先进。
sudo apt install fcitx-libpinyin

Pasted%20image%2020220612120029.png

Pasted%20image%2020220612115918.png

谷歌拼音,一部分人喜欢

1
2
# google拼音输入法
sudo apt install fcitx-googlepinyin

安装五笔输入法

1
2
3
4
# 五笔
sudo apt install fcitx-table-wubi-large
# 另一个五笔
sudo apt install fcitx-table-wbpy

添加插件

添加插件,提供云拼音输入的支持

1
2
3
# 可以提供云拼音输入的支持,支持 Fcitx 下的所有拼音输入法,Fcitx-rime 除外。
sudo apt install fcitx-module-cloudpinyin

设置成默认输入法

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

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

设置 Fcitx 为默认输入法:

143810_3tva_561214.png

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

1
im-config -n fcitx

配置dbus

配置Dbus

1
sudo dpkg-reconfigure dbus

重启wsl

1
sudo systemctl reboot

桌面环境下自动启动

如果您用 XDG 兼容的桌面环境,比如 KDEGNOMEXfceLXDE, 那么当您安装好 Fcitx 并重新登录后,Fcitx 应该会自动启动。如果没有的话,可以打开控制台并运行fcitx。为检验 Fcitx 是否正常运行, 打开一个程序,比如 leafpad, 按 CTRL+Space 激活 Fcitx 并试着输入几个字。

如果 Fcitx 没有随桌面环境自动启动,或者您想修改下 Fcitx 启动参数,请用桌面环境提供的自动启动工具配置,或者直接编辑用户目录~/.config/autostart/ 下的 fcitx-autostart.desktop 文件以确认自动启动是否被禁用。如果用户目录下的文件并不存在,您可以复制自动启动文件 /etc/xdg/autostart/fcitx-autostart.desktop 到用户目录:

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

如果您使用的桌面环境并不自动支持 XDG 自动启动, 或者您根本没有桌面环境,请在您使用的启动脚本里面添加 fcitx 以实现自动启动。(见下一小节,我根本就没有桌面环境,只能通过在启动脚本中添加自动启动语句来启动)

例如,你使用i3sway窗口管理器,可以在配置文件中添加exec --no-startup-id fcitx来自动启动输入法。

当 iBus 等其它输入法程序同时启动且开启了 Xim 支持时, 可能导致 Fcitx 无法启动,请确保已禁用了其它输入法程序的自动启动。

配置环境变量

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

类似于下面的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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

# 设置自启动
fcitx -d &>/dev/null
# 或者用下面自启动命令
fcitx-autostart &>/dev/null

Pasted image 20220607172247

现在重启你的系统!!

1
sudo systemctl reboot

fcitx-config-gtk3 启动输入法配置面板

运行以下命令关闭 iBus (注意应当禁用ibus-daemon,其与Fcitx功能冲突)

1
sudo killall ibus-daemon

然后关闭fcitx

1
sudo killall fcitx

因为上一节已经设置过fcitx自启动,现在重启linux

使用 fcitx-config-gtk3 命令启动输入法配置面板,添加输入法

1
fcitx-config-gtk3

运行fcitx-config-gtk3报错解决方法

有可能运行fcitx-config-gtk3,失败

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

1
rm -rf ~/.config/fcitx

重新安装fcitx-frontend-all ,并且重启系统

1
2
3
sudo apt install --reinstall fcitx 
sudo apt install --reinstall fcitx-table-all
sudo apt install --reinstall fcitx-frontend-all

现在重启你的系统!!

1
sudo systemctl reboot

配置输入法

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

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

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

更改输入法快捷键

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

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

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

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

Scroll between Input Method:输入法切换键

Pasted%20image%2020220511123520.png

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

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

启用云拼音输入

添加插件,提供云拼音输入的支持

1
2
# 可以提供云拼音输入的支持,支持 Fcitx 下的所有拼音输入法,Fcitx-rime 除外。
sudo apt install fcitx-module-cloudpinyin

安装后重启 Fcitx 即可,所选的云拼音输入结果会自动添加到当前输入法的词库中。提醒:建议在fcitx设置里面将“云拼音来源”由Google改为“百度”,Google国内访问不是很顺畅。

启用云拼音后,从云拼音获得的候选词会默认添加到候选词列表中的第二个,显示位置可以通过云拼音的设置配置。如果云拼音的结果和本地输入法给出的结果一致,云拼音后选项会和本地产生的候选项自动合并,不会产生重复的候选项。

若安装fcitx-cloudpinyin后,在配置程序里却没有看见云拼音,记得勾上“高级”复选框。这时云拼音会显示出来,再勾上云拼音。

注意: 不推荐将云拼音候选词设为第一个候选词,因为当网络情况不好,没有及时返回云拼音结果,那么云拼音结果将默认降到第二候选词的位置,于是这个过程可能会涉及到默认候选词的改变。

Pasted%20image%2020220612123438.png

命令行切换输入法工具fcitx-imlist

1
sudo apt install fcitx-imlist

vim-fcitx

如果您经常在 Vim 下使用 Fcitx, 可以安装 vim-fcitx插件。以退出插入模式时,自动关闭 Fcitx, 反之则反:

see fcitx.vim - keep and restore fcitx state when leaving/re-entering insert mode : vim online

或者在 ~/.vimrc 添加如下代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"##### auto fcitx  ###########
let g:input_toggle = 1
function! Fcitx2en()
let s:input_status = system("fcitx-remote")
if s:input_status == 2
let g:input_toggle = 1
let l:a = system("fcitx-remote -c")
endif
endfunction

function! Fcitx2zh()
let s:input_status = system("fcitx-remote")
if s:input_status != 2 && g:input_toggle == 1
let l:a = system("fcitx-remote -o")
let g:input_toggle = 0
endif
endfunction

set ttimeoutlen=150
"退出插入模式
autocmd InsertLeave * call Fcitx2en()
"进入插入模式
autocmd InsertEnter * call Fcitx2zh()
"##### auto fcitx end ######

使用方法

完成之后重启电脑就行了。

输入法的调出需要ctrl+space,切换是ctrl+shift

Ubuntu安装了xfce4桌面环境后,fcitx因为冲突,会导致系统全局快捷键失效,而且fcitx也会损坏

Ubuntu 18.04 安装了xfce4桌面环境后,fcitx因为冲突,会导致系统全局快捷键失效,而且fcitx也会损坏:

修复方法:

删除~/.config/fcitx,再运行fcitx -d命令。

1
2
sudo rm -rf ~/.config/fcitx
fcitx -d

如果出现DBus Service Already Exists的报错,重启系统

重新安装

1
2
3
4
sudo apt-get install fcitx 
sudo apt-get install fcitx-table
sudo apt-get install fcitx-table-all
sudo apt-get install fcitx-frontend-all

参考、引用、致谢

如何在 Linux 上管理字体 - 知乎 (zhihu.com)

优化中文显示 · GitBook (thoughtworks.cn)

使用X11 Forwarding在WSL 2中运行GUI程序 | ddadaal.me

(23条消息) linux 字体库配置,添加自定义字体库_Ternence_Hsu的博客-CSDN博客_font.conf

Ubuntu 16.04安装字体管理工具 - EasonJim - 博客园 (cnblogs.com)

https://linux.cn/article-4732-1-rss.html

http://www.linuxidc.com/Linux/2014-05/101191.htm

http://blog.csdn.net/tao_627/article/details/45114827

(23条消息) ubuntu server 安装相应图形化界面程序_Blithe的博客-CSDN博客

linux中文乱码问题解决 - 简书 (jianshu.com)

在Windows默认缩放比例和WSL GUI应用程序(HiDPI)上使用模糊字体 | 码农俱乐部 - Golang中国 - Go语言中文社区 (mlog.club)

如何优雅的在Windows 10上装X [Lainme’s Blog]

在 WSL 上配置輸入法 | Patrick Wu’s Space

Ubuntu安装搜狗输入法无法使用 - OSCHINA - 中文开源技术交流社区

Ubuntu 14.04 安装小企鹅输入法 Fcitx - linux_magnetic_storm - OSCHINA - 中文开源技术交流社区

(24条消息) Ubuntu 一键安装搜狗输入法!全网唯一!_Linux猿的博客-CSDN博客

(24条消息) locale的设定中LANG、LC_ALL、LANGUAGE_天下皆白_唯我独黑的博客-CSDN博客

深度学习环境配置 Windows+WSL2 - 知乎 (zhihu.com)

给 WSL 安装桌面环境 - Nekonull’s Garden