跳转至内容

Ratpoison

来自 ArchWiki

本文或本节需要在语言、wiki 语法或风格方面进行改进。请参阅 Help:Style 获取参考。

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

Ratpoison 是一款用 C 语言编写的手动平铺 窗口管理器,允许用户在没有鼠标的情况下管理图形窗口。其用户界面灵感来自 GNU Screen

默认情况下,Ratpoison 的快捷键与 EmacsGNU Screen 非常相似。命令由按下前缀键(默认 Ctrl+t)开始,随后跟另一个键组合,例如 Ctrl+Space 移动到下一个窗口。

安装

AUR 安装 ratpoisonAUR 软件包。

Ratpoison 与显示管理器

许多 显示管理器(例如 LightDM)从 /usr/share/xsessions/ 获取可用会话,且大多数 窗口管理器桌面环境 将其 桌面条目 安装在该目录下。然而,Ratpoison 则在 /etc/X11/sessions/ratpoison.desktop 中创建 桌面条目 文件。为了让显示管理器能找到 Ratpoison,可能需要将 Ratpoison 的 桌面条目 复制到 /usr/share/xsessions/ratpoison.desktop。或者您也可以使用符号链接。如果 /usr/share/xsessions 目录不存在,请以 root 身份创建它。

使用 Ratpoison

要启动 Ratpoison,您需要先注销,并在 显示管理器 中选择“Ratpoison”。或者,您可以配置 xinit 并使用 startx

X11 启动后,您将看到一个黑屏,右上角有一个写着“Welcome to Ratpoison”的小文本框。现在输入 Ctrl+t 然后输入 ? 以获取快捷键列表。如果您习惯使用 GNU ScreenTmux,您很快就会感到得心应手。

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

这是一个配置文件示例:

~/.ratpoisonrc
startup_message off

# run a programs at start.
# you can also use ~/.xinitrc
exec xsetroot -cursor_name left_ptr
exec xterm

# Setting the escape key to the Windows key
escape Super_L

# Keybindings for programs.
# "bind" command requires that you first press the prefix key.
# Overriding CTRL+t 'c' to start urxvt instead of default xterm.
bind c exec urxvt -tr
bind f exec firefox

# Make a screenshot command for Ratpoison.
# Bind it to Meta-Ctrl-PrintScrn.
# Note that "definekey top" causes the keybinding to work without prefix key.
alias sshot exec import -window root ~/screenshot-$(date +%F).jpg
definekey top M-C-Print sshot

# Virtual desks.
# Note: you probably want to use rpws instead, read below.
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 with vim-like keys, without having to press prefix key.
definekey top M-j next
definekey top M-k prev

# Alt+Tab now switch to next window.
definekey top M-Tab next

实用快捷键

按键绑定 效果
Ctrl+t ! <程序名称> 启动任何程序
Ctrl+t ? 显示快捷键,包括自定义快捷键!
Ctrl+t c 启动 xterm
Ctrl+t n 切换到下一个窗口
Ctrl+t p 切换到上一个窗口
Ctrl+t 19 切换到窗口 1–9
Ctrl+t k 关闭当前窗口
Ctrl+t Shift+k 强制杀死当前应用程序
Ctrl+t s,Shift+s 将当前框架垂直或水平分割为两个
Ctrl+t Tab, Left, Up, Right, Down 切换到下一个、左侧、上方、右侧、下方框架。
Ctrl+t Shift+q 使当前框架成为唯一框架
Ctrl+t : 执行 ratpoison 命令

技巧与提示

屏幕阅读器辅助功能

默认情况下,Ratpoison 不支持 Orca 屏幕阅读器。在 gitlab.com/stormdragon2976/strychnine 有一个项目,它将默认的 Ratpoison 组件替换为 GTK 组件。

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

按照屏幕上的提示操作,您将获得一个在启动时会自动启动 Orca 的 ~/.ratpoisonrc 文件。更多选项请参阅随附的 README.md

Java 应用程序

Java GUI 应用程序假设使用堆叠式窗口管理器,在默认的 Ratpoison 配置下无法正确全屏。请参阅 Java#Impersonate another window managerJava#Gray window, applications not resizing with WM, menus immediately closing 以获取解决方案。

临时切换到另一个窗口管理器

如果某个程序在 Ratpoison 下运行异常,您可以临时切换到另一个 窗口管理器。您需要确保临时窗口管理器在退出时不会杀死所有程序。值得注意的是,至少 IceWM 已知由于此原因而无法正常工作。

要临时切换到另一个窗口管理器,可以使用 Ratpoison 的 tmpwm 命令:ctrl+t : tmpwm <RET>

多工作区

默认情况下,Ratpoison 只有一个工作区。但 Ratpoison 附带了 rpws 脚本,可用于添加更多工作区。

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

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

这将创建 2 个工作区。默认情况下,您可以使用 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 在默认安装时会向窗口管理器发送调整大小提示(resize hints)。这在大多数平铺窗口管理器中有效,但在 Ratpoison 中无效。最终结果是 URxvt/xterm 以字体大小的倍数调整自身大小,而不是调整到整个屏幕,导致出现空白间隙的可能性很高。以下记录了两种解决方案。

安装补丁后的 URxvt

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

调整边框

我们可以使用 URxvt/xterminternalBorder 选项,并将 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 启动时被执行。

启动带有 Tmux 会话的 URxvt

exec urxvt -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"

启动缓存位于 tmpfs 中的 Chromium

exec bash -c 'pidof chromium &>/dev/null || exec /usr/bin/chromium --disk-cache-dir=~/tmp/cache'

壁纸与透明度

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

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

焦点随鼠标 (sloppy.c)

sloppy.c 是 Ratpoison 的一个辅助程序,可以在 /usr/share/ratpoison/ 中找到。要启用焦点随鼠标(也称为“sloppy focus”),请运行以下命令:

# 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

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.