WM
Window Managers
- https://en.wikipedia.org/wiki/Stacking_window_manager
- https://en.wikipedia.org/wiki/Tiling_window_manager
- https://en.wikipedia.org/wiki/Re-parenting_window_manager
- https://en.wikipedia.org/wiki/Compositing_window_manager
- LUV: Window Managers
- http://www.slant.co/topics/390/~window-managers-for-linux
- http://en.wikipedia.org/wiki/Comparison_of_X_window_managers
- https://wiki.archlinux.org/index.php/Comparison_of_Tiling_Window_Managers
- http://sawfish.wikia.com/wiki/Comparison_of_extensible_window_managers
- http://www.gilesorr.com/wm/
- http://l3net.wordpress.com/2013/04/09/a-memory-comparison-of-light-linux-desktops-part-2/
- 30 Window Managers in 30 days [1]
- Box-Look.org - Stuff for your Windowmanager
xwm
xnwm
uwm
1985
developed by the Digital Equipment Corporation for their Ultrix operating system. It was released in 1985. Shortly thereafter, it became included as part of the base X Window System distribution, beginning with X10R3. Initially, it was distributed alongside two other window managers (xwm and xnwm).
In 1986, the X Window System switched to version 11 of the protocol. Only uwm was ported, so it became the only window manager for X Window System until X11R4 release, where it was replaced by twm. uwm has never been updated since.
twm
1987
- http://en.wikipedia.org/wiki/Twm
- https://wiki.archlinux.org/index.php/Twm
- http://www.linuxplanet.com/linuxplanet/reports/3000/2/
The name originally stood for Tom's Window Manager, but the software was renamed Tab Window Manager by the X Consortium when they adopted it in 1989 (X11R4).
twm is a re-parenting window manager that provides title bars, shaped windows and icon management. It is highly configurable and extensible. twm was a breakthrough achievement in its time, but it has been largely superseded by other window managers which, unlike twm, use a widget toolkit rather than writing directly against Xlib.
Various other window managers—such as vtwm, tvtwm, CTWM, and FVWM—were built on twm's source code.
awm
1988
descended from uwm.
olvm / olvwm
1989 / 1996?
OPEN LOOK Window Manager was the default stacking window manager for OpenWindows, the original desktop environment included with SunOS and Solaris. Its unique characteristic is its implementation of the OPEN LOOK look and feel.
Scott Oaks developed a variant of olwm, called olvwm (the OPEN LOOK Virtual Window Manager), which implements a virtual root window with dimensions greater than those of the video display.
- YouTube: OpenWindows / OPEN LOOK / olwm
swm
1989
Developed by Tom LaStrange at Solbourne Computer (computer workstations and servers based on the SPARC microprocessor architecture, largely compatible with Sun Microsystems' Sun-4 systems) in 1990. The most important innovation of swm was the introduction of the virtual desktop. It also introduced a primitive form of session management (restoring programs in use at the time of shutdown) to X.
Vtwm
1990
tvtwm
1991
Derived from twm to which it adds the virtual desktop feature from swm. All of these window managers were originally written by Tom LaStrange.
Unlike most more recent virtual window managers, tvtwm models the root window as a single large space, with the physical desktop being a viewport onto that virtual root window. The user can scroll the viewport around the virtual desktop either by pressing certain keys or by clicking into a scaled down representation of the virtual desktop, the so-called panner.
- https://sourceforge.net/projects/tvtwm7/
- https://github.com/oss/Solaris-Spec-Files/blob/master/tvtwm.spec
CTWM
1992
Claude Lecommandeur from the source code for twm, which, inspired by HP's vuewm, he extended to allow for virtual desktops ("workspaces" in CTWM's terminology.)
PieWM
1992
tvtwm fork, Has pie menus (circle around the mouse).
mwm
1992
Motif Window Manager
- https://en.wikipedia.org/wiki/Motif_Window_Manager
- http://web.archive.org/web/20171031232801/http://www.xwinman.org:80/mwm.php
FVWM
1993
Derived from twm, has lots of forks: Afterstep, Xfce, Enlightenment, WindowMaker, Metisse, Bowman, AmiWM, FVWM-XPM (pre-Enlightenment), NWM, MVLWM, SCWM
- https://en.wikipedia.org/wiki/FVWM95 - based on the popular FVWM 2 window manager. It is similar to the original FVWM, but is designed to closely resemble the look of Windows 95.
- https://github.com/fvwmorg/fvwm3 - the successor to fvwm2
9wm
1994
ADAM
1995
- https://web.archive.org/web/19990218061527/http://wwwinfo.cern.ch/umtf/adam.html
- http://consult.cern.ch/writeup/adam/
AmiWM
1996?
- http://www.lysator.liu.se/~marcus/amiwm.html - FVWM descendant
wm2 / wmx
1996 / 1998
Window Maker
1997
- Workspace - a fork of Window Maker.
Blackbox
1997
IceWM
1997
MLVWM
1997
- https://en.wikipedia.org/wiki/Macintosh-Like_Virtual_Window_Manager - FVWM descendant
Xfwm
Xfwm - used in Xfce, intially based on fvwm2, itself derived from twm, redesigned to minimize memory consumption, provide a 3-D look to window frames, and provide a simple virtual desktop.
4Dwm
1998?
derived from mwm. uses the Motif widget toolkit, normally used on Silicon Graphics workstations running IRIX.
aewm
1998
AfterStep
1999
- http://www.afterstep.org/ - FVWM descendant
Scwm
1999
- http://scwm.sourceforge.net/ - FVWM descendant
plwm
1999
PWM
2000
Tiling
Succeeded by Ion
Ion
2000
Tiling
Successor to PWM, development dead
Fork: Notion
Sawfish
2000
- Sawfish is an extensible window manager using a Lisp-based scripting language. Its policy is very minimal compared to most window managers. Its aim is simply to manage windows in the most flexible and attractive manner possible. All high-level WM functions are implemented in Lisp for future extensibility or redefinition. what i wanted when using litestep
larswm
2000
ratpoison
2000
PLWM
2000
Fluxbox
2001
- http://fluxbox.org/ - blackbox fork
WindowLab
2001
Fork of aewm. Stacking.
evilwm
2001
Stacking, minimal/small.
Openbox
2002
Metacity
2002
- https://en.wikipedia.org/wiki/Metacity - gnome 2
miwm
2002
Hackedbox
2002
Oroborus
2002
NovaWM
2002
Stumpwm
2003
cwm
2004
Calm Window Manager, stacking. was based on evilwm, rewritten as a 9wn fork, then rewritten
- http://web.archive.org/web/20111118065946/http://monkey.org/~marius/pages/?page=cwm
- https://en.wikipedia.org/wiki/Cwm_(window_manager)
wmii
2005
Tiling/stacking, plan9 like interface.
PekWM
2005
Stacking
JWM
2005
Stacking, Windows 98 like.
whimsy
2005
Python, stackable.
dwm
2006
Tiling, configuration in source header file.
- https://sourceforge.net/projects/adwm/ - old fork
spectrwm
2006
- spectrwm is a small dynamic tiling window manager for X11. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It was written by hackers for hackers and it strives to be small, compact and fast. It was largely inspired by xmonad and dwm.
FLWM
2006?
Stacking, based on the FLTK toolkit
Matchbox
2007
- Matchbox - an Open Source base environment for the X Window System running on non-desktop embedded platforms such as handhelds, set-top boxes, kiosks and anything else for which screen space, input mechanisms or system resources are limited.Matchbox consists of a number of interchangeable and optional applications that can be tailored to a specific non desktop platform to enhance usability in a ‘constrained’ environment.
xmonad
2007
- xmonad is a dynamically tiling X11 window manager that is written and configured in Haskell. In a normal WM, you spend half your time aligning and searching for windows. xmonad makes work easier, by automating this.
- http://www.youtube.com/watch?v=AyNkBLhIpQk&hd=1 - example vid
Config
- XMonad.Doc.Configuring
- template config
- http://www.linuxandlife.com/2011/11/how-to-configure-xmonad-arch-linux.html
cabal --recompile after changing ~/.xmonad/xmonad.hs
Hotkeys
mod shift enter start terminal mod shift c close current window mod w reload xmonad mod space rotate through window layouts mod shift space reset to workspace default mod tab tab through windows super 2 switch to workspace 2
Awesome
2007
- http://awesome.naquadah.org/
- https://wiki.archlinux.org/index.php/Awesome
- http://git.naquadah.org/?p=awesome.git;a=shortlog;h=HEAD
Config
echo 'naughty.notify({ text = "hello from tty" })' | awesome-client
debug rc.lua changes;
Xephyr :1 -ac -br -noreset -screen 1152x720 & DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new
If xdg/awesome default config loads instead of .config/awesome, this is due to error in the rc.lua.
Usage
[mod]-Enter new terminal window [mod]-c close window [mod]-j rotate window selection clockwise [mod]-k rotate window selection anticlockwise [mod]-J move active window clockwise [mod]-K move active window anticlockwise [mod]-f fullscreen active window [mod]-a create new tag [mod]-s rename active tag
[mod]-shift-r reload awesome (to resource config)
Multihead
Wibox
- comp.window-managers.awesome: Re: Multiple row wibox
Widgets
Colours
The color format in awesome is either a standard X color name (blue, darkblue, lightred, etc) or a hexadecimal formatted color (#rrggbb or #rrggbbaa). By using the hexadecimal format, you can also specify an alpha channel: that means that #00ff00 will draw pure green, but #00ff00aa will set the alpha channel to ‘aa’ and will blend the green with the color under it.
Text format
You can use Pango markup in a text string. This allows formating the text rendered inside widgets. Pango markup documentation can be found in the Pango documentation at http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html.
A Pango markup example: ….
Shifty
- http://awesome.naquadah.org/wiki/Shifty
- https://github.com/bioe007/awesome-shifty/tree/2.0
- https://bbs.archlinux.org/viewtopic.php?id=124725
- http://aur.archlinux.org/packages.php?ID=32463
- http://git.naquadah.org/?p=awesome.git;a=summary
Revelation
Expose-like client selection.
Radical
- https://github.com/Elv13/radical - This is Radical, one of the largest Awesome extension module. It provide un unified interface to generate multiple types of menus.
MPD
Other
- https://github.com/uzsolt/keychains - A simple keychain module which allows to use keychains in awesome window
manager.
3.5
subtle
2007
- subtle is a manual tiling window manager with a rather uncommon approach of tiling: Instead of relying on predefined layouts, subtle divides the screen into a grid with customizeable slots (called gravities). For better understanding, the default config uses a 3x3 grid and maps each gravity to one key of the numpad. With those keys, windows can be moved directly to the desired gravity - the same can be done with tagging rules in the config. Another unique concept is the strict tagging: Unlike other tiling window managers, subtle doesn't allow weak tagging and always maps windows to virtual desktops (called views) with matching tags, regardless of the current active view.
Echinus
2007
Tritium
2007?
- https://github.com/stew/tritium - a tabbed/tiling window manager. tritium is a tiling/tabbed window manager for the X Window System inspired by the ion3 window manager. It was written completely from scratch in python and shares no actual code with ion3. tritium is implemented in python using the plwm ("pointless window manager") library
SithWM
2007
wmfs
2008
- http://wmfs.info/ - DEAD SITE
CLFSWM
2008
Lucca WM
2008?
i3
2009
Based on wmii, tiling/floating.
- https://github.com/Airblader/i3 - i3-gaps
- YouTube: i3wm: Jump Start (1/3) - configuration guides
- YouTube: i3 screencast: containers and the tree data structure
- YouTube: i3 Window Manager Overview
- YouTube: i3 - An Improved Tiling Window Manager
i3-msg exec application # start your application on the workspace where it was called
- https://github.com/greshake/i3status-rust - a feature-rich and resource-friendly replacement for i3status, written in pure Rust. It provides a way to display "blocks" of system information (time, battery status, volume, etc) on the i3 bar. It is also compatible with sway.
bindsym $mod+n exec i3-msg move to container workspace $(($(wmctrl -d | wc -l) + 1)) # move to next numbered workspace whether existing or empty
- https://github.com/cameronleger/i3-workspacer - simplifying large amounts of i3 workspaces with naming and infinite* workspace traversal
- https://github.com/Chimrod/i3_workspaces - allow you to configure your workspace easily. I use it for setting a wallpaper to each workspace, or launch application on some workspaces.
- https://web.archive.org/web/20160420173541/http://www.kelvinblog.tk/i3wm-restore-layout/ - "i3 can only swallow new windows, but not existing ones. ... I use xdotool to unmap all visible windows and map them again (Mapping a window means to let the WM manage it). This is the script I use"
- https://github.com/joepestro/i3session - remembers what's running in your i3 workspaces by saving a session file (in ~/.i3/session). It is then able to restore the running processes (and their simple orientation) to one or more workspaces. Since i3session executes i3 commands sequentially (tree traversal), changing focus during restore will affect where clients open. By default, the i3-nagbar will appear during restore with a message to remind you of this.
- https://github.com/pitkley/i3nator - Tmuxinator for the i3 window manager. It allows you to manage what are called "projects", which are used to easily restore saved i3 layouts (see Layout saving in i3) and extending i3's base functionality by allowing you to automatically start applications too.
- https://github.com/jamesofarrell/i3-swallow - used to swallow (send to the scratchpad) a terminal window after a blocking application is run in i3.
jq:
.[].num .[] | select(.visible and .focused).num+1) if ([(.[][] | select(.visible == true) | select(.focused == true).num)+1] as $desk | [.[][].num] as $array | $array | contains($desk)) == true then "one" else "two" end
TinyWM
- tinywm - a tiny window manager that I created as an exercise in minimalism. It is also maybe helpful in learning some of the very basics of creating a window manager. It is only around 50 lines of C. There is also a Python version using python-xlib. It lets you do four basic things: Move windows interactively with Alt+Button1 drag (left mouse button), Resize windows interactively with Alt+Button3 drag (right mouse button), Raise windows with Alt+F1 (not high on usability I know, but I needed a keybinding in there somewhere), Focus windows with the mouse pointer (X does this on its own) [3]
Notion
2010
Tiling, tabbed
Fork of Ion
Musca
2009
Bluetile
2010
- Bluetile is a tiling window manager for Linux, designed to integrate with the GNOME desktop environment. It provides both a traditional, stacking layout mode as well as tiling layouts where windows are arranged to use the entire screen without overlapping. Bluetile tries to make the tiling paradigm easily accessible to users coming from traditional window managers by drawing on known conventions and providing both mouse and keyboard access for all features. based on Xmonad
mcwm
2010
- http://hack.org/mc/hacks/mcwm - minimalist, floating window manager written using XCB, the X protocol C binding.The only window decoration is a thin border. All functions can be done with the keyboard, but moving, resizing, raising and lowering can also be done with the mouse.If you don't like the default key bindings, border width, et cetera, look in the config.h file, change and recompile.
catwm
2010
euclid-wm
2010
wind
2010
Wind is a window manager for the X Window System. It supports virtual desktops, optional Xft font rendering, and is pretty standards compliant. It provides overlapping window management with click-to-type focus. Unlike most window managers, Wind does not have the concept of minimized or hidden windows. Instead of hiding and unhiding windows, the virtual desktops abstraction makes it easy to group similar tasks and switch between these groups instantly using convenient key bindings. Standards compliancy is a prominent goal of the project, and Wind supports almost all mandatory parts of the ICCCM and the Extended Window Manager Hints specifications. Full compliancy is expected in the next major release.
marco
2011
Fork of metacity, used by MATE.
i5
2011
Tiling, fork of i3 with touchscreen features.
herbstluftwm
2011
- herbstluftwm is a manual tiling window manager for X11 using Xlib and Glib. Its main features can be described with: the layout is based on splitting frames into subframes which can be split again or can be filled with windows (similar to i3/ musca). tags (or workspaces or virtual desktops or …) can be added/removed at runtime. Each tag contains an own layout. exactly one tag is viewed on each monitor. The tags are monitor independent (similar to xmonad). it is configured at runtime via ipc calls from herbstclient. So the configuration file is just a script which is run on startup. (similar to wmii/ musca)
- YouTube: 28c3 LT Day 4: herbstluftwm
monsterwm
2011
- monsterwm is a minimal, lightweight, tiny but monstrous dynamic tiling window manager. It will try to stay as small as possible. Currently under 700 lines with the config file included. It provides a set of four different layout modes (vertical stack, bottom stack, grid and monocle/fullscreen) by default, and has floating mode support. Each virtual desktop has its own properties, unaffected by other desktops' settings. Finally monsterwm supports multiple monitors setups.
tilenol
2011
nwm
2011
- nwm - A dynamic window manager for X11 written with Node.js
Mer
2011
- http://merproject.org/ - Mer is an open, mobile-optimised, core distribution aimed at device manufacturers; powered by Qt/QML and HTML5 - openly developed, inclusive, and meritocratically governed. MeeGo based.
- https://sailfishos.org/wiki/Main_Page
dminiwm / snapwm
2011
Minimal and lightweight dynamic tiling window manager. Fork of catwm.
- https://github.com/moetunes/Nextwm - snapwm
wingo
2011
Floating and tiling, per monitor desktops. Written in Go.
no-wm
2011
Foo-Wm
Aura
TTWM / Alopex
2012
- https://github.com/TrilbyWhite/alopex
- https://wiki.archlinux.org/index.php/Alopex
- TTWM is a minimal tiling window manager combining concepts or elements from TinyWM, DWM, and i3wm. Inspiration has also been drawn from other great tilers like MonserWM. TinyTiler is currently under 650 lines of code. In contrast to other tilers, TinyTiler does not have modes nor does have window rules. TinyTiler has only two layouts: right stack and bottom stack. These choices were by design. TinyTiler instead provides two screen sections, the master and the stack. In TinyTiler only one stack window is visibile at a time, the others have tabs in the statusbar.
Qtile
2012
- Qtile is a full-featured, hackable tiling window manager written in Python.
Goomwwm
2012
- http://aerosuidae.net/goomwwm/ Goomwwm: Get out of my way, Window Manager!
bspwm
2012
- https://github.com/baskerville/bspwm bspwm is a tiling window manager where each window is represented as the leaf of a binary tree. It is controlled and configured via bspc. bspwm have only two sources of informations: the X events it receives and the messages it reads on a dedicated socket. Its configuration file is $XDG_CONFIG_HOME/bspwm/autostart. Keyboard and pointer bindings are defined through sxhkd. Example configuration files can be found in the examples directory.
Very nice and atomic.
bspc set focused_border_color '#ff0000' bspc set border_width '3px' bspc set window_gap 0 bspc set focus_follows_pointer true
- https://github.com/windelicato/dotfiles/wiki/bspwm-for-dummies
- http://yuri-rage.github.io/geekery/2015/01/26/bleeding-edge-bspwm/
- http://blog.east5th.co/2014/12/15/joining-the-tiling-wm-master-race/
- https://github.com/desyncr/bspwmrc/
- http://thedarnedestthing.com/bspwm
- http://thedarnedestthing.com/bspwm%20gym
- http://thedarnedestthing.com/bspwm%20framed
- https://github.com/Chrysostomus/bspwm-scripts - Various scripts for controlling bspwm. Copied and edited from various repos from github.
- YouTube: Full Demo: BSPWM on Debian 10 'Buster' - and playlist
Deep Space Window Manager
2012
Piwm
2013
- Piwm is a very small window manager written in Bash. Following are the 5 task it performs : 1) Ctrl + t : Opens xterm, 2) Ctrl + f : Makes current window full screen, 3) Alt + Mouseleft : Moves the window, 4) Alt + Mouseright : Rescales the window, 5) Ctrl + F1 : Refocus the window
Guile-WM
2013
FrankenWM
2014
dynamic tiling WM featuring the v-stack, b-stack, grid, fibonacci, dualstack, equal and monocle layouts out of the box. If you want to, you can add gaps between the windows as well. monsterwm-xcb fork, thus coming from monsterwm, thus coming from dminiwm, thus coming from catwm.
howm
2014
wtftw
2014
written in rust
adwm
2014
- https://github.com/bbidulock/adwm - originally a fork of Echinus which in turn was a fork of dwm, and borrows concepts from velox, awesome and spectrwm. What it includes is a full rewrite with significant updates and additions resulting in full EWMH (NetwM), WMH (WinWM), MWMH (CDE/Motif), ICCCM 2.0 compliance and support.
See also the XDE apps.
eggwm
2014
swm
2014
exwm
2015
- https://github.com/ch11ng/exwm - emacs based [6]
katriawm
2015
non-reparenting, tiling window manager with window decorations. It’s a learning project started in December 2015.
Lunchbox Window Manager
2015
- https://github.com/alysander/lunchboxwm - A tiling window manager for X11
aphelia
- https://github.com/vardy/aphelia - A light, single-file, minimalist window manager for X11. [7]
LeftWM
- LeftWM - a tiling window manager written in rust for stability and performance. The core of left is designed to do one thing and one thing well. Be a window manager. Because you probably want more than just a black screen LeftWM is built around the concept of theming. With themes you can choose between different bar / compositor / background / colors, whatever makes you happy. LeftWM has been built from the very beginning to support multiple screens and has been built around ultrawide monitors. You will see this with the default key bindings.
chamferwm
2018
- https://github.com/jaelpark/chamferwm - A tiling window manager with Vulkan based compositor.
Twindy
- Twindy - a window manager for linux (and possibly any system running an X server?) inspired byTracktion, the multitrack audio editor/sequencer for Windows and OS X. Twindy tries to apply Tracktion's workflow, where everything is on screen at once, to a window manager. As such, there are two panels, a main panel where new windows/programs open by default and may be selected using tabs, and a lower panel, which can only hold one window/program at a time.The idea is that you'll do your main work in the top panel, and use the bottom panel for a terminal, or a file manager you'd want to keep open.
berry
- https://github.com/JLErvin/berry - A healthy, bite-sized window manager written over the XLib Library
Xlambda
- https://github.com/kori/Xlambda
- YouTube: Demo of Xlambda V1 - [8]
karuiwm
- https://gitlab.com/ayekat/karuiwm - a lightweight, dynamically tiling window manager for X.It is based on dwm and inspired by xmonad.
Other tiling
See also Wayland