I decided to give awesomewm a try again.
Over the years I have tried awesome a few times but never really put too much effort into customizing it.

My main desktop window manager since 2014 has been i3wm & the main setup (key bindings, status bar etc) has not really changed since then.

What is Awesome Window Manager?

awesome is a highly configurable, next generation framework window manager for X. It is very fast, extensible and licensed under the GNU GPLv2 license.

It is primarily targeted at power users, developers and any people dealing with every day computing tasks and who want to have fine-grained control on their graphical environment.


about - awesome window manager

Configuring Awesome #

One of the main advantages to using awesome is the ability to script everything using lua.

Replicating i3wm #

At first I wanted to replicate a lot of things from my i3wm setup.

With some searching, this was all possible.

Problems #

There were some problems in the way tiling works in awesome vs i3wm.

As tags are duplicated, pressing mod+shift+4 moves the window to tag 4 on the current screen but on my i3wm setup this would be moved to my secondary screen as I have workspaces (tags in i3wm) set so odd numbers are assigned to primary monitor & all even numbers are assigned to the secondary monitor.

I tried using awesome-sharedtags but this introduced a lot of problems

Custom Split #

In i3wm I normally have a screen with a 70% / 30% horizontal split with github on the 70% & social media (mastodon) on the 30%.
This involves pressing $mod +/- to resize the split.

I wanted to script this to make it easier & automatic.

layout-machi #

After searching I found a library which adds functionality to create custom layouts.

Creating a 70% / 30% horizontal split

local mainsplit = machi.layout.create { default_cmd = '73h.' }

This works but does not behave as a tiling layout.
As it's not a tiling layout, trying to move windows in directions does not work.

Also when opening a browser session with 2 windows open swaps the window locations.

Advantages Over i3wm #

Testing Config #

Xephyr #

It is possible to test config changes using Xephyr

Xephyr -br -ac -noreset -screen 800x600 :1 &
DISPLAY=:1 awesome

Reload Awesome CLI #

If you are testing a config live from the desktop & the lua code errors, keybinds do not fully load.
In this case the CLI can be useful for reloading the config.

echo 'awesome.restart()' | awesome-client

Notes #

I'm still using i3wm as my main desktop.

My awesome config files are available on my dotfiles repo on github.
I will probably look into fixing/scripting when I have spare time as it has some advantages over i3wm.

Source #

The source for awesome config is available in my dotfiles repo on github.

dotfiles