Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
snapwm is an easy to configure, dynamic, tiling window manager. Built on dminiwm with a desktop switcher, info bar and reloadable rc file.
branch: master
Failed to load latest commit information.
.gitignore Change config.h.def to config.h as it has no user edits needed now
ChangeLog Fix for bar not toggling after monitor disconnect
Makefile Plug'n'play monitors Updated Readme
bar.c Plug'n'play monitors
config.h Moar Desktops
readkeysapps.c Plug'n'play monitors
readrc.c Plug'n'play monitors
sample.apps.conf Use WM_NAME in apps.conf too
sample.key.conf Add function to close any open windows nicely if possible and shutdow…
sample.rc.conf Changed urgent hint to include current desktop
snapwm.c Fix for bar not toggling after monitor disconnect


it's minimal and dynamic

I started this from catwm 31/12/10 ( ) See snapwm.c for thanks and licensing. Screenshots and ramblings/updates at


snapwm is a xinerama and xrandr aware, very minimal and lightweight dynamic tiling window manager.

All configuration is read from three files in ~/.config/snapwm/ .

rc.conf has colours and window manager configurations.

key.conf is mandatory for shortcuts and commands to run.

apps.conf is optional and where apps settings are read from.


It allows the "normal" method of tiling window managers(with the new window as the master) and with the new window opened at the bottom of the stack(like dwm's attach_aside)

There's vertical tiling mode:

|        | W |
|        |___|
| Master |   |
|        |___|
|        |   |

Horizontal tiling mode:

|           |
|  Master   |
| W |   |   |

Grid tiling mode:

|      | W  |
|Master|    |
|      |    |

Stacking mode:

|   _______  |
|  |  ___  | |
|  | |___| | |
|  |_______| |

Fullscreen mode(which you'll know when you see it)

All accessible with keyboard shortcuts defined in key.conf file.

  • The window W at the top of the stack can be resized on a per desktop basis.
  • Changing a tiling mode or window size on one desktop doesn't affect the other desktops.
  • Windows can be added/removed to/from the master area with keyboard shortcuts
  • There is a bar with a desktop switcher, space to show the focused window's name and space to show external text.
  • The rc file is reloadable 'on the run'.

Recent Changes


  • Missed updating the Readme a bit so:

    • Transient windows can be used in apps.conf
    • Fixed a space in an apps name causing issues in apps.conf
    • Monitor connects/disconnects are handled with Xrandr(no need to restart the window manager)
    • Plus some minor bug fixes(bugs? what bugs!)


  • Added bar with desktop switcher and statusbar to dminiwm.
  • Colours and font are read from an rc file and can be updated with a keyboard shortcut.
  • Text (e.g. conky) can be piped into the status bar from .xinitrc.
  • Unfocused windows have an alpha value so can be transparent if e.g. cairo-compmgr is used
  • Lots of things can be changed in the running wm from the rc file.
    • e.g. Whether the bar is at the top or bottom
    • font, colours, border width, default mode etc (see the sample rc file).
  • In the rc file, lines starting with a hash are ignored.
  • Desktop switcher can show number of open windows on unfocused desktops and in fullscreen mode
  • Option to show number of windows open in the desktop switcher in the config and rc file
  • Clicking on the current desktop in the switcher will focus the next window
  • Added option in the config and rc files for opening new window at the top or bottom of the stack when using attach aside
  • Added a stacking window mode
  • Seperated the window and bar colours in the config.h and rc files
  • Added support for multibyte fonts
  • Added 'double buffer' for text in the bar
  • Changed grid mode: First column and second window can be resized
  • Moved the RC FILE to $HOME/.config/snapwm/rc.conf
  • Windows can be added/removed to/from the master area with keyboard shortcuts
  • Keyboard shortcuts and apps settings moved to files in ~/.config/snapwm/
  • rc.conf changed to semi-colon seperated
  • Number of desktops now read from rc.conf
  • Whether to left align the current windows' name in the bar moved to rc.conf
  • No need to rebuild the wm to change a setting
  • Colours changed in rc.conf
  • Background colour can be changed
  • Added multi monitor support
  • Added option in rc.conf to select the monitor the bar is on
  • Added option in rc.conf to switch from stacking mode to another mode when reaching a set number of open windows
  • Use 'NULL' for no modifier key in key.conf
  • Added option in rc.conf to set the initial number of extra windows in the master area for each desktop
  • Added a marker for the previous desktop in the switcher
  • The BAR can have a transparency value in rc.conf
  • Transient windows can be cycled through with normal windows
  • Add new function "terminate" for keyboard shortcut to close any open windows, exit the window manager and shutdown(1) or reboot(2)
  • Add option BAR_SHORT to rc.conf to shorten the bar's length to have room for an external app
  • Don't manage apps with '_NET_WM_WINDOW_TYPE_DOCK' set e.g. trayer
  • Right click an unfocused desktop in the switcher to move the focused window to that desktop
  • Watch for WM_NAME on new windows for the apps.conf file


Need Xlib, Xrandr, then:

Copy the sample.rc.conf file to $HOME/.config/snapwm/rc.conf and edit it to suit.

Copy the sample.apps.conf file to $HOME/.config/snapwm/apps.conf and edit it to suit.

Copy the sample.key.conf file to $HOME/.config/snapwm/key.conf and edit it to suit.

$ make
# make install
$ make clean


[ * No bugs for the moment ;) (I mean, no importants bugs ;)]


  • Maybe xft fonts
Something went wrong with that request. Please try again.