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.
- 1 History
- 2 Tiling window managers
- 3 Tiling applications
- 4 Automatic program launch
- 5 See also
- 6 References
- 7 External links
Although the first bitmapped graphical user interface used a different "desktop" metaphor (using Smalltalk, created at Xerox PARC), tiling window managers followed soon. 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.
The Windows 8 UI introduced a new basic tiling window manager.
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.
There are third-party programs that add more sophisticated tiling functionality to Windows, similar to what is available in tiling window managers used in other operating systems:
- SplitView - Tiles windows using caption buttons and keyboard shortcuts, optionally maximizing windows to a screen part (commercial)
- Mosaico - Tiles windows using "drag&go" feature or keyboard shortcuts. Saves windows position and size in a snapshot and can restore up to 8 snapshots (commercial)
- WindowSizer - Tiles windows (shareware)
- WinSplit-Revolution - Tiles windows using keyboard shortcuts (freeware)
- HashTWM - Tiling window manager with automatic tiling (MIT/X11)
- GridMove - Tiles and arranges windows on sophisticated layouts with hotkeys and multi-monitor support (CC A/NC/SA 3)
- bug.n - Amongst other flavours is a dynamic, tiling window manager, which tries to clone the functionality of dwm (see list of X window managers) (GPL).
- Windawesome - A highly customizable dynamic window manager written in C# (GPL v2).
- MaxTo - Tiles windows on user-defined grid by intercepting windows that are maximized or using hotkeys. Supports multi-monitor setups (shareware)
- Twinsplay - Tiles windows using keyboard shortcuts (trial/closed source)
- Plumb - Automatically aligns windows for you while you work (freeware)
- Divvy - Commercial.
- Python-windows-tiler - Very basic tiler (LGPL)
X Window System
In the X Window System, the window manager is a separate program. X itself enforces no specific window management approach and 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.
- Bluetile - based on xmonad: "I think of xmonad more as a library for writing tiling window managers. The default installation provides a minimal tiling window manager (the standard configuration), but you are really expected to "write" (configure) your own ... from the building blocks. ... The Bluetile project ... is now really just another xmonad configuration. A configuration that focuses on making the tiling paradigm easily accessible to users coming from traditional window managers."
- 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 Larswm-like main area + stacking area arrangement, represented by a = character glyph. There is also a non-tiling floating layout similar to *evilwm which permits windows to be moved and resized, represented by a fish-like ><>. Third party patches exist to add a golden section-based Fibonacci layout, a grid layout, a gapless grid layout, and a horizontal stacking arrangement. The keyboard-driven menu utility "dmenu", developed for use with dwm, is used with other tiling WMs like xmonad, and sometimes also with other "light-weight" software like Openbox and uzbl.
- Echinus - "a window manager for X in spirit of dwm." Like dwm it supports managing windows in floating, tiled and maximized layouts. All the configuration is made via config file in Xresources format, so it is not necessary to recompile echinus every time you change something. Echinus supports a small subset of EWMH to be compatible with external panels and pagers. It draws a border around windows and also an optional title bar. The goal of development is a small, fast window manager without features not strictly related to window management, e.g. menus, panels, etc.
- euclid-wm - a minimalist, tiling window manager that aims to combine the ease of use of automatic tiling with the flexibility of manual tiling. It also has a per workspace "stack" for minimized windows. It uses vimlike key-bindings by default.
- Grid plugin - adds keyboard tiling shortcuts and layouts to the Compiz compositing window manager.
- herbstluftwm - designed to be fully customizable through the use of its "herbstclient" utility and Bash scripts.
- 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.
- 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.
- Ion2 - a keyboard friendly window manager.
- kahakai - a dual mode WM offering both tiling and stacking capabilities.
- 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.
- Lucca WM
- Lunchbox - a dynamic tiling window manager for X11. It allows windows to be resized by pushing them against the edge of the screen. In a step away from the desktop metaphor, all programs are given a separate workspace and unique arrangement of windows and any window can become the desktop. Lunchbox offers scalable tab replacement called the Title Menu which allows any window to be swapped with any other window that fits, allowing very fine-grained control over the layout of the screen. Finally, although many windows default to tiling, any window can be changed to a Floating mode and dialog boxes default to it.
- Matchbox - tiles system trays and a "single" window, targeting embedded and mobile environments where multiple tiled windows don't fit well. It does not permit overlapping main windows (although, like many tiling window managers, dialog windows are "special", with stacked management), but it accomplishes this by showing only one window, rather than literally tiling of multiple windows. This can be considered as a single-tile layout.
- Musca - features manual tiling, multiple screen support, virtual desktops and mouse or keyboard navigation.
- plpwm - a configuration of the plwm window manager toolkit that provides tiling.
- Qtile - written and configured in Python.
- Ratpoison - A keyboard-driven GNU Screen for X.
- Spectrwm - minimalist tiling window manager with dynamic xrandr & xinerama support, previously known as scrotwm.
- shellshape - tiling window manager extension for GNOME Shell, inspired by bluetile.
- ShellTile - tiling window manager extension for GNOME Shell, started from the code of shellshape, allows manual arrangement of windows using mouse and keyboard.
- Stumpwm - a keyboard driven tiling window manager supporting multiple displays (e.g. xrandr) that can be customized on the fly in Common Lisp.
- Tritium window manager
- 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.
Third party tiling applications on Xorg
- Tile is a small command allowing tiling windows under a floating window manager.
- stiler (formerly known as Poor man's Tiling Window manager) is a simple Python script which does tiling on any window manager.
- PyTyle is a manual tiling manager that can slide into any EWMH compliant window manager.
- QuickTile and gridmgr are X11 analogues to WinSplit for people who don't want to use the Compiz Grid plugin.
- Python Window Organizer (PyWO) is a Python application that combines features of Compiz Grid, Put, and Maximumize, allowing custom grid layouts. Works with EWMH compliant window managers.
- Ctrlwm is a tool for automatic window position in various layouts, also processing mouse screen edge/corner actions.
- WinWrangler is a tool for automatic window position in a tiling layout or a master-window layout, and can also respond to hotkeys for switching between windows spatially.
- wumwum is a window manager manager. it can turn emwh compliant window managers into a tiling window manager while retaining all initial functionalities. It is written in Perl and C.
- Bonnye is a dynamic tiler, inspired by larswm's two layers : a tiled layer is managed by bonnye, while a floating layer is managed by an EWMH compliant window manager.
- 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.
- Omero, part of the Plan 9 operating system developed at URJ Madrid also tiles windows by default.
- ShiftIt is an open source Quartz/Carbon hotkey based tiling window application for Mac OS X 10.5 and higher.
- 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, "sidebars" in web browsers, and contextual help in Microsoft Office. 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.
Automatic program launch
Tiling window managers are often programmatic in nature, for example the Ion window manager includes a Lua scripting engine for both configuration and startup functions, in additional to modular function libraries. Where as a conventional coordinate based stacked desktop metaphor environment (such as Windows) has a startup folder with applications to launch, programmable tiling window managers can specify (with a default window property) which tiles or frames an application should appear in.
Common uses for this are setting up a development environment with IDE and terminal windows, or an image, video, or audio editing environment with multiple screens.
- Xerox Star
- Ten Years of Window Systems - A Retrospective View
- Window tiling history
- "Bluetile FAQ". Retrieved 8 April 2010.
- "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.
- "scrotwm renamed to spectrwm". Retrieved 28 September 2012.