euclid-wm - A highly flexible, minimal, dynamic, tiling window manager
(started directly euclid will not check for config files.)
aims to be a highly flexible tiling window manger, which allows easy management of large collections of windows entirely from the keyboard.
Euclid's state can be described as:
These are arranged in a series. Up to 9 of them are numbered. They are composed of a set of visible windows (arranged in
) and minimized windows (stored in a
are either rows or columns (the orientation can be toggled at runtime), that contain visible windows.
is a set of minimized windows, associated with a view, which can be viewed at the bottom of the screen in the form of a box containing their titles.
All bindings are prefaced by a mod ("M", defaults to mod1, i.e., alt).
M + <enter>
- start run dialogue (by default, dmenu). NB: this takes keyboard focus as long as it is open; Once it is opened you must either select a command (with enter) or exit the dialog (with esc).
M + <shift> + <enter>
- start terminal (default: xterm).
Basic Window Manipulation
M + h/j/k/l
- move focus left/down/up/right
M + H/J/K/L
- move focused window left/down/up/right
M + u/i/o/p
- resize window: move lower right corner left/down/up/right
The stack maintains its own focus; The currently focused item can be identified by its blue color.
M + <space>
- Toggle the stack's visibility
M + .
- Move the currently focused window to the stack (i.e., minimize it)
M + ,
- Move the currently focused stack item to the main area (i.e., restore it)
M + /
- Swap currently focused stack item and currently focused main item.
M + ;/'
- Move stack focus up/down
M + <shift> + ;/'
- Shift the stack item up/down in the stack
M + n/m
- Move to the previous/next view
M + N/M
- Move currently focused window to the previous/next view
M + 1-9
- Move to the 1-9th view
M + <shift> + 1-9
- Move the currently focused window to the 1-9th view
M + 0
- Move to the last populated view (regardless of its number).
M + <shift> + 0
- Move the currently focused window to the last populated view.
A note on the order and numbering of views:
The enumeration is not strictly accurate; View 9 may not be the 9th view. Specifically, once a view is assigned a number it retains that number regardless of where it actually falls in the list of views. This is so that accessing views based on their number remains consistent.
The first view, created when euclid starts, is view 1; Going to the previous view makes a new view, but view 1 remains the original one, even though by counting it is now actually the second. Likewise, if one starts on view 1, and goes to view 9, view 9 remains view 9, even though it may actually be the second view. However, numbered views are always in order. So if one starts with view 1 and creates view 9, then creates view 8, view 8 will be placed between views 1 and 9.
M + <shift> + <space>
- Change to fullscreen mode.
Notes on fullscreen mode: In fullscreen mode the stack is disabled: widows cannot be added or taken out. j/k will cycle through all windows on the view in a linear way. If the view is in fullscreen mode because a window triggered fullscreen, and that window closes, euclid will switch back to its normal tiled layout; if the user manually triggered fullscreen mode, euclid will remain in fullscreen.
M + <tab>
- toggle the orientation of the tracks (vertical or horizontal layout)
M + Q
- quit euclid.
M + r
- reload config file in place.
M + <shift> + ?
- search a list of all windows presented in dmenu.
M + PgUp/PgDown
- when multiple screen is in use, switch focus to previous/next screen.
On startup euclid will look for
If $XDG_CONFIG_HOME is not defined it will look for
If euclid-wm.conf is found, euclid will override its default settings with those found in the file.
A sample config file
should have come with euclid. If euclid is started with start-euclid the start-euclid will check to see whether these files are installed for the current user, and if not, it will create them from the system defaults. The default is kept in /usr/share/euclid-wm/
At startup euclid will also (try to) run the script
in the same directory (e.g., ~/.config/euclid-wm/euclidrc). This is meant as a place for the user to add any commands he would like run at startup. A default is stored in /usr/share/euclid-wm/