前言
自使用arch以来,一直在用urxvt, 它简洁,轻量,但不可否认的有问题,比如中文输入模式长时间时会无法输入中文,配置麻烦, 需要在启动脚本配置.xresource
这里要记一下自己的urxvt的配置以做备份
使用urxvt的主要功能
urxvt 非常简洁的tab功能,支持多路复用以及右键菜单格式化字符串,而且支持假透明,非常轻量。
urxvt不够现代化,不是开箱即用的,需要如下修改:
- tab功能需要修改perl的包,因为默认情况下不支持切换tab
- 不支持icon, 需要在配置文件手动指定icon的位置
- tab功能需要额外启动参数,所以顺便编一个desktop启动文件
perl修改
复制/usr/lib/perl/ext/tabbed到用户目录~/.urxvt/ext/, 修改tab_key_press
函数如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| sub tab_key_press { my ($self, $tab, $event, $keysym, $str) = @_;
if ($event->{state} & urxvt::ShiftMask && !($event->{state} & urxvt::ControlMask) ) { if ($keysym == 0xff51 || $keysym == 0xff53) { my ($idx) = grep $self->{tabs}[$_] == $tab, 0 .. $#{ $self->{tabs} };
--$idx if $keysym == 0xff51; ++$idx if $keysym == 0xff53;
$self->make_current ($self->{tabs}[$idx % @{ $self->{tabs}}]);
return 1; } elsif ($keysym == 0xff54) { $self->new_tab;
return 1; } }elsif ($event->{state} & urxvt::ControlMask && $event->{state} & urxvt::ShiftMask) { if ($keysym == 0xff51 || $keysym == 0xff53) { my ($idx1) = grep $self->{tabs}[$_] == $tab, 0 .. $#{ $self->{tabs} }; my $idx2 = ($idx1 + ($keysym == 0xff51 ? -1 : +1)) % @{ $self->{tabs} };
($self->{tabs}[$idx1], $self->{tabs}[$idx2]) = ($self->{tabs}[$idx2], $self->{tabs}[$idx1]);
$self->make_current ($self->{tabs}[$idx2]);
return 1; } }
() }
|
urxvt 启动文件
创建启动文件,使其默认为tab模式 ‘.local/share/applications/urxvtq.desktop’
1 2 3 4 5 6 7 8 9
| [Desktop Entry] Version=1.0 Name=urxvtq Comment=An unicode capable rxvt clone Exec=urxvt -pe tabbed Icon=utilities-terminal Terminal=false Type=Application Categories=System;TerminalEmulator;
|
urxvt 配置
创建如下的文件,并要在合适的启动脚本里添加一行[ -f "$HOME/.Xresources" ] && xrdb -merge "$HOME/.Xresources"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| !!$HOME/.Xresources
!! dbi Xft.dpi:98
/* Couleurs Tango */
!! 下划线色 URxvt.colorUL: #87afd7 URxvt.colorBD: white URxvt.colorIT: green
!! tab 配色 URxvt.tabbed.tabbar-fg: 2 URxvt.tabbed.tabbar-bg: 0 URxvt.tabbed.tab-fg: 3 URxvt.tabbed.tab-bg: 2 URxvt.tabbed.tabren-bg: 3 URxvt.tabbed.tabdiv-fg: 8 URxvt.tabbed.tabsel-fg: 1 URxvt.tabbed.tabsel-bg: 8
!! fake transparent URxvt.transparent: true URxvt.shading: 10 URxvt.fading: 40 !! font URxvt.font: xft:Monospace,xft:Awesome:pixelsize=14 URxvt.boldfont: xft:Monospace,xft:Awesome:style=Bold:pixelsize=16
!! scroll behavior URxvt.scrollBar: false URxvt.scrollTtyOutput: false URxvt.scrollWithBuffer: true URxvt.scrollTtyKeypress: true
!! addtional URxvt.internalBorder: 0 URxvt.cursorBlink: true URxvt.saveLines: 2000 URxvt.mouseWheelScrollPage: false
! Restore Ctrl+Shift+(c|v) URxvt.keysym.Shift-Control-V: eval:paste_clipboard URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard URxvt.iso14755: false URxvt.iso14755_52: false
! alt+s 搜索 URxvt.perl-ext: default,matcher,searchable-scrollback URxvt.keysym.M-s: searchable-scrollback:start
! url match 问题是tab模式下不支持跳转浏览器 URxvt.url-launcher: /usr/bin/firefox URxvt.matcher.button: 1
URxvt.termName: xterm-256color URxvt.iconFile: /usr/share/icons/gnome/32x32/apps/gnome-terminal-icon.png ! fast key URxvt.keysym.Control-Up: \033[1;5A URxvt.keysym.Control-Down: \033[1;5B URxvt.keysym.Control-Left: \033[1;5D URxvt.keysym.Control-Right: \033[1;5C
|
最后
用了kitty就不会有输入法的问题,字体也很丰富, 推荐现代化模拟终端kitty