Fensterchef-wm is a fast and flexible tiling window manager. It is the original and most complex product hence we refer to it as just "fensterchef".
Fensterchef currently only has an X11 backend but plans are there to port it to Wayland compatible with previous configuration.
This document is a guide to the fensterchef window manager.
Content
- Installation
- Setting up
- Getting started
- Frame vs Window
- Frame and Window numbers
- Window layers
- Window modes
- Window list
- Frame stash
- Parent and child frames
- Multiple screens
- Going further
- Glossary
Installation
Depends on: X11, Xrandr≥1.2, Xcursor and Xft
Build from source
Building requires: coreutils, gzip, pkgconf, a C99 compiler and a unix shell
git clone https://github.com/fensterchef/fensterchef.git && cd fensterchef && sudo ./make install && fensterchef --version
Using an AUR helper
pacaur -S fensterchef
Setting up
For most display managers
like LigthDM, GDM, SLiM etc., it suffices to edit
~/.xsession
:
exec /usr/bin/fensterchef
When using no display manager, use your preferred way.
Getting started
You get a default configuration
baked into the executable.
But we also supply one in text which is at /usr/share/fensterchef/wm
.
Copy it to ~/.config/fensterchef/wm
.
Within the configuration, look for the default modifier which is defined
as Mod4
by alias mod = Mod4
.
It is the prefix of most button and key bindings you can use in fensterchef.
Mod4
corresponds to, use
xmodmap -pm
.
It usually is Super_L
.
mod
.
Set the terminal emulator
To use your preferred terminal, make an
environment variable called TERMINAL and set it to the executable of your
terminal emulator.
Configure this in your shell. Usually, editing ~/.profile
suffices.
Alternatively, make a bind in the fensterchef configuration. Look for the line in the supplied configuration that says "terminal". The bind could look like:
# Start a terminal mod+Return run xterm
Start an X session
Start an X session with fensterchef. Fensterchef 2.0 supplies you with notifications and the window list. Nothing more.
Open a terminal
Try your configured binding to open a terminal which is
mod+Return
by default.
Open a second one and notice how it covers the previous terminal.
Fensterchef will never split unless told to split.
However, you can edit the configuration and enable
auto split
.
Then, whenever a window is shown, it is split off the current window.
To close the terminal windows again, use mod+q
.
To simply hide them to later retrieve them, use mod+minus
.
reload configuration
binding mod+Shift+r
to reload at runtime.
Make windows float
Open a terminal and press mod+Shift+space
to make a window
float.
It will be above the tiling windows on a separate layer.
The floating window mode can be toggled by pressing the binding again.
You may notice that an empty area is left behind when making a window
float.
To automatically remove such areas, turn on auto remove void
or the more aggressive auto remove
.
It can also happen that a new window is filled into the now empty spot,
this is controlled using auto fill void
.
Navigate the tiles
You can directly split a frame using mod+v
for a left and
right split or mod+s
for a top and bottom split.
To focus the split frames, use the home row keys hjkl
or
arrow keys together with mod
.
To remove the splits agains, use mod+r
.
You can also swap frames around using mod+Shift
together
with a directional key.
There is another way.
Instead of swapping frames, fensterchef can move them around.
You can configure this behaviour like this:
# Move frames around mod+Shift+h move left mod+Shift+j move down mod+Shift+k move up mod+Shift+l move right mod+Shift+Left move left mod+Shift+Down move down mod+Shift+Up move up mod+Shift+Right move right
Frame vs Window
Frames refer to the partitioning of your screen into rectangular areas. As you noticed, these areas may or may not contain a window. A window internally is a wrapper around an X window. The clients you start like an e-mail program or browser may spawn such windows. Windows can also be dialogs.
Windows are spawned by your applications.
Frame and Window numbers
Both frames and windows have a number.
The numbers of frames are unique whereas multiple windows can share the
same number.
You can freely assign a number to a frame or window using
assign FRAME_NUMBER
or
assign window WINDOW_NUMBER
.
Open a terminal and make it float.
Press mod+Shift+1
to give it number 101.
Hide it using mod+minus
.
Now you can open it again using mod+1
.
Window layers
There are three layers that hold onto different window modes.
The desktop layer is at the bottom and holds onto desktop windows.
The tiling layer holds onto tiling windows.
At the top is the floating window holding onto the rest:
Floating, dock and fullscreen windows.
When you have a tiling window and a floating window, you can switch
between them using mod+space
.
Window modes
You now already know two window modes: Tiling and floating. The other window modes are: Fullscreen, dock and desktop. When a window is mapped (about to be shown on screen), fensterchef decides based on the window's internal properties what mode it should be in initially. When you start a video game, it usually starts as fullscreen. Dialog windows usually start as floating windows. Other windows like bars are dock windows and then there are the desktop windows in the back of everything. The rest gets assigned the tiling window mode.
You can already make a tiling window a floating window and vise versa.
Now try to make it fullscreen using mod+f
.
You will notice the window covers the entire screen.
Use mod+f
again to put it back in its original state.
Window list
Use mod+w
to open the window list.
You are presented with a window showing all currently managed windows.
This excludes windows that do not want to receive focus.
You can see the window mode indicated by a letter if the window is
visible.
If the window is focused, it is indicated by a *
.
If the window is hidden, you see a -
.
Use the home row keys hjkl
or the arrow keys to navigate
the list.
When over a window, use Return
to show and focus selected
window.
To simply hide the window again without focusing another window, use
q
or Escape
.
mod
. See how the window list does live updates.
Frame stash
If you remove frames using mod+r
they are not actually
removed but put into the frame stash.
You can pop frames from this stash using mod+o
.
This swaps out the current frame with the stashed frame.
Empty frames will never be stashed.
Similar to stash options is mod+n/p
.
These two bindings replace the current frame similar to
mod+o
.
But they do not place the last popped frame into the current frame.
Instead, they place the window with higher/lower id into the current
frame.
Imagine you have two windows, a terminal and a browser window.
The terminal has id 88 and the browser has id 92.
When the browser is invisible, the terminal is a focused tiling window,
then mod+n
will select the browser window.
Then pressing mod+p
will invert this.
Parent and child frames
When you split a frame, you get 3 frames in total.
One is the parent frame and the other two the left and right child frames.
You can switch between the children but it is also possible to select the
parent using mod+a
.
When a parent is selected, you can use mod+b
to go back to
the child frame.
A parent frame is like any other frame and can be moved, stashed or
resized.
Multiple screens
We will refer to a physical output device as monitor. Fensterchef recognizes your monitor setup using Xrandr. You are required to configure your monitors through Xrandr. Fensterchef will recognize any changes you do at runtime. There is one configuration option you could bind to move windows to specific monitors:
# Move the current window to a monitor called HDMI-A-0 mod+Shift+a center window to HDMI-A-0 # Or one called DVI-D-2 mod+Shift+z center window to DVI-D-2
Going further
Now you should have an understanding on what fensterchef is capable of. You can also look at the two manual pages supplied with the installation.
A short recap can be found at fensterchef(1).
All configuration options are described in fensterchef(5).
Any questions go to discussions.
Glossary
Jump to the most informative mentioning of a term.
- Default configuration
- Default binding modifier (mod)
- Desktop window mode
- Display manager
- Dock window mode
- Floating window mode
- Frame
- Stash
- Fullscreen window mode
- Window mapping
- Monitor
- Window and Frame numbers
- Relation
- Terminal emulator
- Tiling window mode
- Window