FbTerm - 支持UTF-8中文的字符终端

我在 树莓派Raspberry Pi 400 上使用 Raspbery Pi OS(Raspbian) ,由于硬件性能有限,并且想尝试古早的终端感觉(用最低的硬件实现最大的性能),所以尝试在完全终端的环境下工作。这就需要实现基本的在终端下输入中文和显示中文能力。默认tty终端只能显示一个字节字符,不支持UTF-8,所以只能显示英文。

FbTerm终端软件 提供了采用系统 framebuffer 的终端模拟器,最关键的是,它支持UTF-8字符集,也就是能够实现CJK字符显示。这对在终端环境实现中文输入是男的的支持。假如你是系统轻量级极致追求者,甚至想获得古早Unix字符终端体验,你可以尝试使用这个软件,实现在字符终端(无X.org)平台上实现中文输入。

根据资料 小企鹅输入法fcitx 可以在FbTerm上使用。

安装

启动framebuffer

为了实现较好的字符终端体验,建议使用 framebuffer 设备

  • 创建 /etc/udev/my-rules.d/framebuffer.rules

    KERNEL=="fb0",  OWNER="huatai", MODE="0640"
    

这样用户 huatai 就能够使用 fb0 (framebuffer设备)

另一种方式是将 huatai 用户假如 video 组:

sudo gpasswd -a huatai video

备注

如果用户没有framebuffer设备权限,可能会提示错误:

can't open buffer frame device!
mmap /dev/zero: Operation not permitted
Using VESA requires root privilege
  • 设置允许使用系统快捷键资源:

    sudo setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm
    

或者使用以下命令:

sudo chmod u+s /usr/bin/fbterm

备注

如果没有允许使用系统快捷键资源,启动 fbterm 会提示错误:

[input] can't change kernel keymap table, all shortcuts will NOT work!
  • 默认启动时会自动生成 ~/.fbtermrc ,通过修订该文件可以定制一些功能,例如字体大小和快捷键,我们需要修改输入法 input-method

    input-method=fcitx-fbterm
    

设置tty登陆后自动运行FbTerm

每次登陆 tty 要输入 fbterm 显然很麻烦,可以在环境变量中设置成自动执行:

  • 修改 ~/.bashrc 添加:

    if [ “$TERM” = “linux”  ] ; then
        fbterm
    fi
    

安装fcitx输入法

最新的 fcitx5 没有提供 fbterm 支持,所以还是安装版本 fcitx-fbterm

sudo apt install fcitx fcitx-fbterm

这里安装会自动依赖安装 fcitx-pinyin fcitx-table-wubi fcitx-googlepinyin

备注

旧版本 fcitx 只需要 85MB 空间,比 fcitx5 动辄244MB安装空间要小很多

  • 配置 ~/.xinitrc~/.bashrc 或者标准环境配置文件 /etc/environment 添加:

fcitx环境变量
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
INPUT_METHOD=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus

参考