RASPHINO'S BLOG
rasphino
Nov 14, 2018
阅读本文需要 5 分钟

Introduction

fcitx

Fcitx(/ˈfaɪtɪks/,源自“Free Chinese Input Toy for X”,又作“Flexible Context-aware Input Tool with eXtension”或“Flexible Input Method Framework”,暂无正式英文全称,中文名称为“小企鹅输入法”)是一个在 X Window 中使用的输入法框架,在源码包内包含了拼音,五笔字型以及区位、二笔的支持。可以输入 UTF-8 编码中的文字。可以在 Linux、FreeBSD 中运行。采用 GPL 授权。支持 XIM、GTK(版本2和3)和 Qt 的输入法模块。

fcitx 5!

从 2015/12/26 的第一个 commit 开始,老K 已经偷偷开发 fcitx 近 3 年了。在 2017/5/31,老K 在博文中非常低调地“发布”了 fcitx5。尽管当时的 fcitx5 非常简陋:只有拼音输入法能用、输入界面极挫、没有配置界面、没有任何命令行帮助信息…但是还是有很多愿意吃螃蟹的人来尝试。

经过又一年的开发,目前 fcitx5 已经接近完善了。基础的输入法配置界面、云拼音、模糊输入、皮肤、调整备选词数等功能一应俱全,rime 也已经支持 fcitx5。

这两天我看 #archlinux-cn 群组里有很多菊苣都开始用 fcitx5 了,我也就跟风安装了 fcitx5 尝尝鲜。下面放一个 Demo:

fcitx5 长输入 demo

(枪毙预定


安装与配置

安装

对于 archlinux 用户来说,安装 fcitx5 还是相当简单的。可以通过 AUR 编译安装,也可以添加 archlinuxcn 源,直接下载已经编译好的二进制包。

yay -S fcitx5-git fcitx5-qt5-git fcitx5-gtk-git fcitx5-chinese-addons-git

修改 ~/.config/fcitx5/profile

安装完成后,把下面的内容粘贴到 ~/.config/fcitx5/profile 中:

不要在 fcitx 运行时修改, 因为进程退出后会覆写所有配置文件

[Profile]
# CurrentGroup
CurrentGroup=Default
 
[Profile/GroupOrder]
0=Default
 
[Profile/Groups/0]
# Default Input Method
DefaultIM=pinyin
# Layout
Default Layout=us
# Group Name
Name=Default
 
[Profile/Groups/0/Items/1]
# Layout
Layout=
# Name
Name=pinyin
 
[Profile/Groups/0/Items/0]
# Layout
Layout=
# Name
Name=keyboard-us

修改环境变量

我选择直接修改 ~/.pam_environment

GTK_IM_MODULE=fcitx5
XMODIFIERS=@im=fcitx
QT_IM_MODULE=fcitx5

我并不推荐修改~/.xprofile,因为可能会导致部分程序,比如kate、telegram不能正确切换输入法。

(可选)设置 fcitx5 自动启动

fcitx5 似乎不会开机自动启动,所以需要手动运行 fcitx5。如果嫌手动运行太麻烦,我们可以通过一些 trick 让 fcitx5 自动启动。

目前我想到了两种解决办法:

  1. ~/.xprofile 文件末尾添加 fcitx5 &
  2. KDE5 的用户可以在系统设置 > 开关机 > 自启动中添加 fcitx5

Rime 输入法

Rime 输入法已经支持 fcitx5 了。如果想要使用 rime,可以这样安装:

yay -S fcitx5-rime-git

然后在配置中添加 rime 即可。

新版本的 rime 支持旧 fcitx4 的词库与配置文件,可以直接将旧文件复制到新版本的配置目录下:

cp -r ~/.config/fcitx/rime ~/.local/share/fcitx5/rime

但是我个人感觉新版本的拼音输入法已经足够好用了(逃


Foot Note


小尾巴

应该叫更新日志?

  • 写这篇博文的时候发现这套主题不支持单篇文章多 category(也就是一篇文章只能有一个分类),自己瞎琢磨半天居然修好了(笑
  • 之前因为 PWA service worker 缓存逻辑的问题,把 PWA 禁用了。昨天研究了一下也修好啦!(其实基本上是换了一个 sw.js)目前只会缓存图片外链、css等资源,不会直接缓存任何网页。