Migrate to rcm
This commit is contained in:
88
notion/statusd_battery.lua
Normal file
88
notion/statusd_battery.lua
Normal file
@@ -0,0 +1,88 @@
|
||||
-- A battery statusbar meter for the ion3 window manager for Apple Powerbooks
|
||||
-- running Linux. These machines do not use APM or ACPI but have a PMU, Power
|
||||
-- Management Unit.
|
||||
--
|
||||
-- Install the meter in ~/.ion3/statusd_battery.lua
|
||||
--
|
||||
-- Edit your ~/.ion3/cfg_statusbar.lua to add this meter:
|
||||
-- template="%date - %battery %filler%systray",
|
||||
--
|
||||
-- When the battery is charged and you're on AC power, you don't see anything.
|
||||
-- When the system is on AC power and charging the battery, you'll see a tilde
|
||||
-- sign, ~, followed by the percentage that the battery is charged. When the
|
||||
-- system is running on battery power, you'll an equal, =, sign, followed by
|
||||
-- the remaining capacity in percentages.
|
||||
--
|
||||
-- See /usr/src/linux/include/battery.h and
|
||||
-- /usr/src/linux/drivers/macintosh/via-battery.c for some documentation on the
|
||||
-- exported data.
|
||||
--
|
||||
-- Author: Jeroen Pulles
|
||||
-- Rotterdam, 15 november 2007
|
||||
|
||||
|
||||
local battery_base_settings = {
|
||||
update_interval = 10*1000, -- every 15 sec
|
||||
important_threshold = 33 , -- 33% cap. remaining
|
||||
critical_threshold = 20, -- 15% capacity remaining
|
||||
}
|
||||
|
||||
local battery_settings = battery_base_settings
|
||||
|
||||
local battery_timer
|
||||
|
||||
|
||||
-- Read the battery battery info
|
||||
local function read_battery_data ()
|
||||
local f = assert(io.popen("upower -i /org/freedesktop/UPower/devices/battery_BAT0"))
|
||||
local data = f:read("*all")
|
||||
f:close()
|
||||
|
||||
local _, _, capacity = string.find(data, "percentage:%s*(%d+)")
|
||||
local _, _, remaining = string.find(data, "time to %w+:%s*(%d+\.?%d*%s*%w*)")
|
||||
local _, _, status = string.find(data, "state:%s*(%w+)")
|
||||
|
||||
return status, tonumber(capacity), remaining
|
||||
end
|
||||
|
||||
-- Write the current state to the statusbar:
|
||||
local function inform_battery ()
|
||||
|
||||
local status, cap, remaining = read_battery_data()
|
||||
|
||||
if status == 'Discharging' then
|
||||
-- On battery power, percentage remaining:
|
||||
statusd.inform("battery", string.format("BAT %d%%", cap))
|
||||
else
|
||||
-- Charging the battery on AC power, percentage charged:
|
||||
statusd.inform("battery", string.format("AC %d%%", cap))
|
||||
end
|
||||
|
||||
if cap <= battery_settings.critical_threshold then
|
||||
statusd.inform("battery_hint", "critical")
|
||||
elseif cap <= battery_settings.important_threshold then
|
||||
statusd.inform("battery_hint", "important")
|
||||
else
|
||||
statusd.inform("battery_hint", "normal")
|
||||
end
|
||||
|
||||
statusd.inform("battery_remaining", remaining)
|
||||
end
|
||||
|
||||
|
||||
-- Statusbar update loop:
|
||||
local function update_battery ()
|
||||
inform_battery()
|
||||
battery_timer:set(battery_settings.update_interval, update_battery)
|
||||
end
|
||||
|
||||
|
||||
-- Run the script:
|
||||
if statusd then
|
||||
-- we're a statusbar plugin:
|
||||
battery_settings = table.join(statusd.get_config("battery"), battery_base_settings)
|
||||
battery_timer = statusd.create_timer()
|
||||
update_battery()
|
||||
end
|
||||
|
||||
-- vim: set ts=4 sw=4 expandtab
|
||||
Reference in New Issue
Block a user