Jump to content

Tiling window manager: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Improved the Way Cooler entry
m remove no longer maintained wms, rename chunkwm to yubai per author.
Line 45: Line 45:


====List of tiling window managers for X{{Anchor|X-tile-anchor}}====
====List of tiling window managers for X{{Anchor|X-tile-anchor}}====
* [[chunkwm]] - a tiling window manager for macOS that uses a plugin architecture, successor to kwm. It represents windows as the leaves of a binary tree, and supports binary space partitioned, monocle and floating desktops.
* [[yabai]] - a tiling window manager for macOS that uses a plugin architecture, successor to kwm. It represents windows as the leaves of a binary tree, and supports binary space partitioned, monocle and floating desktops.
* [[Awesome (window manager)|awesome]] — a dwm derivative with window tiling, floating and tagging, written in C and configurable and extensible in [[Lua (programming language)|Lua]]. It was the first WM to be ported from [[Xlib]] to [[XCB]], and supports [[D-Bus]], [[pango]], [[XRandR]], [[Xinerama]].
* [[Awesome (window manager)|awesome]] — a dwm derivative with window tiling, floating and tagging, written in C and configurable and extensible in [[Lua (programming language)|Lua]]. It was the first WM to be ported from [[Xlib]] to [[XCB]], and supports [[D-Bus]], [[pango]], [[XRandR]], [[Xinerama]].
* [[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 [[patch (Unix)|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,<ref name="alm201001">{{cite web|url=http://www.archlinux.org/static/magazine/2010/ALM-2010-Jan.html|title=Software Review: 2009 LnF Awards|author=Arch Linux Magazine Team|date=January 2010|work=Arch Linux Magazine|accessdate=8 March 2010|archive-url=https://web.archive.org/web/20100216154649/http://www.archlinux.org/static/magazine/2010/ALM-2010-Jan.html|archive-date=2010-02-16|url-status=live}}</ref> is used with other tiling WMs such as [[xmonad]],<ref>{{cite web
* [[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 [[patch (Unix)|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,<ref name="alm201001">{{cite web|url=http://www.archlinux.org/static/magazine/2010/ALM-2010-Jan.html|title=Software Review: 2009 LnF Awards|author=Arch Linux Magazine Team|date=January 2010|work=Arch Linux Magazine|accessdate=8 March 2010|archive-url=https://web.archive.org/web/20100216154649/http://www.archlinux.org/static/magazine/2010/ALM-2010-Jan.html|archive-date=2010-02-16|url-status=live}}</ref> is used with other tiling WMs such as [[xmonad]],<ref>{{cite web
Line 94: Line 94:
* [[Compiz]] — a [[compositing window manager]] available for usage without leaving familiar interfaces such as the ones from [[GNOME]], [[KDE]] or [[MATE (software)|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.
* [[Compiz]] — a [[compositing window manager]] available for usage without leaving familiar interfaces such as the ones from [[GNOME]], [[KDE]] or [[MATE (software)|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.
* [[spectrwm]] — a small dynamic tiling and reparenting 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 is written by hackers for hackers and it strives to be small, compact and fast. Formerly called "scrotwm"<ref name="scrotwm-rename">{{Cite web|url=https://github.com/conformal/spectrwm/commit/e83f3b790887174fe8b8fd6b3c98172b59ff9305|title=rename scrotwm to spectrwm|access-date=2019-05-25|date=2012-02-15|website=github.com}}</ref>.
* [[spectrwm]] — a small dynamic tiling and reparenting 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 is written by hackers for hackers and it strives to be small, compact and fast. Formerly called "scrotwm"<ref name="scrotwm-rename">{{Cite web|url=https://github.com/conformal/spectrwm/commit/e83f3b790887174fe8b8fd6b3c98172b59ff9305|title=rename scrotwm to spectrwm|access-date=2019-05-25|date=2012-02-15|website=github.com}}</ref>.
*[[bspwm]] — a small tiling window manager that, similarly to chunkwm, represents windows as the leaves of a full binary tree. It does not handle key-binds on its own, requiring another program (e.g. sxhkd) to translate input to X events.
*[[bspwm]] — a small tiling window manager that, similarly to yabai, represents windows as the leaves of a full binary tree. It does not handle key-binds on its own, requiring another program (e.g. sxhkd) to translate input to X events.
*[[herbstluftwm]] — a manual tiling window manager (similar to [[I3 (window manager)|i3]] or [[Sway (window manager)|Sway]]) that uses the concept of monitor independent tags as workspaces. Exactly one tag can be viewed on a monitor, with each tag containing its own layout. Like i3 and Sway, herbstluftwm is configured at runtime via [[Inter-process communication|IPC]] calls from herbstclient.<ref>{{Cite web|url=https://herbstluftwm.org/|title=herbstluftwm|website=herbstluftwm.org|access-date=2019-08-12}}</ref>
*[[herbstluftwm]] — a manual tiling window manager (similar to [[I3 (window manager)|i3]] or [[Sway (window manager)|Sway]]) that uses the concept of monitor independent tags as workspaces. Exactly one tag can be viewed on a monitor, with each tag containing its own layout. Like i3 and Sway, herbstluftwm is configured at runtime via [[Inter-process communication|IPC]] calls from herbstclient.<ref>{{Cite web|url=https://herbstluftwm.org/|title=herbstluftwm|website=herbstluftwm.org|access-date=2019-08-12}}</ref>


Line 120: Line 120:


====List of tiling window managers for Wayland====
====List of tiling window managers for Wayland====
* ADWC — First tiling composing manager to support Wayland.<ref>{{Cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=MTA5MTA |title=ADWC: A Tiling Window Manager For Wayland |access-date=2017-08-14 |archive-url=https://web.archive.org/web/20170814175208/https://www.phoronix.com/scan.php?page=news_item&px=MTA5MTA |archive-date=2017-08-14 |url-status=live }}</ref> Development seems to have been abandoned.
*[[Sway (window manager)|Sway]] — Sway is "a drop-in replacement for the [[I3 (window manager)|i3 window manager]], but for [[Wayland (display server protocol)|Wayland]] instead of [[X Window System|X11]]. It works with your existing i3 configuration and supports most of i3's features, and a few extras".<ref>{{Cite web |url=http://swaywm.org/ |title=SwayWM |access-date=2017-10-13 |archive-url=https://web.archive.org/web/20171010074315/http://swaywm.org/ |archive-date=2017-10-10 |url-status=live }}</ref>
*[[Sway (window manager)|Sway]] — Sway is "a drop-in replacement for the [[I3 (window manager)|i3 window manager]], but for [[Wayland (display server protocol)|Wayland]] instead of [[X Window System|X11]]. It works with your existing i3 configuration and supports most of i3's features, and a few extras".<ref>{{Cite web |url=http://swaywm.org/ |title=SwayWM |access-date=2017-10-13 |archive-url=https://web.archive.org/web/20171010074315/http://swaywm.org/ |archive-date=2017-10-10 |url-status=live }}</ref>
*[http://way-cooler.org/ Way Cooler] — Way Cooler is a Wayland compositor for the Awesome window manager. It is written in [[C (programming language)|C]]<ref>{{Cite web|url=http://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c.html|title=Giving up on wlroots-rs|website=way-cooler.org|access-date=2019-11-24}}</ref><ref>{{Cite web|url=https://github.com/way-cooler/way-cooler|title=way-cooler/way-cooler|website=GitHub|language=en|access-date=2019-11-24}}</ref> and, like Awesome, configurable using Lua, and extendable with [[D-Bus]].<ref>{{Cite web |url=http://way-cooler.org/ |title=way-cooler.org |access-date=2017-08-14 |archive-url=https://web.archive.org/web/20170804162843/http://way-cooler.org/ |archive-date=2017-08-04 |url-status=live }}</ref>
*[http://way-cooler.org/ Way Cooler] — Way Cooler is a Wayland compositor for the Awesome window manager. It is written in [[C (programming language)|C]]<ref>{{Cite web|url=http://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c.html|title=Giving up on wlroots-rs|website=way-cooler.org|access-date=2019-11-24}}</ref><ref>{{Cite web|url=https://github.com/way-cooler/way-cooler|title=way-cooler/way-cooler|website=GitHub|language=en|access-date=2019-11-24}}</ref> and, like Awesome, configurable using Lua, and extendable with [[D-Bus]].<ref>{{Cite web |url=http://way-cooler.org/ |title=way-cooler.org |access-date=2017-08-14 |archive-url=https://web.archive.org/web/20170804162843/http://way-cooler.org/ |archive-date=2017-08-04 |url-status=live }}</ref>

Revision as of 15:29, 23 December 2019

The dwm window manager with the screen divided into four tiles.

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.

History

Xerox PARC

The first Xerox Star system (released in 1981) tiled application windows, but allowed dialogs and property windows to overlap.[1] Later, Xerox PARC also developed CEDAR[2] (released in 1982), the first windowing system using a tiled window manager.

Various vendors

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.[3] 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.[4][5] The Andrew Project (AP or tAP) was a desktop client system (like early GNOME) for X with a tiling and overlapping window manager.

MacOS X 10.11 El Capitan released on September 2015 introduces new window management features such as creating a full-screen split view limited to two app windows side-by-side in full screen by holding down the full-screen button in the upper-left corner of a window.[6]

Tiling window managers

Microsoft Windows

Tile Vertically or Show Windows Side by Side
Tile Horizontally or Show Windows Stacked

The built-in Microsoft Windows window manager has, since Windows 95, followed the traditional stacking approach by default. It can also act as a rudimentary tiling window manager.

To tile windows, the user selects them in the taskbar and uses the context menu choice Tile Vertically or Tile Horizontally. 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 Windows 8 GUI introduced a new basic tiling window manager. In Windows 10, users are able to tile Windows by quarters.

History

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.

List of tiling window managers for Windows

  • bug.n – open source, configurable tiling window manager built as an AutoHotKey script and licensed under the GNU GPL.[7]
  • MaxTo — customizable grid, global hotkeys. Works with elevated applications, 32-bit and 64-bit applications, and multiple monitors.[8]
  • Stack – customizable grid (XAML), global hotkeys and/or middle mouse button. Supports HiDPI and multiple monitors.[9][10]
  • Plumb — lightweight tiling manager with support for multiple versions of Windows. Supports HiDPI monitors, keyboard hotkeys and customization of hotkeys (XAML).[11]

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.

In 2000, both larswm and Ion released a first version.

List of tiling window managers for X

  • yabai - a tiling window manager for macOS that uses a plugin architecture, successor to kwm. It represents windows as the leaves of a binary tree, and supports binary space partitioned, monocle and floating desktops.
  • 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.
  • 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,[12] is used with other tiling WMs such as xmonad,[13] and sometimes also with other "light-weight" software like Openbox[12] and uzbl.[14]
  • 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.
  • 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.
  • LeftWM — a tiling window manager based on theming and supporting large monitors such as ultrawides.[15]
  • Qtile — a tiling window manager written, configurable and extensible in Python.[16]
  • 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
Initial release1 June 2005
Stable release
3.9.2 / 10 June 2010
Websitecode.google.com/p/wmii/
  • wmii (window manager improved²) supports tiling and stacking window management with extended keyboard, mouse, and filesystem based remote control,[17] replacing the workspace paradigm with a new tagging approach.[18] The default configuration uses keystrokes derived from those of the vi text editor. The window manager offers extensive configuration through a virtual filesystem using the 9P filesystem protocol similar to that offered by Plan 9 from Bell Labs.[17] Every window, tag, and column is represented in the virtual filesystem, and windows are controlled by manipulating their file objects (in fact, the configuration file is just a script interfacing the virtual files). This RPC system allows many different configuration styles, including those provided in the base distribution in plan9port and bourne shell. The latest release 3.9 also includes configurations in Python and Ruby.[19] The latest release supported Xinerama, shipping with its own keyboard-based menu program called wimenu, featuring history and programmable completion.[19][20][21][22]
  • 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.
  • spectrwm — a small dynamic tiling and reparenting 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 is written by hackers for hackers and it strives to be small, compact and fast. Formerly called "scrotwm"[23].
  • bspwm — a small tiling window manager that, similarly to yabai, represents windows as the leaves of a full binary tree. It does not handle key-binds on its own, requiring another program (e.g. sxhkd) to translate input to X events.
  • herbstluftwm — a manual tiling window manager (similar to i3 or Sway) that uses the concept of monitor independent tags as workspaces. Exactly one tag can be viewed on a monitor, with each tag containing its own layout. Like i3 and Sway, herbstluftwm is configured at runtime via IPC calls from herbstclient.[24]

Wayland

Wayland is a new windowing system with the aim of replacing the X Window System. There are only a few tiling managers that support Wayland natively.

List of tiling window managers for Wayland

  • Sway — Sway is "a drop-in replacement for the i3 window manager, but for Wayland instead of X11. It works with your existing i3 configuration and supports most of i3's features, and a few extras".[25]
  • Way Cooler — Way Cooler is a Wayland compositor for the Awesome window manager. It is written in C[26][27] and, like Awesome, configurable using Lua, and extendable with D-Bus.[28]

Others

  • 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.

Tiling applications

GNU Emacs showing an example of tiling within an application window

Although tiling is not the default mode of window managers on any widely used platform, most applications already display multiple functions internally 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.

See also

References

  1. ^ "Xerox Star". Archived from the original on 2011-07-18. Retrieved 2007-04-14.
  2. ^ "Ten Years of Window Systems — A Retrospective View". Archived from the original on 2010-03-16. Retrieved 2010-12-21.
  3. ^ Window tiling history
  4. ^ "video". Archived from the original on 2010-12-22. Retrieved 2010-12-22.
  5. ^ "The First Tiling Window Manager - Siemens RTL Tiled Window Manager (released in 1988)".{{cite web}}: CS1 maint: url-status (link)
  6. ^ https://www.apple.com/newsroom/2015/06/08Apple-Announces-OS-X-El-Capitan-with-Refined-Experience-Improved-Performance/
  7. ^ "bug.n – Tiling Window Manager for Windows". Retrieved 2019-03-02.
  8. ^ "MaxTo - The window manager you didn't know you missed]". Archived from the original on 2018-11-17. Retrieved 2018-11-21. {{cite web}}: |archive-date= / |archive-url= timestamp mismatch; 2018-11-13 suggested (help)
  9. ^ "Stack WM: Windows Store". Archived from the original on 2017-12-10. Retrieved 2017-12-09.
  10. ^ "Stack on Lost Tech LLC website". Archived from the original on 2018-01-11. Retrieved 2017-12-09.
  11. ^ "Palatial Software Website". 2019-01-10. Retrieved 2019-01-10.
  12. ^ a b Arch Linux Magazine Team (January 2010). "Software Review: 2009 LnF Awards". Arch Linux Magazine. Archived from the original on 2010-02-16. Retrieved 8 March 2010.
  13. ^ "100 open source gems - part 2". TuxRadar. Future Publishing. 21 May 2009. Archived from the original on 2010-01-06. Retrieved 3 March 2010.
  14. ^ Vervloesem, Koen (15 July 2009). "Uzbl: a browser following the UNIX philosophy". LWN.net. Eklektix, Inc. Archived from the original on 2009-11-30. Retrieved 3 March 2010.
  15. ^ GitHub - leftwm/leftwm: LeftWM: A tiling window manager for Adventurers., leftwm, 2019-04-04, retrieved 2019-04-05
  16. ^ Verna, Clément (27 September 2018). "5 cool tiling window managers". Fedora Magazine. Qtile. Retrieved 20 November 2018.
  17. ^ a b "wmii - Window Manager Improved 2". Wmii.suckless.org. Archived from the original on 2011-12-31. Retrieved 2013-07-13.
  18. ^ Komis, Antonis (April 2013). "Windows Migration: Desktop Environments & Window Managers". PCLinuxOS. Tiling and Dynamic Tiling Window Managers - wmii. Archived from the original on 24 October 2016.
  19. ^ a b "suckless.org git repositories". Hg.suckless.org. Archived from the original on 2011-07-28. Retrieved 2013-07-13.
  20. ^ "Light and speedy. WMI and the reincarnation of the keyboard" (PDF). No. 54. Archived from the original (PDF) on 24 February 2012. {{cite magazine}}: Cite magazine requires |magazine= (help)
  21. ^ Golde, Nico (March 2006). "No wimps. A look at the Wmii Window Manager" (PDF). Linux Magazine. No. 64. Archived (PDF) from the original on 2015-10-28. Retrieved 2018-10-01.
  22. ^ Saunders, Mike (March 2008). "Lightweight window managers". Linux Format. No. 103. wmii.
  23. ^ "rename scrotwm to spectrwm". github.com. 2012-02-15. Retrieved 2019-05-25.
  24. ^ "herbstluftwm". herbstluftwm.org. Retrieved 2019-08-12.
  25. ^ "SwayWM". Archived from the original on 2017-10-10. Retrieved 2017-10-13.
  26. ^ "Giving up on wlroots-rs". way-cooler.org. Retrieved 2019-11-24.
  27. ^ "way-cooler/way-cooler". GitHub. Retrieved 2019-11-24.
  28. ^ "way-cooler.org". Archived from the original on 2017-08-04. Retrieved 2017-08-14.