[分享] Arch Linux 下 Emacs 使用 Fcitx 输入中文的依赖关系.

最近刚刚重装了 Arch linux. (2020-08), 再一次遇到了 Emacs 中文输入的问题.

然后, 就像以前一样, 装了一堆包, 突然就好了, 但是到底 Emacs 依赖于那些包才可以确保中文输入无问题呢? 刚刚又重装了一遍, 说一下测试的结果.

前提

基本的 UI 界面还是要有的, 这里以 gnome 为例.

$: pacstrap /mnt linux linux-headers linux-firmware base base-devel nano

然后 arch-chroot, 安装 gnome 和 emacs

$: pacman -S gnome gnome-extra budgie-desktop networkmanager network-manager-applet konsole fcitx-im fcitx-sunpinyin fcitx-configtool emacs

使用 gdm 作为 display manager.

    $: systemctl enable NetworkManager
    $: systemctl enable gdm

重启后, 添加环境变量到 ~/.profile

export LANG=en_US.UTF-8
export LC_CTYPE=zh_CN.UTF-8
export LANGUAGE=en_US:en

export XMODIFIERS="@im=fcitx"
export XIM_PROGRAM=fcitx
export XIM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export QT4_IM_MODULE=fcitx
export XIM_ARGS="-d"
# 这个环境变量设定允许 terminology 使用 fcitx
export ECORE_IMF_MODULE="xim"

修复 Emacs 中文输入.

如果所有以上步骤正确, 现在你应该可以在 GTK 应用程序(例如 Firefox) 和 QT(例如: konsole) 中输入中文了.

但是很遗憾, Emacs 不行, 当你按下默认的 Ctrl + Space 快捷键时, 你只会看到 minibuffer 提示: mark is activated ...

修复 Emacs 中文输入,你需要再安装两个包, 然后重启.

$: pacman -S ttf-dejavu xorg-mkfontscale
3赞

装 gnome 估计就 400 多个包了

800 多个~ :sweat_smile:

所以确定不是这个原因导致的吗?

https://www.csslayer.info/wordpress/fcitx-dev/世纪未解之谜之-emacs-为什么要设置-lc_ctype-才能用输入法终/

应该有一定关系的,之前我没有设置 LC_CTYPE 可以使用 fcitx 在 emacs 中输入, 然后一更新 emacs glibc 后,就无法使用fcitx进行 emacs 输入,除非设置 LC_CTYPE。

更新一下:如果使用 dbus-launch emacs 也可以正常使用 fcitx

我在想 emacs-rime 后端有没有可能用 fcitx-remote

1赞

EXWM自带输入法不支持QT5,如果emacs-rime和fctix-rime统一了就太好了

有用!

ibus也能正常输入了

一直以为是Emacs的bug,原来是少装了包(我说为啥别的发行版都正常)

非常感谢楼主

另外LC_CTYPE好像在ibus是没有影响的

如果你说的是 LC_CTYPE, 真不是, 这个问题的解决办法, 很早很早就知道了, 应该没啥疑问, 虽然, 看你的文章前, 其实并不知道 why. (看了之后其实还没没太明白,哈哈)

如果说的是字体, 我觉得有点关系, 我已经给出了最小的字体方案.


UPDATE:

事实上, 我在 Arch linux 下特地做了一个测试,

  1. 我没有用 xorg server, 我用的 GNOME 3 + Wayland.
  2. 注释掉 LC_CTYPE 环境变量.
  3. Emacs 输入中文完全没问题.

下面是所有相关设置:

export LANG=en_US.UTF-8
# export LC_CTYPE=zh_CN.UTF-8
export LANGUAGE=en_US:en

export XMODIFIERS="@im=fcitx"
export XIM_PROGRAM=fcitx
export XIM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export QT4_IM_MODULE=fcitx
export XIM_ARGS="-d"
# 这个环境变量设定允许 terminology 使用 fcitx
export ECORE_IMF_MODULE="xim"
1赞

亲测 在已经有中文字体的情况下无法输入中文 安装 xorg-mkfontscale这个包即可正常输入,感谢楼主