iovxw

我也! 用上 fcitx5 了

已然开发两年半了

新 fcitx 很棒, 棒到甚至可以干掉 ibus 的服务然后直接使用 ibus 的 im module

虽然目前没有配置界面也没有文档, 不过我们不需要!

来上个图:

screenshot


至于安装, 其实按照 肥猫的博客里讲的 来就好了

此文完 本来应该是这样

然而我现在用的是 Deepin, 所以需要自己编译, 并且中途还有几个小坑

源码

挨个 clone

注意这也是编译的推荐顺序

依赖

按照 CMakeLists.txt 缺哪个装哪个, 下面是大概的列表, 不保证全, 其他 debian 系应该也没差

build-essential cmake extra-cmake-modules libxcb1-dev libxcb-keysyms1-dev libxcb-util0-dev libdbus-1-dev libevent-dev uuid-dev gettext libsystemd-dev libxkbfile-dev libxkbcommon-x11-dev libxcb-xkb-dev libxcb1-dev libpango1.0-dev libpangocairo-1.0-0 libenchant-dev libxcb-ewmh-dev libxcb-xinerama0-dev libxcb-icccm4-dev libxcb-ewmh-dev wayland-protocols libboost-dev libcurl4-gnutls-dev libopencc-dev libqt5webengine5-dev libqt5webchannel5-dev qt4-qmake libqt4-dev qtbase5-dev libboost-iostreams-dev gobject-introspection libgirepository1.0-dev libgtk2.0-dev libgtk-3-dev

源里的 libfmt3-dev 不带 cmake 文件, cmake 找不到, 得自己编译安装

编译

mkdir build && cd $_ && cmake .. && make -j`nproc` && sudo make install

编译那几个依赖 Qt5 的项目的时候可能会报错, 因为最低 Qt 版本要求是 5.7, Deepin 的是 5.6

比如找不到合适的 QAction 构造器, 是因为 5.7 新加了默认值, 手动把默认值填上就行了

diff --git a/qt5/widgetsaddons/fcitxqtkeysequencewidget.cpp b/qt5/widgetsaddons/fcitxqtkeysequencewidget.cpp
index a774282..a6d8b78 100644
--- a/qt5/widgetsaddons/fcitxqtkeysequencewidget.cpp
+++ b/qt5/widgetsaddons/fcitxqtkeysequencewidget.cpp
@@ -143,7 +143,7 @@ void FcitxQtKeySequenceWidgetPrivate::init() {
     clearButton_ = new QToolButton(q);
     layout_->addWidget(clearButton_);
 
-    keyCodeModeAction_ = new QAction(_("Key code mode"));
+    keyCodeModeAction_ = new QAction(_("Key code mode"), nullptr);
     keyCodeModeAction_->setCheckable(true);
     keyCodeModeAction_->setEnabled(isX11LikePlatform());
     q->setContextMenuPolicy(Qt::ActionsContextMenu);

还有找不到 qOverload, 也是自己声明个就行, 实现在:

https://github.com/qt/qtbase/blob/5.7/src/corelib/global/qglobal.h#L1041-L1086

配置

~/.config/fcitx5/profile 写上以下内容, 如果不写靠默认配置是不会有拼音输入法可以用的

配置格式在未来版本可能会变, 自己照着改改吧

[Groups/0]
# Group Name
Name=默认
# Layout
Default Layout=us
# Default Input Method
DefaultIM=pinyin

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

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

[GroupOrder]
0=默认

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

环境变量

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

启动

终端运行 fcitx5, 看看有没有错误

自动运行

~/.config/autostart/ 建个 fcitx5.desktop, 填上

[Desktop Entry]
Name=Fcitx5
GenericName=Fcitx5 Input Method
Comment=Start Fcitx5
Exec=fcitx5
Icon=fcitx
Terminal=false
Type=Application
Categories=System;Utility;
StartupNotify=false
X-GNOME-Autostart-Phase=Applications
X-GNOME-AutoRestart=false
X-GNOME-Autostart-Notify=false
X-KDE-autostart-after=panel
X-KDE-StartupNotify=false
X-GNOME-Autostart-enabled=true

关闭云拼音

默认用的是 Google 的云拼音, 也可以切换到 Baidu 的, 但我不用

关闭的快捷键是 Control+Alt+Shift+C, 参见 这里

也可以修改 ~/.config/fcitx5/conf/pinyin.conf

# Enable Cloud Pinyin
CloudPinyinEnabled=False

其他

默认界面的配置文件在 ~/.config/fcitx5/conf/classicui.conf

如果遇到多屏幕字体大小不一致的情况, 设置

PerScreenDPI=False

因为 fcitx5 会自动计算每个屏幕的物理 DPI 大小然后进行缩放


最后我移植了个主题, 有兴趣的话可以试试:

https://github.com/iovxw/fcitx5-simple-theme

screenshot screenshot