Ratpoison
Ratpoison 是一个用 C 语言编写的平铺窗口管理器,它允许用户在没有鼠标的情况下管理应用程序。其用户界面灵感来源于 GNU Screen。
默认情况下,ratpoison 的控制方式与 Emacs 非常相似。命令以按下 Ctrl+t
开始,然后是另一个组合键,例如 Ctrl+Space
来移动到下一个窗口。
安装
使用 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_manager 和 Java#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
URxvt 和 xterm,在默认安装情况下,会向窗口管理器发送调整大小的提示。这在大多数平铺窗口管理器中都有效,但在 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 1 –9 |
切换到窗口 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 身份创建它。