Awesome (window manager)
Encyclopedia
awesome is a dynamic window manager
for the X Window System
developed in the C
and Lua programming languages. The latter is also used for configuring and extending the window manager. Its development began as a fork of dwm
. It aims to be extremely small and fast, yet extensively customizable and make it possible for the user to productively manage windows with the use of keyboard.
The fork was initially nicknamed jdwm, with 'jd' denoting the principal programmer's initials, and with dwm reminding of the software project
it forked from. The first git repository for what was to become awesome was set up in September 2007. jdwm was renamed to awesome, named after the same phrase used by the How I Met Your Mother
character Barney Stinson. awesome window manager was officially announced on the dwm mailing list on September 20, 2007.
fork featuring customization through external configuration files (see Configuration and customization below). Although highly extensible, the default setup of the window manager is deliberately simplified. In doing so, the author has created what he calls a framework window manager for users to expand and adapt to their own needs.
fork
with an external configuration file. As such, its configuration file format, and the process of configuration itself, was subject to special attention by the author.
with flat file configuration
which used libconfig. In 2.x branch, Danjou changed the configuration library from libconfig to libconfuse, a different flat file configuration library, somewhat resembling libconfig. During the development of 2.x releases, many customization features were added to awesome, such as titlebars and icon drawing.
awesome Lua API is now hosted on awesome's homepage, and a tutorial-style article about configuring awesome is posted on the awesome Wiki.
(or skin
) awesome by using the window manager's Beautiful library. In line with rc.lua configuration file, theming is also done in Lua, allowing dynamic themes to be created.
Although the default awesome configuration as of 3.2.1 release does not have any status indicators (like wireless network status, battery indicators, etc), users can add these items using widgets. Data for the widgets is supplied using arbitrary Lua code since widgets are defined in the main configuration file.
library to communicate with the X server, making awesome the first window manager to use this library instead of Xlib
. Work on the XCB port was started by Arnaud Fontaine, one of the current Awesome developers, in January 2008.
Arnaud Fontaine announced the move to XCB on the XCB mailing list on April 9, 2008. In his message to the list, he emphasized the following as main advantages of using XCB: "modular architecture; direct access to the protocols; multithreading; asynchronous requests/replies;". The XCB port was completed the following month and Danjou created a new branch based on XCB.
, Debian
, Gentoo
, PLD Linux, Ubuntu
, Source Mage GNU/Linux
, T2 SDE, AuroraUX
, FreeBSD
, NetBSD
and OpenBSD
.
video game clone, written by Gregor "farhaven" Best. This module was first introduced in 3.1 release, and subsequently removed in 3.4 release, due to its novelty nature, increasing needs for maintenance and fading interest.
Dynamic window manager
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 master area and a slave area. The master area usually shows one window, but one can also change the amount of windows in this...
for the X Window System
X Window System
The X window system is a computer software system and network protocol that provides a basis for graphical user interfaces and rich input device capability for networked computers...
developed in the C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
and Lua programming languages. The latter is also used for configuring and extending the window manager. Its development began as a fork of dwm
Dwm
dwm is a dynamic tiling window manager for X11 exhibiting the principles of minimalism which is known for having influenced the development of other window managers, including xmonad and awesome. It is externally similar to wmii, but internally much simpler. dwm is written purely in C and, for...
. It aims to be extremely small and fast, yet extensively customizable and make it possible for the user to productively manage windows with the use of keyboard.
The fork was initially nicknamed jdwm, with 'jd' denoting the principal programmer's initials, and with dwm reminding of the software project
Dwm
dwm is a dynamic tiling window manager for X11 exhibiting the principles of minimalism which is known for having influenced the development of other window managers, including xmonad and awesome. It is externally similar to wmii, but internally much simpler. dwm is written purely in C and, for...
it forked from. The first git repository for what was to become awesome was set up in September 2007. jdwm was renamed to awesome, named after the same phrase used by the How I Met Your Mother
How I Met Your Mother
How I Met Your Mother is an American sitcom that premiered on CBS on September 19, 2005, created by Craig Thomas and Carter Bays.As a framing device, the main character, Ted Mosby with narration by Bob Saget, in the year 2030 recounts to his son and daughter the events that led to his meeting...
character Barney Stinson. awesome window manager was officially announced on the dwm mailing list on September 20, 2007.
Aim of the project
Awesome has emerged as a dwmDwm
dwm is a dynamic tiling window manager for X11 exhibiting the principles of minimalism which is known for having influenced the development of other window managers, including xmonad and awesome. It is externally similar to wmii, but internally much simpler. dwm is written purely in C and, for...
fork featuring customization through external configuration files (see Configuration and customization below). Although highly extensible, the default setup of the window manager is deliberately simplified. In doing so, the author has created what he calls a framework window manager for users to expand and adapt to their own needs.
Features
- Configured via a Lua configuration file.
- Like dwmDwmdwm is a dynamic tiling window manager for X11 exhibiting the principles of minimalism which is known for having influenced the development of other window managers, including xmonad and awesome. It is externally similar to wmii, but internally much simpler. dwm is written purely in C and, for...
and wmiiWmiiwmii is a tiling window manager for X11. It supports classic and tiling window management with extended keyboard, mouse, and filesystem based remote control...
, awesome uses tags instead of workspaces. Windows can be assigned to several tags, and multiple tags can be selected at the same time. - As a dynamic window managerDynamic window managerIn 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 master area and a slave area. The master area usually shows one window, but one can also change the amount of windows in this...
, awesome can switch between different layouts for each tag, including floating, several dynamic tilingTiling window managerIn 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 that tries to fully emulate the desktop metaphor.-Xerox PARC:Although the...
layouts, maximized and magnifier. - Multiple and per screen status bars, including a variety of widgets (text and icon boxes, graphs, progress bars, and so on).
- Everything can be done with the keyboard, so usage of a mouse is optional.
- Multihead support (XRandR, XineramaXineramaXinerama is an extension to the X Window System which enables multi-headed X applications and window managers to use two or more physical displays as one large virtual display.It was originally developed by Madeline T...
or Zaphod mode). - Implements freedesktop.orgFreedesktop.orgfreedesktop.org is a project to work on interoperability and shared base technology for free software desktop environments for the X Window System on Linux and other Unix-like operating systems. It was founded by Havoc Pennington from Red Hat in March 2000.The organisation focuses on the user....
standards including EWMHExtended Window Manager HintsExtended Window Manager Hints, aka NetWM or Net WM, is an X Window System standard for window managers. It defines various interactions between window managers, utilities, and applications, all part of an entire desktop environment...
, XDG Base Directory, XEmbed, Desktop Notification and System Tray. - CompositingCompositingCompositing is the combining of visual elements from separate sources into single images, often to create the illusion that all those elements are parts of the same scene. Live-action shooting for compositing is variously called "chroma key", "blue screen", "green screen" and other names. Today,...
and true transparency support through an external compositor such as xcompmgr. - Remote control via D-BusD-BusIn computing, D-Bus is a simple inter-process communication open-source system for software applications to communicate with one another. Heavily influenced by KDE2–3's DCOP system, D-Bus has replaced DCOP in the KDE 4 release. An implementation of D-Bus supports most POSIX operating...
(awesome-client). - Supports the pangoPangoPango is an LGPL licensed open source computing library used by software developers for laying out and rendering text in high quality, emphasising support for multilingual text...
markup language.
Configuration and customization
From the very beginning, awesome was conceived as a dwmDwm
dwm is a dynamic tiling window manager for X11 exhibiting the principles of minimalism which is known for having influenced the development of other window managers, including xmonad and awesome. It is externally similar to wmii, but internally much simpler. dwm is written purely in C and, for...
fork
Fork (software development)
In software engineering, a project fork happens when developers take a legal copy of source code from one software package and start independent development on it, creating a distinct piece of software...
with an external configuration file. As such, its configuration file format, and the process of configuration itself, was subject to special attention by the author.
Early configuration file formats
Prior to the third major release, one of awesome's features was what Danjou termed a 'no complicated configuration'. First versions of awesome (1.x) were simple modification of dwmDwm
dwm is a dynamic tiling window manager for X11 exhibiting the principles of minimalism which is known for having influenced the development of other window managers, including xmonad and awesome. It is externally similar to wmii, but internally much simpler. dwm is written purely in C and, for...
with flat file configuration
Configuration file
In computing, configuration files, or config files configure the initial settings for some computer programs. They are used for user applications, server processes and operating system settings. The files are often written in ASCII and line-oriented, with lines terminated by a newline or carriage...
which used libconfig. In 2.x branch, Danjou changed the configuration library from libconfig to libconfuse, a different flat file configuration library, somewhat resembling libconfig. During the development of 2.x releases, many customization features were added to awesome, such as titlebars and icon drawing.
New configuration file
On May 20, 2008, Danjou announced in an e-mail to awesome mailing list that a new format for the configuration file will be used in 3.0 release. The new format was placed in a file ~/.awesomerc.lua, and was later moved to ~/.config/awesome/rc.lua. As the extension suggests, the configuration file is written in Lua programming language. Danjou argued that the new format and Lua integration would enable awesome users to customize awesome in ways he previously considered impossible: using a programming language for configuration made it possible to dynamically specify configuration options.awesome Lua API is now hosted on awesome's homepage, and a tutorial-style article about configuring awesome is posted on the awesome Wiki.
Themes and widgets
It is possible to themeTheme (computing)
In computing, a theme is a preset package containing graphical appearance details, used to customize the look and feel of an operating system, widget set or window manager....
(or skin
Skin (computing)
In computing, a skin is a custom graphical appearance achieved by the use of a graphical user interface that can be applied to specific software and websites to suit the purpose, topic, or tastes of different users....
) awesome by using the window manager's Beautiful library. In line with rc.lua configuration file, theming is also done in Lua, allowing dynamic themes to be created.
Although the default awesome configuration as of 3.2.1 release does not have any status indicators (like wireless network status, battery indicators, etc), users can add these items using widgets. Data for the widgets is supplied using arbitrary Lua code since widgets are defined in the main configuration file.
Migration to XCB
The 3.0 version, released September 18, 2008, uses the XCBXCB
In computing, XCB is a C language binding for the X Window System. It is implemented as free software and aims to replace Xlib. The project was started in 2001 by Bart Massey....
library to communicate with the X server, making awesome the first window manager to use this library instead of Xlib
Xlib
Xlib is an X Window System protocol client library written in the C programming language. It contains functions for interacting with an X server. These functions allow programmers to write programs without knowing the details of the protocol...
. Work on the XCB port was started by Arnaud Fontaine, one of the current Awesome developers, in January 2008.
Arnaud Fontaine announced the move to XCB on the XCB mailing list on April 9, 2008. In his message to the list, he emphasized the following as main advantages of using XCB: "modular architecture; direct access to the protocols; multithreading; asynchronous requests/replies;". The XCB port was completed the following month and Danjou created a new branch based on XCB.
Lua integration
Because of the perceived problems that limited expanding and customization in pre-3.0 version of awesome, the author decided to integrate Lua-based configuration into awesome. The rc1 of the new Lua-scriptable implementation was announced in August 2008. In September 2008, the first version of awesome with Lua API completed in parallel with XCB implementation.Distribution package availability
awesome is distributed on a wide range of Unix-like operating systems, including Arch LinuxArch Linux
Arch Linux is an independently developed, Linux-based operating system for i686 and x86-64 computers. It is composed predominantly of free and open source software, and supports community involvement....
, Debian
Debian
Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...
, Gentoo
Gentoo Linux
Gentoo Linux is a computer operating system built on top of the Linux kernel and based on the Portage package management system. It is distributed as free and open source software. Unlike a conventional software distribution, the user compiles the source code locally according to their chosen...
, PLD Linux, Ubuntu
Ubuntu (operating system)
Ubuntu is a computer operating system based on the Debian Linux distribution and distributed as free and open source software. It is named after the Southern African philosophy of Ubuntu...
, Source Mage GNU/Linux
Source Mage GNU/Linux
Source Mage GNU/Linux is a Linux distribution. As a package is being installed, its source code is automatically downloaded, compiled, and installed. Source Mage is descended from Sorcerer.-Notable features:...
, T2 SDE, AuroraUX
AuroraUX
AuroraUX is a suite of high-integrity applications, libraries and user tools and an operating system distribution based on the DragonflyBSD kernel source base which serves as a reference implementation of the AuroraUX suite and other AUX projects....
, FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...
, NetBSD
NetBSD
NetBSD is a freely available open source version of the Berkeley Software Distribution Unix operating system. It was the second open source BSD descendant to be formally released, after 386BSD, and continues to be actively developed. The NetBSD project is primarily focused on high quality design,...
and OpenBSD
OpenBSD
OpenBSD is a Unix-like computer operating system descended from Berkeley Software Distribution , a Unix derivative developed at the University of California, Berkeley. It was forked from NetBSD by project leader Theo de Raadt in late 1995...
.
Named releases
awesome versions 1.0 through 1.3 (September–October 2007) were not named. Starting with the first 2.0 release candidate (November 2007), awesome has used named releases. , the latest stable version is 3.4.10 "Exploder".Invaders module
Among standard awesome libraries, there was a library called 'invaders', which contains the Space InvadersSpace Invaders
is an arcade video game designed by Tomohiro Nishikado, and released in 1978. It was originally manufactured and sold by Taito in Japan, and was later licensed for production in the United States by the Midway division of Bally. Space Invaders is one of the earliest shooting games and the aim is to...
video game clone, written by Gregor "farhaven" Best. This module was first introduced in 3.1 release, and subsequently removed in 3.4 release, due to its novelty nature, increasing needs for maintenance and fading interest.
See also
- Comparison of X window managersComparison of X window managersThis article compares variety of different X window managers. For an introduction to the topic, see X Window System.- See also :* Comparison of X Window System desktop environments* Window manager...
- dwmDwmdwm is a dynamic tiling window manager for X11 exhibiting the principles of minimalism which is known for having influenced the development of other window managers, including xmonad and awesome. It is externally similar to wmii, but internally much simpler. dwm is written purely in C and, for...
- wmiiWmiiwmii is a tiling window manager for X11. It supports classic and tiling window management with extended keyboard, mouse, and filesystem based remote control...
- Ion (window manager)
- Stacking window manager
- Tiling window managerTiling window managerIn 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 that tries to fully emulate the desktop metaphor.-Xerox PARC:Although the...
- XMonadXmonadxmonad is a tiling window manager for the X Window System, written in the functional programming language Haskell.Begun in March 2007, it is similar to dwm, larswm, StumpWM and other members of the tiling window manager family, in that it arranges windows in a nonoverlapping tiled pattern and...