Original author(s) | Spencer Janssen, Don Stewart, Jason Creighton |
---|---|
Initial release | March 6, 2007 [1] |
Stable release | |
Repository | |
Written in | Haskell |
Operating system | POSIX compatible |
Platform | Cross-platform; requires an X Window System and GHC |
Size | 56 KB (source code) [3] |
Available in | English |
Type | Window manager |
License | BSD 3-clause |
Website | xmonad |
xmonad is a dynamic window manager (tiling) for the X Window System, noted for being written in the functional programming language Haskell. [4] [5]
Begun in March 2007, version 0.1 was announced [6] in April 2007 as 500 lines of Haskell [7] (which have since grown to 2000 lines). xmonad is a tiling window manager—akin to dwm, larswm, and StumpWM. It arranges windows in a non-overlapping pattern, and enables managing windows without using the mouse. xmonad is packaged and distributed on a wide range of Unix-like operating systems, such as a large number of Linux distributions, and Berkeley Software Distribution (BSD) systems.
While originally a clone of dwm (derivative in areas such as default keybindings), xmonad now supports features not available to dwm users [8] [9] such as per-workspace layout, tiling reflection, state preservation, layout mirroring, GNOME support and per-screen status bars; it can be customised by modifying an external configuration file and 'reloaded' while running. [10] xmonad features have begun to influence other tiling window managers: dwm has borrowed "urgency hooks" from xmonad, [11] has also included Xinerama support (for multihead displays) with release 4.8, and patches exist to reimplement xmonad's Fibonacci layout. [12]
In 2023 the man page stated:
By utilising the expressivity of a modern functional language with a rich static type system, xmonad provides a complete, featureful window manager [...], with an emphasis on correctness and robustness. Internal properties of the window manager are checked using a combination of static guarantees provided by the type system, and type-based automated testing. A benefit of this is that the code is simple to understand, and easy to modify. [13]
Since xmonad's inception, when its small code size of 500 lines of code was advertised, it has grown to ca. 2000 lines in 2023.
Extensions to the core system, including emulation of other window managers, and unusual layout algorithms, such as window tiling based on the Fibonacci spiral—have been implemented by the active community [14] and are available as a library. [15]
Along with obviating the need for a mouse, [16] the xmonad developers make heavy use of semi-formal methods and program derivation for improving reliability and enabling a total line of code count less than 1200, as of version 0.7; window manager properties (such as the behavior of window focus) are checked through use of QuickCheck. [17] This emphasis makes xmonad unusual in a number of ways; besides being the first window manager written in Haskell, it is also the first to use the zipper data structure for automatically managing focus, and its core has been proven to be safe with respect to pattern matches, [18] contributing further to reliability. The developers write:
xmonad is a tiling window manager for the X Window system, implemented, configured and dynamically extensible in Haskell. This demonstration presents the case that software dominated by side effects can be developed with the precision and efficiency we expect from Haskell by utilising purely functional data structures, an expressive type system, extended static checking and property-based testing. In addition, we describe the use of Haskell as an application configuration and extension language. [19]
The code is separated into side-effect free code, and a thin wrapper for the side-effects. [20] According to Alejandro Serrano Mena, there are two ways of implementing domain-specific languages for actions in Haskell applications and libraries: "developing a combinator library" or "rolling your own monad", with xmonad being a successful example of the latter. [21] xmonad was regarded as one of the most well known Haskell projects in a 2013 functional programming book. [5]
Linux Magazine included xmonad in a list of "My Top Resources of 2009". [22] In 2012, How-To Geek described xmonad as having good, but complex, ability to be configured, [23] and it was included in a 2013 list of eight desktop environments for Linux. [24] Lifehacker wrote that the basic operations of xmonads user interface can be taught using a small set of instructions. [25] A high level of customisation and speed were noted by Network World, [4] and in MakeUseOf xmonad was reviewed positively compared to Openbox. [26]
In 2016 Ars Technica said xmonad and Awesome had more advanced tiling ability than Cinnamon. [27] In 2017 it was described as powerful, with application as a windows manager for big data, [28] while in an article on opensource.com on the other hand, dwm was chosen over xmonad. [29] A TechRadar review of the "Best Linux desktop of 2018" said "If there's one desktop environment that stands out from all the others we have here, it's this one." [30]
Due to the small number of lines of code of the Xmonad application, the use of the purely functional programming language Haskell, and recorded use of a rigorous testing procedure it is sometimes used as a baseline application in other research projects. This has included re-implementation of xmonad using the Coq proof assistant, [31] a determination xmonad is an imperative program, [32] and studies of package management relating to the NixOS linux distribution. [33]
Mandriva Linux is a discontinued Linux distribution developed by Mandriva S.A.
In computing, a desktop environment (DE) is an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system that share a common graphical user interface (GUI), sometimes described as a graphical shell. The desktop environment was seen mostly on personal computers until the rise of mobile computing. Desktop GUIs help the user to easily access and edit files, while they usually do not provide access to all of the features found in the underlying operating system. Instead, the traditional command-line interface (CLI) is still used when full control over the operating system is required.
An X window manager is a window manager that runs on top of the X Window System, a windowing system mainly used on Unix-like systems.
ReactOS is a free and open-source operating system for amd64/i686 personal computers intended to be binary-compatible with computer programs and device drivers developed for Windows Server 2003 and later versions of Microsoft Windows. ReactOS has been noted as a potential open-source drop-in replacement for Windows and for its information on undocumented Windows APIs.
freedesktop.org (fd.o), formerly X Desktop Group (XDG), is a project to work on interoperability and shared base technology for free-software desktop environments for the X Window System (X11) and Wayland on Linux and other Unix-like operating systems. Although freedesktop.org produces specifications for interoperability, it is not a formal standards body.
ratpoison is a tiling window manager for the X Window System primarily developed by Shawn Betts. The user interface and much of their functionality are inspired by the GNU Screen terminal multiplexer. While ratpoison is written in C, Betts' StumpWM re-implements a similar window manager in Common Lisp.
PCLinuxOS, often shortened to PCLOS, is a rolling release Linux distribution for x86-64 computers, with KDE Plasma, MATE, and XFCE as its default user interfaces. It is a primarily FOSS operating system for personal computers aimed at ease of use.
A window manager is system software that controls the placement and appearance of windows within a windowing system in a graphical user interface. Most window managers are designed to help provide a desktop environment. They work in conjunction with the underlying graphical system that provides required functionality—support for graphics hardware, pointing devices, and a keyboard—and are often written and created using a widget toolkit.
Xgl is an obsolete display server implementation supporting the X Window System protocol designed to take advantage of modern graphics cards via their OpenGL drivers, layered on top of OpenGL. It supports hardware acceleration of all X, OpenGL and XVideo applications and graphical effects by a compositing window manager such as Compiz or Beryl. The project was started by David Reveman of Novell and first released on January 2, 2006. It was removed from the X.org server in favor of AIGLX on June 12, 2008.
IRIX Interactive Desktop is a discontinued desktop environment normally used as the default desktop on Silicon Graphics workstations running IRIX. The IRIX Interactive Desktop uses the Motif widget toolkit on top of the X Window System found on most Unix systems. The default window manager on the IRIX Interactive Desktop is 4Dwm.
Zenwalk GNU/Linux is a desktop-focused Linux distribution founded by Jean-Philippe Guillemin. It is based on Slackware with very few modifications at system level making it 100% compatible with Slackware. It aims to be a modern, multi-purpose Linux distribution by focusing on internet applications, multimedia and programming tools. It comes with many specialized tools and is designed for beginners and advanced users alike, as it offers system configuration via both graphical tools and the command line.
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 common approach of coordinate-based stacking of overlapping objects (windows) that tries to fully emulate the desktop metaphor.
larswm is a window manager for the X window system that follows the tiling window manager paradigm. Using ideas from the older 9wm window manager, it features automatic tiling and virtual desktops. It also borrows other ideas, for example a limited form of plumbing, from the Acme development environment. Objects are tiled into non-overlapping areas, instead of using windows that can be stacked, as this approach can result in lower memory and CPU requirements.
SUSE Linux Enterprise (SLE) is a Linux-based operating system developed by SUSE. It is available in two editions, suffixed with Server (SLES) for servers and mainframes, and Desktop (SLED) for workstations and desktop computers.
dwm is a minimalist dynamic window manager for the X Window System developed by Suckless that has influenced the development of several other X window managers, including xmonad and awesome. It is externally similar to wmii, but internally much simpler. dwm is written purely in C for performance and lacks any configuration interface besides editing the source code. One of the project's guidelines is that the source code is intended never to exceed 2000 SLOC, and options meant to be user-configurable are all contained in a single header file.
In computing, a dynamic window manager is a tiling window manager where windows are tiled based on preset layouts between which the user can switch. Layouts typically have a main area and a secondary area. The main area usually shows one window, but one can also change the number of windows in this area. Its purpose is to reserve more space for the more important window(s). The secondary area shows the other windows.
OpenShot Video Editor is a free and open-source video editor for Windows, macOS, Linux, and ChromeOS. The project started in August 2008 by Jonathan Thomas, with the objective of providing a stable, free, and friendly to use video editor.
awesome is a dynamic window manager for the X Window System developed in the C and Lua programming languages. Lua is also used for configuring and extending the window manager. Its development began as a fork of dwm, though has differed considerably since. It aims to be extremely small and fast, yet extensively customizable. It makes it possible for the user to manage windows with the use of keyboard.
Criticism of desktop Linux is a history of comment on the perceived shortcomings of the Linux operating system when installed on desktop computers. These criticisms have been aimed at the plethora of issues and lack of consistency between Linux distributions, their usefulness and ease of use as desktop systems for general end users, driver support and issues with multi-media playback and audio development.
i3 is a tiling window manager designed for X11, inspired by wmii and written in C. It supports tiling, stacking, and tabbing layouts, which are handled manually. Its configuration is achieved via a plain text file and extending i3 is possible using its Unix domain socket and JSON based IPC interface from many programming languages.
{{cite news}}
: CS1 maint: unfit URL (link){{cite thesis}}
: CS1 maint: unfit URL (link){{cite web}}
: CS1 maint: bot: original URL status unknown (link)