Ratpoison

来自 ArchWiki

此文章或章节需要语言、wiki 语法或风格改进。请参阅 Help:Style 作为参考。

原因:风格不佳,内容重复 (在 Talk:Ratpoison 中讨论)

Ratpoison 是一个用 C 语言编写的平铺窗口管理器,它允许用户在没有鼠标的情况下管理应用程序。其用户界面灵感来源于 GNU Screen

默认情况下,ratpoison 的控制方式与 Emacs 非常相似。命令以按下 Ctrl+t 开始,然后是另一个组合键,例如 Ctrl+Space 来移动到下一个窗口。

安装

安装 ratpoisonAUR 软件包。

使用 ratpoison

X11 启动后,您将看到一个黑屏,屏幕右上角会有一个小文本框,上面写着“Welcome to Ratpoison”。现在输入 Ctrl+t,然后输入 ? 以获取快捷键绑定列表。如果您习惯了 GNU screen,您很快就会感到宾至如归。

您可以在 ~/.ratpoisonrc 中定义自定义击键,甚至覆盖现有的击键。

示例

~/.ratpoisonrc
# Overriding CTRL+t 'c' to start aterm instead of xterm
bind c exec aterm

bind f exec firefox

因此,如果您输入 Ctrl+t,然后输入 f,ratpoison 将启动 Firefox。

Ctrl+t 是默认的转义键,用于触发 ratpoison 命令的键。要将转义键的映射更改为 Windows 键,请在您的 ~/.ratpoisonrc 中使用以下行:

~/.ratpoisonrc
# Setting the escape key to the Windows key
escape Super_L

这是另一个 ~/.ratpoisonrc

~/.ratpoisonrc
exec xsetroot -cursor_name left_ptr
startup_message off
escape C-z

# Make a screenshot
alias sshot exec import -window root ~/screenshot-$(date +%F).jpg
definekey top M-C-Print sshot

#virtual desks
gnewbg one
gnewbg two

definekey top M-l exec ratpoison -c "select -" -c "gprev" -c "next"
definekey top M-h exec ratpoison -c "select -" -c "gnext" -c "next"

#switch between windows
definekey top M-j next
definekey top M-k prev

#apps
unbind c
bind c exec urxvt -tr
#bind c exec aterm

bind g exec gftp
bind f exec firefox

技巧和窍门

屏幕阅读器辅助功能

默认情况下,ratpoison 无法通过 Orca 访问。https://gitlab.com/stormdragon2976/strychnine 上有一个项目,用 GTK counterparts 替换了默认的 ratpoison widgets。

$ git clone https://gitlab.com/stormdragon2976/strychnine.git
$ cd strychnine
$ ./setup.sh

按照屏幕上的提示操作,您将获得一个 ~/.ratpoisonrc,它将在启动时自动启动 Orca。有关更多选项,请参阅包含的 README.md

Java 应用程序

Java GUI 应用程序假定使用堆叠窗口管理器,并且在默认的 ratpoison 配置下无法正确全屏显示。有关解决方案,请参阅 Java#Impersonate_another_window_managerJava#Gray_window,_applications_not_resizing_with_WM,_menus_immediately_closing

多个工作区

默认情况下,ratpoison 只有一个工作区,但是使用名为 rpws(默认安装)的脚本,您可以拥有更多工作区。

编辑您的 ~/.ratpoisonrc,并添加

~/.ratpoisonrc
exec /usr/bin/rpws init 6 -k

这将创建 6 个工作区。默认情况下,您可以使用 Alt+F1 访问第一个工作区,Alt+F2 访问第二个工作区,依此类推。

您还可以为它们添加绑定,像这样

bind C-1 exec rpws 1
bind C-2 exec rpws 2
...

这样就可以使用 Ctrl+t Ctrl+1 访问它们(假设 Ctrl+t 是您的转义键)

URxvt 和 xterm

URxvtxterm,在默认安装情况下,会向窗口管理器发送调整大小的提示。这在大多数平铺窗口管理器中都有效,但在 ratpoison 中无效。最终结果是 URxvt/xterm 以字体大小的倍数调整自身大小,而不是调整到整个屏幕,并且很可能存在未填充的空白。对于这个问题,有两种解决方案,如下所述。

