Fixing Awesome Wm

A recent update to awesome broke my existing rc.lua configuration. I did some searching in the usual places (Arch forums, git issues for awesomewm, google itself) and found nothing useful.

I have a dual screen setup with awesome so my issue is probably not something that comes up with typical developer testing.

If you have seen the error “Attempt to index a nil value” when trying to (for instance) run a command from the prompt box, this post will walk you through the resolution.

First, Spawn deprecation

While investigating this I found some warnings in the logs about the awful.util.spawn util being deprecated. Luckily this is a simple rename operation. Find all instances of awful.util.spawn and replace them with awful.spawn.

Next, promptbox creation.

I have a ‘promptbox’ for each screen. This was previously created inside a ‘for each screen’ loop with the following:

mypromptbox[screen_index] = awful.widget.prompt({ prompt = "> "})

I have changed this to read:

mypromptbox[screen_index] = awful.widget.prompt.new({ prompt = "> "})

Mouse API update

Finally, the mouse API now returns a screen object rather than an integer for the screen attribute. As such, I had to update promptbox lookups from this:

local promptbox = mypromptbox[mouse.screen]

to this:

local screen = mouse.screen
local promptbox = mypromptbox[screen.index]

That should do it. This took me over an hour to figure out. An unexpected hour. Fixing a window manager.

Sometimes Linux reminds you that freedom isn’t free.