awesome window manager
What I didn’t understand about awesome at first is that
without the Lua instructions (in rc.lua
), awesome
doesn’t do anything by default. Which explains why
when I first started it with a new blank rc.lua
file,
I was treated to a blank X session with absolutely no
keyboard shortcuts or visuals of any kind!
On Slackware, awesome can be installed via
(I use sbopkg
to download, install, and manage Slackbuilds.)
To launch awesome, you just need to copy the example .xinitrc
:
$ cp /etc/X11/xinit/xinitrc.awesome ~/.xinitrc $ startx
If you don’t have a custom one, awesome finds the default
rc.lua
. To customize it, copy the default and edit to taste:
$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/ $ vim ~/.config/awesome/rc.lua
Customizing
I really dig the use of Lua to customize awesome. I’ve just started to get my feet wet.
By default, you can restart awesome (X continues to run and all of your applications are right where you left them) to test out configuration changes with either:
-
The little menu in the upper left > awesome > restart
-
Super+Ctrl+r (defined as "modkey" + "Control" + r)
There is also the REPL-style awesome-client
for trying out Lua
commands in the awesome environment. I highly recommend running
it with rlwrap
, which you can also get from Slackbuilds:
That’ll give you command history and editing via Readline:
$ rlwrap -a awesome-client awesome# require("naughty").notify({title="Hi",text="Hello!"})
(That makes a tiny popup appear in the upper right corner!)
The -a
option for rlwrap tells it to "always" use Readline,
which will cease warnings about awesome-client asking for
individual keypresses.
You can also just call awesome-client
with a command and
I suspect this intended to be used with scripts?
$ awesome-client 'require("naughty").notify({title="Hi",text="Hello!"})
Why awesome?
I’m a huge fan of the DWM tiling window manager. I’m still running that on most of my machines and I’m happy with it. But I’m running into certain situations such as my portrait-oriented monitors where it would be nice to have more flexibility without having to update the WM source and re-compile it! Especially since I now try to share "dotfiles" between machines as much as possible to give me a consistent development environment wherever I happen to log in.
awesome’s Lua-based configuration is very appealing.
I really like customizing development environments on different machines to make it really frictionless to work on specific projects. I think awesome is going to fit that need very well.