From 94ac778fcda4b9245d40afb79e56e1fd9b1ba48d Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Mon, 17 Feb 2025 12:40:34 +1100 Subject: bar: battery indicator --- scss/bar.scss | 8 ++++++++ src/modules/bar.tsx | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/scss/bar.scss b/scss/bar.scss index a0fd230..ce3e2ea 100644 --- a/scss/bar.scss +++ b/scss/bar.scss @@ -103,6 +103,14 @@ color: scheme.$mauve; } + .battery { + color: scheme.$teal; + + .low { + color: scheme.$red; + } + } + .date-time { color: scheme.$peach; } diff --git a/src/modules/bar.tsx b/src/modules/bar.tsx index ea953d7..cd36e42 100644 --- a/src/modules/bar.tsx +++ b/src/modules/bar.tsx @@ -11,6 +11,7 @@ import { execAsync, register, Variable } from "astal"; import { bind, kebabify } from "astal/binding"; import { App, Astal, astalify, Gdk, Gtk, type ConstructProps } from "astal/gtk3"; import { bar as config } from "config"; +import AstalBattery from "gi://AstalBattery"; import AstalBluetooth from "gi://AstalBluetooth"; import AstalHyprland from "gi://AstalHyprland"; import AstalNetwork from "gi://AstalNetwork"; @@ -20,6 +21,19 @@ import AstalWp01 from "gi://AstalWp"; const hyprland = AstalHyprland.get_default(); +const getBatteryIcon = (perc: number) => { + if (perc < 0.1) return "󰁺"; + if (perc < 0.2) return "󰁻"; + if (perc < 0.3) return "󰁼"; + if (perc < 0.4) return "󰁽"; + if (perc < 0.5) return "󰁾"; + if (perc < 0.6) return "󰁿"; + if (perc < 0.7) return "󰂀"; + if (perc < 0.8) return "󰂁"; + if (perc < 0.9) return "󰂂"; + return "󰁹"; +}; + const hookFocusedClientProp = ( self: AstalWidget, prop: keyof AstalHyprland.Client, @@ -448,6 +462,13 @@ const NotifCount = () => ( ); +const Battery = () => ( + `module battery ${p < 0.2 ? "low" : ""}`)}> + +); + const DateTime = () => (