diff options
| author | venomade <venomade@venomade.com> | 2026-02-11 11:42:58 +0000 |
|---|---|---|
| committer | venomade <venomade@venomade.com> | 2026-02-11 11:42:58 +0000 |
| commit | 0bd150185551b6d8835d022c15a5f6e832d51113 (patch) | |
| tree | 10bf3f3443df49a44eb47b328b73b7e76b0a4924 /.local/bin/battery-screen | |
| parent | 8d688d1107c46b6dfdcaf02fa5c9c4c8a4640e65 (diff) | |
Asahi
Soft reset of dotfiles specific to Asahi, Sway and Neovim.
Diffstat (limited to '.local/bin/battery-screen')
| -rwxr-xr-x | .local/bin/battery-screen | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/.local/bin/battery-screen b/.local/bin/battery-screen new file mode 100755 index 0000000..26ac78a --- /dev/null +++ b/.local/bin/battery-screen @@ -0,0 +1,70 @@ +#!/usr/bin/env lua + +local function read(path) + local f = io.open(path) + if not f then return nil end + local v = tonumber(f:read('*l')) + f:close() + return v +end + +local function batterytext() + local base = '/sys/class/power_supply/macsmc-battery/' + + local energy_now = read(base .. 'energy_now') + local energy_full = read(base .. 'energy_full') + local status_f = io.open(base .. 'status') + + if not energy_now or not energy_full or not status_f then + return { { full_text = 'bat ?' } } + end + + local status = status_f:read('*l') + status_f:close() + + local capacity = math.floor(energy_now / energy_full * 100 + 0.5) + + local text_color = '#ffffff' + local battery_symbol = ' ' + + if capacity < 30 then + text_color = '#ed8796' + battery_symbol = '' + elseif capacity > 70 then + text_color = '#a6da95' + battery_symbol = '' + else + text_color = '#eed49f' + battery_symbol = '' + end + + local symbol = ({ + Charging = '', + Discharging = battery_symbol, + })[status] or ' ' + + return string.format('%s %2d%%', symbol, capacity), text_color +end + +function hexToRgb(hex) + hex = hex:gsub("#", "") + + local r = tonumber(hex:sub(1, 2), 16) + local g = tonumber(hex:sub(3, 4), 16) + local b = tonumber(hex:sub(5, 6), 16) + + return r, g, b +end + +function printHexColor(text, hex) + local r, g, b = hexToRgb(hex) + local colorCode = string.format("\27[38;2;%d;%d;%dm", r, g, b) + local resetCode = "\27[0m" + + print(colorCode .. text .. resetCode) +end + +while true do + printHexColor(batterytext()) + os.execute("sleep 1") -- Wait for 1 second +end |
