I spent a few hours last night customizing the awesome window manager (wm) on my new laptop install. I’ve been using awesome for a while now (years) but I haven’t done much by way of customizing my setup. The default config from Debian, with a few small tweeks to default tags and layouts, has been sufficient. But having a battery gauge on my laptop is pretty important so I carved out a few minutes to set this up.
As always I’m not the first person to have this problem. Luckily those that came before me put their work up on github so all I had to do was clone awesome-batteryinfo, copy battery.lua
into my ~/.config/awesome
directory and integrate the battery widget into my rc.lua
.
Integrating this widget is pretty painless. There are four steps: First you have lua pull in battery.lua:
require("battery")
Second you instantiate the widget:
mybatterywidget = widget({type = "textbox", name = "batterywidget", align = "right" })
Third you place the widget in a wibox. Debian has a wibox positioned across the top of each screen. I took the batterywidget created above and added it to the wibox widget list along side the layoutbox, textclock etc. My final mywibox.widgets
looks like this:
mywibox[s].widgets = { { mylauncher, mytaglist[s], mypromptbox[s], layout = awful.widget.layout.horizontal.leftright }, mylayoutbox[s], mytextclock, batterywidget, s == 1 and mysystray or nil, mytasklist[s], layout = awful.widget.layout.horizontal.rightleft }
Finally I set up a timed event to update the widget every 20 seconds. I also seeded the widget text to show the battery data at the time the widget is created. This means that the widget will come up with meaningful data before the first even fires (20 seconds after init):
-- seed the battery widget: don't wait for first timer mybatterywidget.text = batteryInfo("BAT0") -- timer to update battery widget mybatterywidget_timer = timer({timeout = 20}) mybatterywidget_timer:add_signal("timeout", function() mybatterywidget.text = batteryInfo("BAT0") end) mybatterywidget_timer:start()
That’s all there is to it. Thanks to koenwtje for the great widget. I should probably collect my awesome configs into a git repo so I don’t have to go back and rediscover how to do this every time I build a new system …