安装已修补的 URxvt

如果您使用 URxvt,rxvt-unicode-fontspacing-noinc-vteclear-secondarywheelAUR 软件包,除了其他改进之外,不会向窗口管理器发送调整大小的提示。如果您安装此版本的 URxvt 而不是默认版本,URxvt 将在 ratpoison 中正确调整大小。

调整边框

我们可以使用 xterm/urxvt 选项 internalBorder 并将 ratpoison 的边框设置为 0。

必须进行反复试验的过程,以找到每种分辨率和字体大小组合的精确 internalBorder 数值。(在进行测试之前,必须将 ratpoison 的边框设置为 0)可以使用 term 命令行选项 -b 来测试正确的数值,然后可以将其保存在以下文件中。

~/.Xresources
urxvt*internalBorder: 8 #change urxvt to xterm if necessary. Using the font terminus in urxvt at 14px size, 8 is the correct number here.
~/.ratpoisonrc
set border 0

如果找不到合适的组合,您可以尝试更改字体大小和字体族。(这会更改所需的边框数值)

启动时启动

启动 ratpoison 时启动程序的示例。文件 ~/.ratpoisonrc 在 ratpoison 启动时执行。

Launch urxvt with a tmux session
exec urxvt -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
Launch optimized chromium
exec bash -c 'pidof chromium &>/dev/null || exec /usr/bin/chromium --disk-cache-dir=~/tmp/cache'

壁纸和透明度

使用 xcompmgr 和 nitrogen 设置透明度的示例。首先启动 nitrogen 并设置所需的壁纸。然后在您的 ~/.ratpoisonrc 中使用以下内容:

Wallpaper and transparency
exec xcompmgr -c -f -D 5 &
exec nitrogen --restore

有用的快捷键绑定

快捷键绑定 效果
Ctrl+t ! <程序名称> 启动任何程序
Ctrl+t ? 显示快捷键绑定
Ctrl+t c 启动 X 终端
Ctrl+t n 切换到下一个窗口
Ctrl+t p 切换到上一个窗口
Ctrl+t 19 切换到窗口 1–9
Ctrl+t k 关闭当前窗口
Ctrl+t Shift+k XKill 当前应用程序
Ctrl+t s,Shift+s 将当前帧拆分为两个垂直、水平的帧
Ctrl+t Tab, Left, Up, Right, Down 切换到下一个、左侧、顶部、右侧、底部帧。
Ctrl+t Shift+q 使当前帧成为唯一帧
Ctrl+t : 执行 ratpoison 命令

焦点跟随鼠标 (sloppy.c)

sloppy.c 是 ratpoison 的配套程序,可以在 /usr/share/ratpoison/ 中找到。要启用焦点跟随鼠标,请运行以下命令:

# cd /usr/share/ratpoison/
# gcc -o sloppy sloppy.c -lX11
# ./sloppy

要自动启动焦点跟随鼠标,请将以下内容添加到您的 ~/.ratpoisonrc 中:

~/.ratpoisonrc
exec /usr/share/ratpoison/sloppy

ratpoison-sloppymove

Sloppy.c 抑制继续使用键盘进行焦点更改。有一个改进的焦点跟随鼠标版本,它不会干扰键盘驱动的焦点更改,ratpoison-sloppymoveAUR

要自动启动 ratpoison-sloppymove,请将以下内容添加到您的 ~/.ratpoisonrc 中:

~/.ratpoisonrc
exec ratpoison-sloppymove

Ratpoison 和显示管理器

许多显示管理器(例如,LightDM)从 /usr/share/xsessions/ 获取可用会话,并且大多数窗口管理器和桌面环境都在那里创建 .desktop 文件。但是,ratpoison 却在 /etc/X11/sessions/ 中创建了一个 ratpoison.desktop 文件。要使显示管理器找到 ratpoison,可能需要将 ratpoison.desktop 文件从 /etc/X11/sessions/ratpoison.desktop 复制到 /usr/share/xsessions/ratpoison.desktop。如果 /usr/share/xsessions 目录不存在,请以 root 身份创建它。

参见