Original author(s) | Julien Danjou |
---|---|
Initial release | September 18, 2007 [1] |
Stable release | |
Repository | |
Written in | C and Lua |
Operating system | Unix-like |
Type | Window manager |
License | GPL-2.0-or-later [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. It makes it possible for the user to manage windows with the use of keyboard.
The fork was initially nicknamed jdwm, where "jd" denoted the principal programmer's initials and dwm denoted the software project it was 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]
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.
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.
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]
On May 20, 2008, Danjou announced in an e-mail to the 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]
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.
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]
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]
awesome is distributed on a wide range of Unix-like operating systems, including Arch Linux, [16] Debian, [17] Fedora Linux, Gentoo, [18] Ubuntu, [19] Source Mage, openSUSE, [20] Mageia, NixOS, FreeBSD, NetBSD and OpenBSD.
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. [21] The release names are related to music. awesome v4.x uses song name from Daft Punk.
A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
Advanced package tool, or APT, is a free-software user interface that works with core libraries to handle the installation and removal of software on Debian, and Debian-based Linux distributions. APT simplifies the process of managing software on Unix-like computer systems by automating the retrieval, configuration and installation of software packages, either from precompiled files or by compiling source code.
Sawfish is a window manager for the X Window System. It aims to manage windows in the most flexible and attractive manner possible. It is able to match a window by multiple criteria such as application, size or role, and based on this, can change the window's position, appearance, or behavior. This allows for highly customized window handling such as web browser windows opening full-screen without borders on a secondary monitor, a default terminal emulator window displaying full-screen at the desktop level, and all dialog box windows under a certain size opening on the lower right corner of the main monitor while larger ones are centered.
GNU GRUB is a boot loader package from the GNU Project. GRUB is the reference implementation of the Free Software Foundation's Multiboot Specification, which provides a user the choice to boot one of multiple operating systems installed on a computer or select a specific kernel configuration available on a particular operating system's partitions.
Openbox is a free, stacking window manager for the X Window System, licensed under the GNU General Public License. Originally derived from Blackbox 0.65.0, Openbox has been completely re-written in the C programming language and since version 3.0 is no longer based upon any code from Blackbox. Since at least 2010, it has been considered feature complete, bug free and a completed project. Occasional maintenance is done to keep it working, but only if needed.
ratpoison is a tiling window manager for the X Window System primarily developed by Shawn Betts. ratpoison is written in C; Betts' StumpWM re-implements a similar window manager in Common Lisp. The user interface and much of their functionality are inspired by the GNU Screen terminal multiplexer.
In Unix computing, Ion is a tiling and tabbing window manager for the X Window System. It is designed such that it is possible to manage windows using only a keyboard, without needing a mouse. It is the successor of PWM and is written by the same author, Tuomo Valkonen. Since the first release of Ion in the summer 2000, similar alternative window management ideas have begun to show in other new window managers: Larswm, ratpoison, StumpWM, wmii, xmonad and dwm.
Technical variations of Linux distributions include support for different hardware devices and systems or software package configurations. Organizational differences may be motivated by historical reasons. Other criteria include security, including how quickly security upgrades are available; ease of package management; and number of packages available.
Lazarus is a free, cross-platform, integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler. Its goal is to provide an easy-to-use development environment for programmers developing with the Object Pascal language, which is as close as possible to Delphi.
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.
A compositing manager is software that provides applications with an off-screen buffer for each window. The compositing manager composites the window buffers into an image representing the screen and writes the result into the display memory. A compositing window manager, or compositor, is a window manager that is also a compositing manager.
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 security in addition to simplicity, and lacks any configuration interface besides editing the source code. One of the project's guidelines is that the source code is intended to never exceed 2000 SLOC, and options meant to be user-configurable are all contained in a single header file.
Conky is a free software desktop system monitor for the X Window System. It is available for Linux, FreeBSD, and OpenBSD. Conky is highly configurable and is able to monitor many system variables including the status of the CPU, memory, swap space, disk storage, temperatures, processes, network interfaces, battery power, system messages, e-mail inboxes, Arch Linux updates, many popular music players, weather updates, breaking news, and much more. Unlike system monitors that use high-level widget toolkits to render their information, Conky is drawn directly in an X window. This allows it to be configured such that it consumes relatively few system resources.
xmonad is a dynamic window manager (tiling) for the X Window System, noted for being written in the functional programming language Haskell.
LuaRocks is a package manager for the Lua programming language that provides a standard format for distributing Lua modules, a tool designed to easily manage the installation of rocks, and a server for distributing them. While not included with the Lua distribution, it has been called the "de facto package manager for community-contributed Lua modules".
i3 is a tiling window manager designed for X11, inspired by wmii and written in C. It supports tiling, stacking, and tabbing layouts, which it handles dynamically. 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.
mpv is free and open-source media player software based on MPlayer, mplayer2 and FFmpeg. It runs on several operating systems, including Unix-like operating systems and Microsoft Windows, along with having an Android port called mpv-android. It is cross-platform, running on ARM, PowerPC, x86/IA-32, x86-64, and MIPS architecture.
ZeroBrane Studio is a lightweight open-source Lua IDE with code completion, syntax highlighting, code analyzer, live coding, and debugging support for Lua 5.1, Lua 5.2, Lua 5.3, LuaJIT, and other Lua engines. ZeroBrane Studio is a cross-platform application written in Lua that runs on Windows, Linux, and macOS (10.9+) operating systems. It uses the wxWidgets toolkit and the Scintilla component for file editing.