awesome (window manager)

Awesome

awesome with a number of terminals open
Original author(s) Julien Danjou
Initial release September 18, 2007 (2007-09-18)[1]
Stable release
3.5.9 "Mighty Ravendark"[2] / March 6, 2016 (2016-03-06)
Written in C and Lua
Operating system Unix-like
Type Window manager
License GPLv2+[3]
Website awesomewm.org

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.[4] 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.[5] awesome was officially announced on the dwm mailing list on September 20, 2007.[4]

Aim of the project

A window manager is probably one of the most used software in your day-to-day tasks, with your Web browser, mail reader and text editor. Power users and programmers have a big range of choice between several tools for these day-to-day tasks. Some are heavily extensible and configurable.

awesome tries to complete these tools with what we miss: an extensible, highly configurable window manager.

To achieve this goal, awesome has been designed as a framework window manager. It's extremely fast, small, dynamic and heavily extensible using the Lua programming language.[6]

Awesome has emerged as a dwm 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[5] for users to expand and adapt to their own needs.

Features

Configuration and customization

From the very beginning, awesome was conceived as a dwm fork with an external configuration file.[5] 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'.[7] First versions of awesome (1.x) were simple modification of dwm 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.[5]

New configuration file

On May 20, 2008, Danjou announced in an e-mail to awesome mailing list[8] 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 the 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.[8]

The awesome Lua API is now hosted on awesome's homepage,[9] and a tutorial-style article about configuring awesome is posted on the awesome Wiki.[10]

Themes and widgets

It is possible to theme (or skin) awesome by using the window manager's Beautiful library.[11] 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.[12] 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 XCB library to communicate with the X server,[13] 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,[14] in January 2008.[5]

Arnaud Fontaine announced the move to XCB on the XCB mailing list on April 9, 2008.[13] 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.[5]

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.[7] The rc1 of the new Lua-scriptable implementation was announced in August 2008.[15] In September 2008, the first version of awesome with Lua API completed in parallel with XCB implementation.[7] The rc1 of the new Lua-scriptable implementation was announced in August 2008.[15]

Distribution package availability

awesome is distributed on a wide range of Unix-like operating systems, including Arch Linux, Debian,[16] Fedora Linux, Gentoo,[17] PLD Linux, Ubuntu,[18] Source Mage GNU/Linux, openSUSE,[19] Mageia, NixOS, T2 SDE, FreeBSD, NetBSD and OpenBSD.

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.[2]

See also

References

  1. 1.0 release tag
  2. 1 2 awesome Wiki: List of awesome releases Archived 2 January 2013 at WebCite
  3. github.com/awesomeWM Git - commit 7659289 (tag v3.5.9) - LICENSE Archived 1 February 2011 at WebCite
  4. 1 2 Project announcement from dwm mailing list. Archived 1 February 2011 at WebCite
  5. 1 2 3 4 5 6 Danjou, Julien. "Taking the other direction". Archived from the original on 13 July 2011. Retrieved 14 August 2011.
  6. "about - awesome window manager". Archived from the original on 2011-02-01. Retrieved 2016-09-06.
  7. 1 2 3 awesome 3: Lua integration Archived February 10, 2009, at the Wayback Machine.
  8. 1 2 News on awesome-3 and about latest commits (May 20, 2008) Archived 1 February 2011 at WebCite
  9. awesome API documentation Archived 1 February 2011 at WebCite
  10. Awesome 3 configuration Archived 1 February 2011 at WebCite
  11. awesome Wiki: Beautiful Archived 1 February 2011 at WebCite
  12. awesome Wiki: Widgets in awesome Archived 1 February 2011 at WebCite
  13. 1 2 XCB transition announcement from XCB mailing list Archived 1 February 2011 at WebCite
  14. Community page on Awesome homepage: under Developers heading Archived 1 February 2011 at WebCite
  15. 1 2 3.0-rc1 announcement on awesome mailing list Archived 1 February 2011 at WebCite
  16. Debian - Details of package awesome in squeeze. Packages.debian.org. Retrieved on 2013-07-13.
  17. Gentoo Packages /package/x11-wm/awesome. Packages.gentoo.org (2013-04-10). Retrieved on 2013-07-13.
  18. http://packages.ubuntu.com/natty/awesome
  19. "awesome - software.opensuse.org". Retrieved 6 December 2016.

External links

Wikimedia Commons has media related to Awesome (window manager).
This article is issued from Wikipedia - version of the 11/6/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.