Ratpoison

Related articles
Window manager
Cagebreak
Stumpwm
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
Poor style, duplicate content (Discuss in
Talk:Ratpoison
)
Ratpoison
is a manually tiling
window manager
written in C that allows the user to manage graphical windows without a mouse. The user interface is inspired by
GNU Screen
.
By default, Ratpoison keybindings work quite similarly to
Emacs
and
GNU Screen
. Commands begin by pressing the prefix key (by default
Ctrl+t
), and are then followed by another key combination such as
Ctrl+Space
to move to the next window.
Installation
Install
the
ratpoison
AUR
package from
AUR
.
Ratpoison and display managers
Many
display managers
(e.g.,
LightDM
) source the available sessions from
/usr/share/xsessions/
and most
window managers
and
desktop environments
install their
desktop entries
there. However, Ratpoison instead creates a
desktop entry
file in
/etc/X11/sessions/ratpoison.desktop
. To allow display managers to find Ratpoison one may need to copy the Ratpoison to
desktop entry
/usr/share/xsessions/ratpoison.desktop
. You can alternatively use a symbolic link. If the
/usr/share/xsessions
directory does not exist, create it as
root
.
Using Ratpoison
To start Ratpoison, you need to first logout and select "Ratpoison" from your
Display manager
.
Alternatively, you can configure
xinit
and use
startx
.
After
X11
starts up you will see a black screen and a little textbox on the upper right of it that says "Welcome to Ratpoison".
Now type
Ctrl+t
and then
?
to get a list of keybindings. If you are used to
GNU Screen
or
Tmux
, you will feel at home very soon.
You are able to define custom keystrokes and even override existing ones in
~/.ratpoisonrc
Here is an example config file:
~/.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
Useful key bindings
Key bindings
Effect
Ctrl+t
!
<
Program Name
>
Start any program
Ctrl+t
?
Show key bindings, even custom ones!
Ctrl+t
c
Start xterm
Ctrl+t
n
Switch to next window
Ctrl+t
p
Switch to previous window
Ctrl+t
1
–
9
Switch to windows 1–9
Ctrl+t
k
Close the current window
Ctrl+t
Shift+k
Kill the current application
Ctrl+t
s
,
Shift+s
Split the current frame into two vertical,horizontal ones
Ctrl+t
Tab
,
Left
,
Up
,
Right
,
Down
Switch to the next, left, top, right, bottom frame.
Ctrl+t
Shift+q
Make the current frame the only one
Ctrl+t
:
Execute a
ratpoison
command
Tips and tricks
Screen reader accessibility
By default, Ratpoison is not accessible with
Orca
screen-reader. There is a project at
gitlab.com/stormdragon2976/strychnine
that replaces the default Ratpoison widgets with
GTK
counterparts.
$ git clone https://gitlab.com/stormdragon2976/strychnine.git
$ cd strychnine
$ ./setup.sh
Follow the on screen prompts, and you will get a
~/.ratpoisonrc
that will automatically launch Orca when it starts. See the included
README.md
for more options.
Java applications
Java GUI applications assume stacking window managers, and do not go to fullscreen properly with the default Ratpoison configuration. See
Java#Impersonate another window manager
and
Java#Gray window, applications not resizing with WM, menus immediately closing
for solutions.
Switch to another window manager temporarily
If a program misbehaves under Ratpoison, you can temporarily switch to another
window manager
.
You need to be sure that your temporary window manager doesn't kill all programs when it exits.
Notably at least
IceWM
is known to unfortunately not work because of that.
To switch to another window manager temporarily, you can use
tmpwm
Ratpoison command with
ctrl+t : tmpwm <RET>
Multiple workspaces
By default, Ratpoison only has one workspace.
But Ratpoison comes with
rpws
script that can be used to add more workspaces.
Edit your
~/.ratpoisonrc
, and add:
~/.ratpoisonrc
exec /usr/bin/rpws init 2 -k
That creates 2 workspaces. By default, you can access to them by using
Alt+F1
to access the first,
Alt+F2
to access the second, etc.
You can also add binds to them, like this:
bind C-1 exec rpws 1
bind C-2 exec rpws 2
That allows to access the first workspace with
Ctrl+t
Ctrl+1
(assuming
Ctrl+t
as your escape/prefix key).
URxvt and xterm
URxvt
and
xterm
, as they are installed by default, send resize hints to the window manager. This works in most tiling window managers, but not in Ratpoison. The end result is that
URxvt
/
xterm
resizes itself in multiples of the font size, rather than resizing to the whole screen, and chances that there are unfilled gaps are high. There are two solutions to this problem, documented below.
Install a patched URxvt
If you use
URxvt
, the
rxvt-unicode-fontspacing-noinc-vteclear-secondarywheel
AUR
package, among other improvements, sends no resize hints to the
window manager
. If you install this version of
URxvt
rather than the default,
URxvt
will resize properly within Ratpoison.
Adjust the border
We can use the
URxvt
/
xterm
option internalBorder and set the border of Ratpoison to 0.
A trial and error process must be done to find the exact number of internalBorder for each combination of resolution and font size. (the border of Ratpoison must be set to 0 before doing the tests)
The term command line option
-b
can be used to test for the correct number and then can be saved on the following files.
~/.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
If a combination cannot be found, you could try changing the font size and the font family also (that changes the required border number).
Autostart
Examples for launching programs when Ratpoison starts. File
~/.ratpoisonrc
is executed by Ratpoison on startup.
To 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"
To launch
Chromium
with the cache in a
tmpfs
:
exec bash -c 'pidof chromium &>/dev/null || exec /usr/bin/chromium --disk-cache-dir=~/tmp/cache'
Wallpaper and transparency
Example for setting transparency using
xcompmgr
and
Nitrogen
.
First start nitrogen and set the desired wallpaper. Then use this in your
~/.ratpoisonrc
Wallpaper and transparency
exec xcompmgr -c -f -D 5 &
exec nitrogen --restore
Focus-follows-mouse (sloppy.c)
sloppy.c
is a companion program for Ratpoison and can be found in
/usr/share/ratpoison/
. To enable focus-follows-mouse (also called "sloppy focus"), run the following commands:
# cd /usr/share/ratpoison/
# gcc -o sloppy sloppy.c -lX11
# ./sloppy
To autostart focus-follows-mouse feature, add the following to your
~/.ratpoisonrc
:
~/.ratpoisonrc
exec /usr/share/ratpoison/sloppy
ratpoison-sloppymove
Sloppy.c inhibits continued use of the keyboard to make focus changes. An improved version of focus follows mouse which does not interfere with keyboard-driven focus changes is available
ratpoison-sloppymove
AUR
To autostart ratpoison-sloppymove, add the following to your
~/.ratpoisonrc
:
~/.ratpoisonrc
exec ratpoison-sloppymove
See also
The Ratpoison documentation
Ratpoison config sample
Share your Ratpoison (experience) forum thread
Collection of scripts for the Ratpoison window manager