arch linux中文环境

在 arch linux 中,我使用 archlinux Sway图形桌面 桌面,并且使用 小企鹅输入法fcitx 结合 Linux中文显示 来完成工作环境:

中文显示

字符集支持UTF-8
# set locale
echo "en_US.UTF-8 UTF-8" | sudo tee /etc/locale.gen
sudo locale-gen

# set /etc/locale.conf
localectl set-locale LANG=en_US.UTF-8
  • 安装文泉驿中文字体:

arch linux安装文泉驿中文字体
pacman -S wqy-microhei

中文输入法

  • 安装 小企鹅输入法fcitx + 中文addons (依赖安装 fcitx5-qt ,所以安装软件非常大,有321MB):

arch linux安装fcitx5和chinese-addons
pacmsn -S fcitx5 fcitx5-chinese-addons
  • (可选,如果在x86平台) 使用 小企鹅输入法fcitx + Rime引擎: (ArchLinux没有提供ARM版本Rime,只有x86版本):

arch linux安装fcitx5和rime输入引擎
pacmsn -S fcitx5 fcitx5-rime

配置中文输入法

  • 启用fcitx的输入需要配置环境变量,标准方式是修改 /etc/environment (通用于各种 Shell Atlas ),添加以下配置

启用fcitx5环境变量配置 /etc/environment
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
INPUT_METHOD=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
复制sway个人配置
mkdir -p ~/.config/sway
cp /etc/sway/config ~/.config/sway/
  • 在个人配置定制文件 ~/.config/sway/config 中添加一行:

在 ~/.config/sway/config 中添加运行 fcitx5 的配置
#以下两种方法可能都行
#exec_always fcitx5 -d --replace
exec_always --no-startup-id  fcitx5 -d
  • 安装fcitx5-configtool:

    pacman -S fcitx5-configtool
    

备注

非必须,我觉得只要做好依次配置调整,将配置文件保存备用就可以了。配置文件是 .config/fcitx5 目录下文件

配置

  • 执行 fcitx5-configtool 配置,有可能报错: 找不到 waylandxcb 的QT插件,这是因为QT程序需要:

    • 安装 qt5-wayland

    • 设置 /etc/environment

      QT_QPA_PLATFORM=wayland
      

使用

  • 使用 qterminal 较为方便,fcitx5对于QT5输入支持很完美,所以在sway环境使用qterminal输入中文还是很顺利的

  • chromium依然没有解决中文输入,所以还是如 运行sway窗口管理器 一样使用firefox来支持中文输入。 但是这次遇到奇怪问题,就是fcitx5的候选字不显示

  • 需要安装 fcitx5-gtk 才能在firefox中使用fcitx5输入法时候显示”候选字符”,否则看不到候选字词就只能盲打输入中文

alacritty

alacritty 虽然非常轻量级并且速度很快,但是fcitx5中文输入时无法显示选词,只能盲打输入中文 - 中文显示和输入是支持的,就是无法选词非常懊恼。

备注

Fcitx5 and Terminal 讨论了终端支持的配置,其中提到 sway 不支持选词框(除非程序在Xwayland中显示选词框)。QT应用不支持Wayland text-input-v3协议,所以需要使用DBus(设置 QT_IM_MODULE=fcitx5 )。类似chromium也不使用text-input-v3。

参考 alacritty无法使用输入法问题 提供了解决思路,就是将alacritty执行命令修订成:

env WINIT_UNIX_BACKEND=x11 alacritty

这样渲染后端改为x11就行切换出中文输入法

此时提示:

thread 'main' panicked at 'Failed to initialize X11 backend: XOpenDisplayFailed', /build/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.27.4/src/platform_impl/linux/mod.rs:684:26
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

我没有近一步实践,而是改为使用 qterminal

chrome

我一直没有解决chrome中文输入问题,不过参考 Fcitx Wayland(Sway) Support #292 说明:

  • chrome在sway(wayland)不能输入中文的bug和fcitx5无关,是由于chrome在ozone wayland平台不支持gtk im模块导致的: Issue 1183262: Add support for gtk im module on ozone wayland platform

  • 参考 无法在Chrome(Wayland)中使用fcitx5 #263 提供的workroudn方法:

    • 系统安装 gtk4 ,然后运行 chrome/chromium 时使用参数 --gtk-version=4

      chromium -enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4
      
    • 不过我尝试没有成功 由于可以使用firefox作为主力浏览器,需求不高,我暂时放弃尝试

    • 有提示chrome安装kimpanel扩展,然后就能够在Gnome环境输入(感觉这个可能可以,但未尝试)

参考