One year ago I wrote
a small
article about my usage of
the awesome window
manager. Specifics of awesome and benefits of using it
(or tiling window managers in general) I would rather leave for
another article. In this one I'd like to revisit some of my projects
and code related to awesome. Last year I just upgraded from
v2 to v3 which introduced the Lua programming language as a way
of configuring and extending awesome. My goal then was to create an
identical environment as I had with v2. One of the major obstacles was
replacing the Ruby widget library called Amazing with
a Lua one called Wicked. I still remember my first widgets,
knowing very little Lua I had to resort to Awk to grab battery
or mbox information. At the time I just started visiting the
#awesome IRC channel
on OFTC. I clearly remember
someone saying "it would be nicer if it was in Lua"...
A year has passed, so what has
changed? Previously
I wrote about vicious,
a modular widget library written in Lua which builds on the
foundations laid down by Wicked. I had certain ideas about
widgets that were not shared by a lot of people, so I had to do it for
myself. Making Wicked modular would have been a big design
change, and on top of that I wasn't confident enough in my Lua so I
decided not to contribute back, but to create a new project. Now I am
very satisfied how it turned out, I'm satisfied with the code and with
contributions of other users. Result is a series of Lua modules that
gather data about your system, basically system monitors like those
provided by Conky... at the moment we use them to
feed awesome widgets but they could be used in other places
just as easy. For example one could use them for populating
the Ion window
manager status-bar. I made the project public sometime in June, it
now counts 25+ widget types and gets 10+ downloads daily. It's hard to
make an estimate about the number of actual users, but the code was
downloaded well over 700 times.
Since I published the vicious git repository I wanted to use
the git web interface for more than just those few files, so I put my
awesome configuration in git and started pushing the
changes. This easy access, a lot of custom (and well commented) code
and my solutions to various usability problems quickly made
my awesome-configs
repo into a very popular starting point for new awesomers. It gets
almost as much clone requests and downloads as the vicious
repository. My Zenburn
theme also became very popular, in fact so popular that
from v3.4 it is a part of the awesome
distribution. That's not all I contributed to the awesome
tree, in recent months I started sending more and more code
contributions... I contributed to other open source projects but I'm
very proud of being a part of this one. It has a lot of users, most of
which are experienced Unix users with an interest in
improving their productivity and desktop usability. As someone said on
IRC just yesterday "awesome is the ultimate sysadmin
console".
One of my modules that is just gaining some attention is
the Scratchpad
manager. It brings back functionality that was present in v2, but
also expands on it by providing a drop-down applications
manager, contributed by the author
of Wicked. Former Ion users will also be familiar
with the scratch.pad functionality, while
the scratch.drop module allows users to have their favorite
terminal emulator, or application launcher like gmrun, slide
in from a screen edge. Another useful module that can be found in my
repo is
the On-Screen
Keyboard, initially written by another awesome user,
which I ported to v3.4. You can see it in action
in this
screenshot.
Finally let's see what other users have been up to. The author
of Wicked
wrote Eminent -
a dynamic tagging library (its functionality will be familiar
to WMII users)
and Rodentbane
- which allows for rapid control of the mouse pointer using only the
keyboard. Other notable modules
are Revelation
(implementing OSX like
expose), Shifty
(dynamic tagging with advanced client matching)
and Obvious
(another widget library). With this I conclude my little tour of
planet awesome.