xterm配置
上一级页面:index-wsl
前言
总有情景会让你在wsl中套娃启动终端模拟器
Xterm是X系统标配的终端模拟器,如何解决它的中文显示乱码问题呢?于是,开始了对Xterm的探索之旅。
安装
apt install xterm
依赖
正常来说,首先需要安装一些中文字体,
然后,如果你的shell使用了一些主题,可能还需要安装代码字体
此外还需要解决输入法在xterm中正常使用的问题:
背景:Xresources文件
Xterm的配置文件就是Xresources,一般为~/.Xresources。Xresources支持:
- 定义终端颜色
- 配置终端首选项
- 字体设置
- Xcursor游标主题设置
- xscreensaver屏保主题
- 其他X应用首选项设置,如xclok……
过去常用/.Xdefaults这个文件来做设置,不过现在已经被废弃,现在大家更常用/.Xresources。所以,Xterm的配置也要写在~/.Xresources里面。
使用xserver登录系统时,会自动读取该文件,以加载配置。但wsl2中并不应当安装x server,只有x client端,所以还可以使用下面的命令手动应用,具体配置见wsl2-x11-环境变量配置:
xrdb ~/.Xresources #重新加载.Xresouces文件,不保留原先配置
xrdb -merge ~/.Xresources #重新加载.Xresouces文件,保留原先配置
查询配置是否应用:
xrdb -query
配置
都填写在.Xresources
文件中
- UTF-8
让Xterm将输入的数据解释为UTF-8编码: xterm*locale:true
- 修复“Alt”按键
如果你使用“Alt”作为Meta键,需要设置: xterm*metaSendsEscape:true
- 滚屏
可通过鼠标滚轮,或者触摸板边缘上下滚动,或者使用 Shift+PageUp/PageDown
来滚动。
- 字体
我们一开始面对的就是中文乱码,这个特别恼人,所以要在这里解决:
xterm*faceName: DejaVu Sans Mono:style=Book:antialias=false
xterm*faceNameDoublesize: WenQuanYi Micro Hei
xterm*faceSize: 8
上面的“DejaVu Sans Mono”和“WenQuanYi Micro Hei”都可以换成自己喜欢的字体,当然,还可以设置它们是否为粗体(Bold),或者斜体(Italic)等。
- 色彩
Xterm 默认是“白底黑字”,我们可以如下简单的设置:
xterm*foreground: rgb:b2/b2/b2
xterm*background: rgb:08/08/08
rgb说明可见cat /etc/X11/rgb.txt
- 复制与粘贴
默认情况,Xterm的选中与粘贴:鼠标高亮选中的文本,就是要复制的文本,在Xterm按下“Shift+Insert”或者按鼠标中键就可以直接粘贴。在X下,高亮选中的文本被复制到了一个叫做“PRIMARY”的缓冲区,
如果继续高亮选中其他文本,则用新高亮选中的文本来代替之前保存的文本。当然,与上面的“PRIMARY”相比,还有一种“CLIPBOARD”:使用“Ctrl+c”或“Ctrl+x”来进行文本复制和剪切,然后“Ctrl+v”进行复制,这就用到了“CLIPBOARD”。
可以使用下面设置共用这两种方式:
XTerm*VT100.translations: #override <Btn1Up>: select-end(PRIMARY, CLIPBOARD, CUT_BUFFER0)
如果我们要启用“Ctrl+v”来复制,可以结合上面设置:
xterm*VT100.Translations: #override \
<Btn1Up>: select-end(CLIPBOARD,PRIMARY,CUT_BUFFER0) \n\
Ctrl <KeyPress> V: insert-selection(CLIPBOARD,PRIMARY,CUT_BUFFER0)
最终配置
都填写在.Xresources
文件中
! font and locale
xterm.locale: true
xterm.utf8: true
xterm*utf8Title: true
xterm*fontMenu*fontdefault*Label: Default
! 斜体在最后添加`:italic`
xterm*faceName: DejaVu Sans Mono:style=Book:antialias=true
xterm*faceNameDoublesize: Noto Sans CJK SC
xterm*renderFont: true
xterm*xftAntialias: true
xterm*cjk_width: true
! 窗口设置
! 窗口大小及位置
xterm*geometry: 80x25
xterm*dynamicColors: true
xterm*saveLines: 2048
xterm*scrollKey: true
xterm*scrollTtyOutput: false
xterm*scrollBar: true
xterm*rightScrollBar: true
xterm*jumpScroll: true
xterm*multiScroll: true
xterm*toolBar: false
xterm*Scrollbar*thickness: 10
xterm*Scrollbar*background: black
xterm*Scrollbar*foreground: gray90
xterm*background: rgb:1a/1a/1a
xterm*foreground: rgb:d6/d6/d6
xterm*cursorColor: rgb:d6/d6/d6
! 提供xterm-256color类型支持
! 如果修改后,没有得到正确的结果,说明你可能需要安装ncurses-term包来提供xterm-256color类型支持
xterm*termName: xterm-256color
! 启用 Sixel 图形支持
xterm*decTerminalID: vt340
! 配置选择文本自动复制到剪贴板
! https://askubuntu.com/questions/237942/how-does-copy-paste-work-with-xterm
xterm*selectToClipboard: true
! 启用“Ctrl+v”来复制
xterm*VT100.Translations: #override \
<Btn1Up>: select-end(CLIPBOARD,PRIMARY,CUT_BUFFER0) \n\
Ctrl <KeyPress> V: insert-selection(CLIPBOARD,PRIMARY,CUT_BUFFER0)
! 解决Alt键不好使
xterm*eightBitInput: false
xterm*altSendsEscape: true
! 配置主题
! -- Tango color scheme
xterm*color0: #2e3436
xterm*color1: #cc0000
xterm*color2: #4e9a06
xterm*color3: #c4a000
xterm*color4: #3465a4
xterm*color5: #75507b
xterm*color6: #0b939b
xterm*color7: #d3d7cf
xterm*color8: #555753
xterm*color9: #ef2929
xterm*color10: #8ae234
xterm*color11: #fce94f
xterm*color12: #729fcf
xterm*color13: #ad7fa8
xterm*color14: #00f5e9
xterm*color15: #eeeeec
参考、引用、致谢
xterm配置 – McGrady的技术分享 (tracymc.cn)