nixos-config/modules/home-manager/ricing/awesomewm/dotfiles/signal/system/battery.lua
2024-07-12 18:19:30 +09:00

35 lines
1.1 KiB
Lua

local awful = require('awful')
local gears = require('gears')
local gfs = gears.filesystem
-- Battery Fetching and Signal Emitting
---------------------------------------
-- Battery information script
local battery_script =
"bash -c 'echo $(cat /sys/class/power_supply/BAT0/capacity) echo $(cat /sys/class/power_supply/BAT0/status)'"
local function battery_emit()
awful.spawn.easy_async_with_shell(
battery_script, function(stdout)
-- The battery level and status are saved as a string. Then the level
-- is stored separately as a string, then converted to int. The status
-- is stored as a bool, and also as an int for registering changes in
-- battery status.
local level = string.match(stdout:match('(%d+)'), '(%d+)')
local level_int = tonumber(level) -- integer
local power = not stdout:match('Discharging') -- boolean
awesome.emit_signal('signal::battery', level_int, power)
end)
end
-- Refreshing
-------------
gears.timer {
timeout = 20,
call_now = true,
autostart = true,
callback = function()
battery_emit()
end
}