An important part of pretty much everyone’s Linux system is a graphical windowing manager, with or without an attendant desktop environment — and, just like with every other aspect of open source computing, there’s many different options to choose from. Nearly everyone knows about Gnome and KDE, and statistics show that about 75% of Linux folks use one or the other. But there are many many other worthy environments available, some of which are downright awesome.
Like, for instance, Awesome.
Awesome is a very small and fast tabbed windowing manager. Rather than having windows which only take advantage of a portion of the screen, cover each other up, and must be moved around, Awesome divides up the screen between the various windows (or, as they’re called in Awesome, clients) you have open, making the most economical use of the space available. No mouse is required, because everything can be controlled using the keyboard, and every aspect of it is very configurable. It’s geared toward the geekier types of folks, though, so not everything is exactly intuitive — but I’ll explain a lot of it in this review.
Awesome requires a rather considerable number of dependencies, which are listed in the readme file found in the main Awesome directory. Some of these are rather large and complicated, and the newest version of many of them is required, which can make installation difficult. However, there’s a wiki on the Awesome website, which, while out of date in spots, can prove very useful at times. Particularly this page. If your distro is listed (or a similar one: I use Linux Mint, but followed the Awesome-3-Ubuntu-git tutorial), you can make use of the instructions provided; else you can muddle through on your own.
When you start Awesome (as explained in both the readme and the various distro-specific instructions), you’ll see that it’s up and running almost instantly. No long load-times here, unlike in (ahem) certain very popular desktop environments! A window will open welcoming you to Awesome, and explaining that you can open a new terminal by right-clicking on an empty screen, and that more info can be found in the Awesome manpage. You may also get a message informing you that Awesome can’t set a background image in and of itself, and needs a helper application to do so. A terminal emulator called eterm is recommended for this; install it.
And now is a good time to become acquainted with Awesome’s user interface. The main part of the screen is where the clients go. As previously explained, you can right-click to open a terminal, and run stuff from in it, or, if you want, you can press Win-F1 to open a command line at the top of the screen. By default, the most recent program opened takes up the entire left-hand part of the screen, and the others are arranged on the right. Most ways of interacting with Awesome involve using the Windows key (which the man page and config files call Mod4) on your keyboard: to rearrange clients you can Win-leftclick on them and drag them from one space to another, and Win-rightclick and dragging on margins between clients will resize them. Or, if you don’t have or don’t feel like using your mouse, you can swap clients with the keyboard combinations Win-Shift-J and K, and resize them with Win-H and Win-L.
At the top of the screen is the statusbar. On the leftmost part of it you’ll find a list of numbers, the first of which has a small square next to it (to let you know it has windows assigned), and is highlighted in blue-grey. Click on a different one of them, and you’ll get a fresh screen containing nothing but your background image, ready to have more windows opened. But these are not workspaces, such as you’ll find in most other windowing managers; these are tags. Clients do not belong to them, they belong to the clients. A single window can have multiple tags assigned to it (by means of Win-rightclick, defaultly), and you can view more than one tag at a time (right-click on one to add it to your view). This allows greater control over which windows you want to have visible on your screen than pretty much any other window manager around.
Then, to the right of those, comes the tasklist. This is the part of the bar where the names of every client using the currently visible tag are listed, lined up in an easily-accessible row. Normally you won’t really need this much, but if you’re using a non-tiling layout (more on that later) or are reassigning a client’s tags, it can come in handy.
And next, continuing rightwardly, is the clock, which displays the time in seconds since the Unix epoch. This further demonstrates the fact that Awesome was written with “power users” in mind — people to whom such a numbering system evidently makes sense. However, it’s perfectly fine for normal folk to use too, and remember: everything about Awesome, pretty much, can be changed; including the clock.
Finally, on the far right of the statusbar, is the layout box. Clicking on it changes the layout — the way in which Awesome arranges the various clients on the screen. There are a number of different layouts available, from sensible, orderly schemes to zigzags and spirals. One layout allows the selected window to fill the whole screen, which can be useful depending on what sort of programs you’re running. And another sets all the clients to be ‘floating’.
Which is something that we ought to go into more deeply. Normally, all your clients are in tile mode. They line up evenly with each other, are assigned their position according to the layout you’re using, and can only be dragged from one slot in the layout to another. Floating clients, however, behave just like the windows in stacking WMs. They cover each other up, and can be moved freely (by holding down Win and dragging on them with the left mouse button). Message boxes are always set to be floating, and the configuration file can force specific programs to always float as well. As explained above, one layout has all clients in floating mode, and you can toggle the floating/tiled status of the selected client by pressing Win-Ctrl-Space, no matter what the layout.
But by now, perhaps, you’re anxious to get down to configuring, and change stuff. Now here’s the bad news: Awesome uses the Lua scripting language for configuration. And the good news: Awesome uses the Lua scripting language for configuration. Because it all depends on your viewpoint! Lua is very powerful, and is part of what makes Awesome so configurable. But it’s a complete programming language, so it won’t be as easy to work with as are those environments that allow you to change settings with sliders and radio buttons. So if you’re really into this Awesome thing, you might want to learn Lua. It’s pretty easy to understand, as far as programming languages go, and there’s some good tutorials available. Or, you can just read the provided configuration file, try to figure out how things work, and do it by trial and error. You can restart Awesome at any time, without disrupting any open programs, by pressing Win-Ctrl-R, allowing you to nearly-instantly see the effects of your changes.
The default configuration file is found in the directory /etc/xdg/awesome, and is called rc.lua. To play around with it, copy this file to ~/.config/awesome, and make changes. Some things can be done that don’t really require any Lua expertise. If you don’t like the default clock, you can make it display the time in a more conventional format by commenting out line 443 (by typing “–” at the beginning of the line) and uncommenting line 445. And something I recommend is adding titlebars to your clients. To do this, change the “false in line 61 of rc.lua to “true.” Now, by clicking and dragging on a floating client’s titlebar you can move it around without having to use the Win key, and you can close open programs by clicking on the familiar X in the upper right corner, rather than having to type the combination Win-Shift-C.
Once you’re more familiar with Lua and Awesome’s rc.lua file, you’ll be able to change keyboard combinations, the position of the statusbar, what appears on it, what the components of it do, and other fun things like that. And Awesome also can use theme files, allowing you to change the entire color scheme with a single line in your rc.lua!
While not for everyone, Awesome provides a fast, unobtrusive, and highly configurable interface for your graphical computing needs. And, above all, further enriches that great feature of the open-source world: multiplicity of choices.
And that’s pretty awesome.