#!/usr/bin/env lua -- Create, update and remove wmii bar boxes. -- -- Copyright (c) 2009 Jochen Kupperschmidt <http://homework.nwsnet.de/> -- Version: 14-Aug-2009 -- Released under the terms of the MIT License. -- configuration local LOCALE = "de_DE.UTF-8" -- Update the content of the named bar field. function update_bar_field(name, value) local f = io.popen("wmiir write /rbar/" .. name, "w") f:write(value) f:close() end -- Get the load average. function get_loadavg() -- Read the first (and only) line of uptime's output. local f = io.popen("uptime") local line = f:read("*l") f:close() -- Extract and format the load average. local match = line:match("load average: (.*)$") if match ~= nil then local replaced, count = match:gsub(",", "", 2) return replaced end return nil end -- bar fields local bar_fields = { ["01_load"] = function() return get_loadavg() end, ["02_date"] = function() return os.date("%A, %d. %B %Y") end, ["03_time"] = function() return os.date("%H:%M:%S") .. " Uhr" end, } -- commands local cmds = { {"create", "Create bar fields.", function() for bar_field_name, func in pairs(bar_fields) do local f = io.popen("wmiir create /rbar/" .. bar_field_name, "w") f:write("") f:close() end end}, {"update", "Update bar fields.", function() os.setlocale(LOCALE) for bar_field_name, func in pairs(bar_fields) do update_bar_field(bar_field_name, func()) end end}, {"remove", "Remove bar fields.", function() for bar_field_name, func in pairs(bar_fields) do os.execute("wmiir remove /rbar/" .. bar_field_name) end end}, } table.insert(cmds, 1, {"help", "List available commands.", function() for i, cmd in pairs(cmds) do io.write(string.format(" %-8s\t%s\n", cmd[1], cmd[2])) end end}) for i, cmd in ipairs(cmds) do if cmd[1] == arg[1] then cmd[3]() os.exit(0) end end print("Unknown command. See '" .. arg[0] .. " help' for available commands.") os.exit(2)