Cool Window Manager - Awesome WM

image Hello! Having recently read an article about window managers in Linux, I wanted to tell everyone about the manager that was mentioned there - “awesome”.
This is a tiling windows manager for unix (linux, freebsd, openbsd, netbsd).


Awesome WM - tiling wm, with the ability to be composite. This is one of its features, often users require compactness (the tiling side of this WM), but sometimes you can work in normal mode (composite). It is very light, does not load the processor, and the screen space is used very measuredly and there are no empty spaces (in tiling mode).
It is configured using the configuration file, in the scripting language Lua. There is support for plugins, which, in turn, are written in Lua.


Installing it is very simple, for example on Arch Linux just write
sudo pacman -S awesome vicious

Or on Debian based
sudo apt-get install awesome awesome-extra

The vicious package contains basic plugins that you can use in the future.

Next, you need to register its downloads when loading the X Window System. This is written in the file in the home directory, ".xinitrc".

exec awesome

Reboot and wm appears.

First meeting

This is what your session looks like when you first turn it on. It would seem how to work in this and what is there to do? In fact, everything is simple when you understand its system. All actions with windows are performed using hotkeys. By default they are as follows (all this can be read in “man awesome”, the text itself is taken from the gentoo wiki):
super + number switch to another tag, where the tag is the number of the key, or rather its position (drawing an analogy with other wm, tag = virt . Desktop).
super + shift + number move the current window to another tag.
super + j, super + k transition between windows.
super + shift + j or super + shift + k swap two windows.
super + Space change the display of windows. (There are a lot of types of displays in awesome - tiling: vertically, horizontally; composite - you can drag with the mouse; the application is in focus on the entire screen, etc.)
super + Enter launch the terminal.
super + r start the program.
super + shift + c close the window.
super + shift + r restart awesome.
super + shift + q exit awesome.

Undoubtedly, they are not convenient for someone. But we can change everything! Therefore, we move on to the configuration file.

Configuration file

Warning, to edit it you need at least some programming or scripting skills.
The global config file is located in the system in "/etc/xdg/awesome/rc.lua", but it is better not to change it, because if it is not correct, then wm will not start. Therefore, we will do our own.
mkdir ~/.config/awesome
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua

And we will change it directly.
First of all, I would like to change some keys.
Hotkeys are located in the section
"- {{{Key bindings".
Changing everything is simple.
modkey is our super key (with the windows logo on the keyboard).
For example:
awful.key({ modkey, "Shift"   }, "q", awesome.quit),

This line says that super + Shift + q will force awesome to close.
Suppose we want to leave the same thing, but without shift, then there will be
 awful.key({ modkey,  }, "q", awesome.quit),
Or for example just by pressing Esc (This is just an example!)
 awful.key({}, "Esc", awesome.quit),
I think the logic is clear.
So, with the keys sorted out. Now it’s worth setting up global variables.
This section is at the beginning. (Further, my own settings, which you can, of course, change)
terminal = "terminal"
browser  = "chromium-dev"
editor = os.getenv("vim") or "vim"
editor_cmd = terminal .. " -e " .. editor

I think with the "insides" we figured out, it's time to take on the appearance.

Just a little more about setting up

All the same, we continue to work in the configuration file.
First, instead of just numbers, I would like to rename our tags. This is in the section
"--- {{{Tags"
Instead of numbers, just write the names.
For example, I have:
tags[s] = awful.tag({ "All", "IM", "Work", "Etc", "Media"}, s, layouts[1])

In general, I won’t be able to write about the configuration well, because this is a personal matter. It's best to read about it on the awesome wiki . In general, having added the config, you will feel the new ease of working with windows. A large number of buns can be found here .

Instead of a conclusion

I want to note that this wm is ideal for people who often keep several windows in focus. It is also suitable for weak machines and lightweight systems, and machines with small screens (laptops).
Having memorized (at first), and then pressing hotkeys on a hunch, you will no longer think about how, where, what to do with the window, how post it.
For example, in awesome, one window can hold certain windows. For example, in my IM tag are Skype and Pidgin.
But what words! Screenshots!

Full-size last screenshot
My wallpaper, at the request of workers.
As well as a video demonstrating the work of WM.

I also attach the archive with my config + plugins.

I hope I interested you in this cool (from English awesome) WM, and you will try it in practice! And I’m happy to answer and help in the comments.

UPD. Everyone who wants to share their configuration or see strangers is waiting on the corresponding wiki page.