Tiling window manager
In computing, a tiling window manager is a window manager with an organization of the screen into mutually non-overlapping frames, as opposed to the more popular approach of coordinate-based stacking of overlapping objects (windows) that tries to fully emulate the desktop metaphor.
The first Xerox Star system (released in 1981) tiled application windows, but allowed dialogs and property windows to overlap. Later, Xerox PARC also developed CEDAR (released in 1982), the first windowing system using a tiled window manager.
Next in 1983 came Andrew WM, a complete tiled windowing system later replaced by X11. Microsoft's Windows 1.0 (released in 1985) also used tiling (see sections below). In 1986 came Digital Research's GEM 2.0, a windowing system for the CP/M which used tiling by default. One of the early (created in 1988) tiling WMs was Siemens' RTL, up to today a textbook example because of its algorithms of automated window scaling, placement and arrangement, and (de)iconification. RTL ran on X11R2 and R3, mainly on the "native" Siemens systems, e.g., SINIX. Its features are described by its promotional video. The Andrew Project (AP or tAP) was a desktop client system (like early GNOME) for X with a tiling and overlapping window manager.
Tiling window managers
To tile windows, the user selects them in the taskbar and uses the context menu choice Tile Vertically or Tile Horizontally. However, the wording of these options is misleading. Choosing Tile Vertically will cause the windows to tile horizontally but take on a vertical shape, while choosing Tile Horizontally will cause the windows to tile vertically but take on a horizontal shape. These options were later changed in Windows Vista to Show Windows Side by Side and Show Windows Stacked, respectively. Windows 7 adds the ability to drag windows to either side of the screen to create a simple side-by-side tiled layout, or to the top of the screen to maximize.
The first version (Windows 1.0) featured a tiling window manager, partly because of litigation by Apple claiming ownership of the overlapping window desktop metaphor. But due to complaints, the next version (Windows 2.0) followed the desktop metaphor. All later versions of the operating system stuck to this approach as the default behaviour.
X Window System
In the X Window System, the window manager is a separate program. X itself enforces no specific window management approach and remains usable even without any window manager. Current X protocol version X11 explicitly mentions the possibility of tiling window managers. The Siemens RTL Tiled Window Manager (released in 1988) was the first to implement automatic placement/sizing strategies. Another tiling window manager from this period was the Cambridge Window Manager developed by IBM's Academic Information System group.
List of tiling window managers for X
- awesome — a dwm derivative with window tiling, floating and tagging, written in C and configurable and extensible in Lua. It was the first WM to be ported from Xlib to XCB, and supports D-Bus, pango, XRandR, Xinerama.
- bspwm — represents windows as the leaves of a full binary tree. Like many other window managers, bspwm is written in C and has a hybrid management style.
- dwm — allows for switching tiling layouts by clicking a textual ascii art 'icon' in the status bar. The default is a main area + stacking area arrangement, represented by a = character glyph. Other standard layouts are a single-window "monocle" mode represented by an M and a non-tiling floating layout that permits windows to be moved and resized, represented by a fish-like ><>. Third party patches exist to add a golden section-based Fibonacci layout, horizontal and vertical row-based tiling or a grid layout. The keyboard-driven menu utility "dmenu", developed for use with dwm, is used with other tiling WMs such as xmonad, and sometimes also with other "light-weight" software like Openbox and uzbl.
- i3 — a built-from-scratch window manager, based on wmii. It has vi-like keybindings, and treats extra monitors as extra workspaces, meaning that windows can be moved between monitors easily. Allows vertical and horizontal splits, and parent containers. It can be controlled entirely from the keyboard, but a mouse can also be used.
- Larswm — implements a form of dynamic tiling: the display is vertically split in two regions (tracks). The left track is filled with a single window. The right track contains all other windows stacked on top of each other.
- Ion — combines tiling with a tabbing interface: the display is manually split in non-overlapping regions (frames). Each frame can contain one or more windows. Only one of these windows is visible and fills the entire frame.
- Qtile — a tiling window manager written, configurable and extensible in Python.
- Ratpoison — A keyboard-driven GNU Screen for X.
- Stumpwm — a keyboard driven offshoot of ratpoison supporting multiple displays (e.g. xrandr) that can be customized on the fly in Common Lisp. It uses Emacs-compatible keybindings by default.
- wmii — developed in prior to dwm, by the same author. Development has remained active.
- xmonad — an extensible WM written in Haskell, which was both influenced by and has since influenced dwm.
- Compiz — a compositing window manager available for usage without leaving familiar interfaces such as the ones from GNOME, KDE or Mate. One of its plugins (called Grid) allows the user to configure several keybindings to move windows to any corner, with five different lengths. There are also options to configure default placement for specific windows. The plugins can be configured through the Compiz Config Settings Manager / CCSM.
- The Oberon operating and programming system, from ETH Zurich includes a tiling window manager.
- The Acme programmer's editor / windowing system / shell program in Plan 9 is a tiling window manager.
- The Samsung Galaxy S3, S4, Note II and Note 3 smartphones have a multi-window feature that allows the user to tile two apps on the device's screen.
Although tiling is not the default mode of window managers on any widely used platform, most applications already display multiple functions in a similar manner. Examples include email clients, IDEs, web browsers, and contextual help in Microsoft Office. The main windows of these applications are divided into "panes" for the various displays. The panes are usually separated by a draggable divider to allow resizing. Paned windows are a common way to implement a master–detail interface.
Developed since the 1970s, the Emacs text editor contains one of the earliest implementations of tiling. In addition, HTML frames can be seen as a markup language-based implementation of tiling. The tiling window manager extends this usefulness beyond multiple functions within an application, to multiple applications within a desktop. The tabbed document interface can be a useful adjunct to tiling, as it avoids having multiple window tiles on screen for the same function.
- Xerox Star
- Ten Years of Window Systems — A Retrospective View
- Window tiling history
- "baskerville/bspwm · GitHub". Retrieved 22 September 2013.
- Arch Linux Magazine Team (January 2010). "Software Review: 2009 LnF Awards". Arch Linux Magazine. Retrieved 8 March 2010.
- "100 open source gems - part 2". TuxRadar. Future Publishing. 21 May 2009. Retrieved 3 March 2010.
- Vervloesem, Koen (15 July 2009). "Uzbl: a browser following the UNIX philosophy". LWN.net. Eklektix, Inc. Retrieved 3 March 2010.