安装配置archlinux下的tty控制台中文显示和输入
个人笔记,若有转载,请注明作者和出处。
——by realasking
上一次折腾Linux的中文环境是2013或2014年了,当时用的也是archlinux,后来转用Fedora之后,也沿用着当时配置的结果,在X环境下使用fcitx-sogoupinyin,在tty下使用zhcon和zhcon自带的双拼,这一次重装antergos之后,一直没改,直到昨天需要在tty下打开一个中文文件,才发现,随着时间的流逝,一切都会改变。
当年在tty下选择zhcon其实是不得已之下的选择,当时的fbterm字体显示非常难看,即使设置多个字体也是如此,在fbterm下启动fcitx也不够稳定,老出现一些莫名的问题,而当时的zhcon非常强壮,虽然输入法没有那么好用,却不会闹什么幺蛾子。
但是昨天,当我在zhcon下用vim打开一个中文文件时,却遇到了麻烦,表现为:文件打开后,屏幕一片黑,看不到任何内容,需要不停的滚屏,然后回翻才能看到文字,在耐着性子操作了一会儿之后,实在不能忍受之下,终于决定重新配置tty下的中文支持。
仔细的查找了一些资料,发觉问题可能是由于archlinux内核的framebuffer驱动已经不再是uvesa造成的,既然如此,似乎也只能暂时搁置zhcon了,于是决定重新安装fbterm和fcitx-fbterm。
做法是:
1-1.删除掉termcap自带的fbterm的terminfo:
sudo rm /usr/share/terminfo/f/fbterm
1-2.安装fbterm
执行
yaourt -S fbterm-git
在完成打包后不要马上按Y或N,而是执行:
cp /tmp/yaourt-tmp-realasking/PKGDEST.7Kk/fbterm-git-20150509-3-x86_64.pkg.tar.xz ./
xz -d fbterm-git-20150509-3-x86_64.pkg.tar.xz
tar -xvf fbterm-git-20150509-3-x86_64.pkg.tar
sudo cp usr/share/terminfo/f/fbterm /usr/share/terminfo/f/fbterm
sudo cp usr/bin/fbterm /usr/bin/
sudo cp usr/share/man/man1/fbterm.1.gz /usr/share/man/man1/fbterm.1.gz
sudo setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm
sudo chmod u+s /usr/bin/fbterm
这么操作是为了偷懒,不用自己到处找patch,另外也避开了yaourt报告两个包有相同文件的错误。
1-3.安装fcitx-fbterm
git clone https://github.com/fcitx/fcitx-fbterm.git
cd fctix-fbterm
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make
sudo make install
似乎一切顺利?不是的,此时进入tty,打开fbterm会发现,字体很丑,而且输入时候选栏是乱码。实际上,字体丑,可以重新定义,乱码问题,则是fcitx若使用sogou拼音则需要使用sogou的panel造成的,重新配置环境如下:
2-1.配置fbterm
vi .fbtermrc
将font-names行设置为:
font-names=Liberation Mono,Noto Sans Mono CJK SC Bold,Droid Sans Fallback
这样设置下,现在的fbterm处理英文字体会优先读取Liberation Mono,而字间距和行间距也以它的设定为准,中文则优先读取Noto Sans Mono CJK SC Bold,其他字体读取Droid Sans Fallback,虽说效果不如zhcon,但也比以前的fbterm好不少了
输入法设置为:
input-method=fcitx-fbterm
为了vim分别定义gui和256色的tty环境的colorscheme,需要设定以下行:
TERM=fbterm
2-2.配置fcitx
yaourt -R fcitx-sogoupinyin
yaourt -S fcitx-sunpinyin fcitx-cloudpinyin
干掉搜狗拼音,使用孙拼音,并启用云拼音支持
孙拼音现在支持双拼了,这是我没有想到的,以前放弃它的一个重要原因就是它在fcitx下不能支持双拼,没想到几年后,发现双拼已经能被支持了,云拼音的设置在系统设置->输入法->附加组件设置->模块->云拼音里面,有两个云拼音来源可选,一个是google,一个是百度,如果google因为上网不够可选而不可用,换成另一个就可以了。
另外,在kde面板上,可以添加一个kimpanel,以实现输入法和桌面风格的统一,不过kimpanel一直不能自定义候选字颜色算是一个小小的怨念吧。
这样设置后,在tty下启动输入法就不会再乱码了。
2-3.vim的配色
if &term =="fbterm"
set t_Co=256
colo desertEx
endif
desertEx在tty下算是一个基本能看清字的色彩方案吧。
最后,还是传统的一个小技巧,让登录个人账户的时候自动启用fbterm
3-1.登录配置
[[ $(tty) == \/dev\/tty[0-9]* ]] && fbterm && echo && exit
这样,当且仅当登录的是tty时,会自动启动fbterm,且输入exit的时候会直接退出登录,而不需要打两次exit。
然后,一切都满意了,继续干活儿。