rxvt-unicode/技巧和提示
在 Openbox 中改进类似 Kuake 的行为
这最初是由 Xyne 在论坛上发布的 [1],它依赖于 xdotool 软件包。
小脚本
将来自 urxvtc
手册页的这个小脚本保存到您系统上的某个位置,命名为 urxvtc
(例如,在 ~/.config/openbox/
中)
#!/bin/sh urxvtc "$@" if [ $? -eq 2 ]; then urxvtd -q -o -f urxvtc "$@" fi
并将这个另存为 urxvtq
#!/bin/bash wid=$(xdotool search --classname urxvtq | head -1) if [ -z "$wid" ]; then ''/path/to/urxvtc'' -name urxvtq -geometry 80x28 wid=$(xdotool search --classname urxvtq | head -1) xdotool windowfocus "$wid" xdotool key Control_L+l else if [ -z "$(xdotool search --onlyvisible --classname urxvtq 2>/dev/null)" ]; then xdotool windowmap "$wid" xdotool windowfocus "$wid" else xdotool windowunmap "$wid" fi fi
使这两个文件都可执行。
确保您将 /path/to/urxvtc
更改为您上面保存的 urxvtc
小脚本的实际路径。我们将使用 urxvtc
来启动 urxvt
的常规实例和类似 kuake 的实例。
带有标签页的 urxvtq
要激活标签页支持,您可以替换 urxvtq
的第五行
/path/to/urxvtc -name urxvtq -geometry 80x28
为
/path/to/urxvtc -name urxvtq -pe tabbed -geometry 80x28
或替换您的 ~/.Xresources
文件中的这一行
URxvt.perl-ext-common: default,matcher
为
URxvt.perl-ext-common: default,matcher,tabbed
标签页控制
按键 | 描述 |
---|---|
Shift+左 | 切换到当前标签页左侧的标签页 |
Shift+右 | 切换到当前标签页右侧的标签页 |
Shift+下 | 创建新标签页 |
您也可以使用鼠标通过单击所需的标签页来切换标签页,并通过单击 [NEW]
创建新标签页。
要关闭标签页,只需像正常关闭终端一样输入 exit
即可。
Openbox 配置
现在将以下行添加到 ~/.config/openbox/rc.xml
的 <applications>
部分
<application name="urxvtq"> <decor>no</decor> <position force="yes"> <x>center</x> <y>0</y> </position> <desktop>all</desktop> <layer>above</layer> <skip_pager>yes</skip_pager> <skip_taskbar>yes</skip_taskbar> <maximized>Horizontal</maximized> </application>
并将这些行添加到 <keyboard>
部分
<keybind key="W-t"> <action name="Execute"> <command>/path/to/urxvtc</command> </action> </keybind> <keybind key="W-grave"> <action name="Execute"> <execute>/path/to/urxvtq</execute> </action> </keybind>
在这里您也需要更改 /path/to/*
行以指向您上面保存的脚本。保存文件,然后重新配置 Openbox。您现在应该能够使用 Super+T
启动 urxvt 的常规实例,并使用 Super+`
(重音符键,也称为反引号)切换类似 kuake 的控制台。
进一步配置
此配置优于 urxvt kuake Perl 脚本的优势在于 Openbox 提供了更多的按键绑定选项,例如修饰键。kuake 脚本劫持了整个物理按键,而忽略了任何修饰符组合。查看 Openbox 绑定文档 以获取全部可能性。
Openbox 应用程序特定设置 可用于进一步配置类似 kuake 的控制台的行为(例如,屏幕位置、图层等)。您可能需要更改 urxvtq
小脚本中的 “geometry” 参数以调整控制台的高度。
相关脚本
- hbekel 发布了
urxvtq
的通用版本 这里,它可以用于使用 xdotool 切换任何应用程序。 - http://www.jukie.net/~bart/blog/20070503013555 - 一个使用键盘而不是鼠标通过 urxvt 打开 URL 的脚本。
提升性能
- 避免使用 Xft 字体。如果必须使用 Xft 字体,请在设置值后附加
:antialias=false
。[2] - 构建 rxvt-unicode 时禁用不必要的功能支持,特别是
--disable-xft
和--disable-unicode3
。[3] - 限制回滚缓冲区中
saveLines
的数量(选项-sl
)以减少内存使用。[4]- 使用 tmux 进行回滚缓冲区并将 saveLines 设置为 0
- 禁用 perl
- 考虑运行
urxvtd
作为守护进程,接受来自urxvtc
客户端的连接。
守护进程-客户端
Xinitrc
请参阅 urxvtd(1) 中的示例部分。这是首选选项。
systemd
系统服务
/etc/systemd/system/urxvtd@.service
[Unit] Description=RXVT-Unicode Daemon [Service] User=%i ExecStart=/usr/bin/urxvtd -q -o [Install] WantedBy=multi-user.target
在启动服务时传递用户名
urxvtd@username.service
对于 systemd/User 服务,将以下单元文件放置在 ~/.config/systemd/user
中
urxvtd.service
[Unit] Description=Urxvt Terminal Daemon Requires=urxvtd.socket [Service] ExecStart=/usr/bin/urxvtd -o -q Environment=RXVT_SOCKET=%t/urxvtd-%H [Install] Also=urxvtd.socket WantedBy=MyTarget.target
urxvtd.socket
[Unit] Description=urxvt daemon (socket activation) Documentation=man:urxvtd(1) man:urxvt(1) [Socket] ListenStream=%t/urxvtd-%H [Install] WantedBy=sockets.target
高级标签页管理
安装 urxvt-tabbedexAUR 软件包,然后将 tabbedex
值添加到 URxvt.perl-ext-common
X 资源 中,位于您的 ~/.Xresources
中
URxvt.perl-ext-common: ...,tabbedex,...
tabbed
Perl 扩展,并且为 URxvt.perl-ext-common
X 资源定义了 tabbed
值,请先删除 tabbed
值,以避免与 tabbedex
冲突。默认情况下,tabbedex 禁用了“[NEW]”按钮(很少使用且只能用鼠标使用)。您可以通过将 new-button
设置为 true 来重新启用此功能。
URxvt.tabbedex.new-button: true
可以使用 Shift+上
命名标签页(Enter
确认,Escape
取消)。
当只有一个标签页存在时,标签栏将被隐藏。如果您希望始终显示标签栏
URxvt.tabbedex.autohide: false
要防止最后一个标签页关闭 Urxvt,请启用以下资源
URxvt.tabbedex.reopen-on-close: yes
要启动新标签页或循环浏览标签页,请使用以下用户命令:tabbedex:(new|next|prev)_tab
。映射示例
URxvt.keysym.Control-t: perl:tabbedex:new_tab URxvt.keysym.Control-Tab: perl:tabbedex:next_tab URxvt.keysym.Control-Shift-Tab: perl:tabbedex:prev_tab
要定义您自己的按键绑定以重命名标签页或将标签页向右或向左移动,请使用以下命令:tabbedex:move_tab_(left|right)
和 tabbedex:rename_tab
。映射示例
URxvt.keysym.Control-Shift-Left: perl:tabbedex:move_tab_left URxvt.keysym.Control-Shift-Right: perl:tabbedex:move_tab_right URxvt.keysym.Control-Shift-R: perl:tabbedex:rename_tab
no-tabbedex-keys
URxvt.tabbedex.no-tabbedex-keys: true
透明度
真透明
要使用真透明,您需要使用支持合成的 窗口管理器 或单独的合成器。
从命令行
$ urxvt -depth 32 -bg rgba:3f00/3f00/3f00/dddd
使用配置文件
~/.Xresources
URxvt.depth: 32 URxvt.background: rgba:1111/1111/1111/dddd
或
~/.Xresources
URxvt.depth: 32 URxvt.background: [95]#000000
其中 ‘95’ 是不透明度级别(百分比),‘#000000’ 是背景颜色。
要使用颜色,例如 #302351,使用 rgba:rrrr/gggg/bbbb/aaaa 语法,它将是 rgba:3000/2300/5100/ee00。“ee00”(alpha 值)使其具有良好的透明度。
URxvt.depth
将变为 URxvt*depth
。原生透明
如果不需要真透明,或者合成占用系统资源过多,您可以通过以下方式使透明度工作
~/.Xresources
! Xresources file URxvt*inheritPixmap: true URxvt*transparent: true ! URxvt*shading: 0 to 99 darkens, 101 to 200 lightens URxvt*shading: 110
使用上面示例的 URxvt*background 设置代替 URxvt*shading 也可以工作。
URxvt.tintColor
,请避免使用 shading。请改用不同的 tintColor
。设置图标
默认情况下,URxvt 不具有任务栏图标。但是,可以通过将以下行添加到 ~/.Xresources
并指向所需的图标来轻松更改此设置
URxvt.iconFile: /usr/share/icons/Clarity/scalable/apps/terminal.svg
将 urxvt 用作应用程序启动器
urxvt 可以用作应用程序启动器的轻量级替代方案,例如 gmrun。使用以下配置运行 urxvt 以模仿应用程序启动器的外观和行为,或将该命令分配给自定义别名
$ urxvt -geometry 80x3 -name 'bashrun' -e sh -c "/bin/bash -i -t"
Xterm 转义序列
rxvt-unicode 可以模仿 Xterm 转义序列。可以通过在 xterm 中运行 cat -v
找到任意按键组合的转义序列,然后在 urxvt 中使用 keysyms 进行绑定。
以单词移动绑定为例
~/.Xresources
!Xterm escapes, word by word movement URxvt.keysym.Control-Left: \033[1;5D URxvt.keysym.Control-Right: \033[1;5C
有关更多信息,请参阅 ascii(7) 和 urxvt(1) 手册页的 keysym 部分。
双向支持
可以使用 bidi 扩展为希伯来语、波斯语或阿拉伯语等语言添加双向支持。
响铃命令
可以在终端响铃时执行 shell 命令。预先打包的 bell-command
扩展需要首先在 ~/.Xresources
文件中启用
URxvt.perl-ext-common: ...,bell-command,...
以下示例将使用 ALSA 的 aplay
命令播放 .wav
文件
URxvt.bell-command: aplay /path/to/a/file.wav
以下示例将使用 libcanberra 的 canberra-gtk-play
命令播放当前声音主题的响铃声音
URxvt.bell-command: canberra-gtk-play -i bell
下一个设置将弹出视觉通知
URxvt.bell-command: notify-send "rxvt-unicode: bell!"
bell-command
选项不会使计算机中的蜂鸣器静音,要执行此操作,请查看 PC 扬声器 文章。类似 Xterm 的颜色
urxvt 使用与 Xterm 相同的颜色,但有一个例外。将 URxvt.color12: rgb:5c/5c/ff
添加到 ~/.Xresources
以更改此设置。
以另一个窗口的当前工作目录启动 rxvt-unicode
有三种可能性可以 “从这里” 启动 rxvt-unicode:某种 shell 脚本、Perl 扩展 和 xcwd。
xcwd
安装 xcwdAUR 或 xcwd-gitAUR,请参阅 README 以获取更多信息。
i3 示例设置
~/.config/i3/config
bindsym $mod+KP_Enter exec urxvt --chdir "`xcwd`"