From b8cd22e425cf4f419f616de261a28d687f12a63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonardo=20Eug=C3=AAnio?= Date: Mon, 1 Sep 2025 01:09:19 -0300 Subject: [PATCH] waybar: add mouse baterry indicator --- scripts/controller-battery | 35 +++++++++++++--------------------- scripts/default.nix | 4 +++- scripts/mouse-battery | 39 ++++++++++++++++++++++++++++++++++++++ scripts/print-battery-icon | 33 ++++++++++++++++++++++++++++++++ system/configuration.nix | 1 + user/waybar/default.nix | 7 ++++++- user/waybar/style.css | 1 + 7 files changed, 96 insertions(+), 24 deletions(-) create mode 100755 scripts/mouse-battery create mode 100755 scripts/print-battery-icon diff --git a/scripts/controller-battery b/scripts/controller-battery index b8ed4f2..2f4257c 100755 --- a/scripts/controller-battery +++ b/scripts/controller-battery @@ -10,29 +10,20 @@ if test -z "$CONTROLLER"; then fi CAPACITY=$(cat "$CONTROLLER/capacity") +STATUS=$(cat "$CONTROLLER/status") -echo -n '󰊴' +echo -n '󰊴 ' -if test "$CAPACITY" -ge 90; then - echo '󰁹' -elif test "$CAPACITY" -ge 90; then - echo '󰂂' -elif test "$CAPACITY" -ge 80; then - echo '󰂁' -elif test "$CAPACITY" -ge 70; then - echo '󰂀' -elif test "$CAPACITY" -ge 60; then - echo '󰁿' -elif test "$CAPACITY" -ge 50; then - echo '󰁾' -elif test "$CAPACITY" -ge 40; then - echo '󰁽' -elif test "$CAPACITY" -ge 30; then - echo '󰁼' -elif test "$CAPACITY" -ge 20; then - echo '󰁻' -elif test "$CAPACITY" -ge 10; then - echo '󰁺' +if test "$STATUS" = "Charging"; then + echo -n "󰂄" else - echo '󰂎' + print-battery-icon "$CAPACITY" fi + +# Add terminating newline +echo + +# Tooltip +echo -n '󰊴' +print-battery-icon "$CAPACITY" +echo " $CAPACITY%" diff --git a/scripts/default.nix b/scripts/default.nix index 3003685..13c19c0 100644 --- a/scripts/default.nix +++ b/scripts/default.nix @@ -137,7 +137,9 @@ libinput libratbag ]; - controller-battery = [ ]; + print-battery-icon = [ ]; + controller-battery = [ print-battery-icon ]; + mouse-battery = [ print-battery-icon ]; _docker-block-external-connections = [ iptables gawk diff --git a/scripts/mouse-battery b/scripts/mouse-battery new file mode 100755 index 0000000..e1fbc3d --- /dev/null +++ b/scripts/mouse-battery @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +MODEL_NAME_FILE=$(rg --files-with-matches G502 /sys/class/power_supply/*/model_name | head -n1) + +if test -z "$MODEL_NAME_FILE"; then + echo + exit 0 +fi + +MOUSE=$(dirname "$MODEL_NAME_FILE") + +if test -z "$MOUSE"; then + echo + exit 0 +fi + +CAPACITY=$(cat "$MOUSE/capacity") +STATUS=$(cat "$MOUSE/status") + +echo -n '🖱️' + +if test "$STATUS" = "Charging"; then + echo -n "󰂄" +else + print-battery-icon "$CAPACITY" +fi + +if test "$CAPACITY" -lt 50; then + echo -n "$CAPACITY%" +fi + +echo + +# Tooltip +echo -n '🖱️' +print-battery-icon "$CAPACITY" +echo " $CAPACITY%" diff --git a/scripts/print-battery-icon b/scripts/print-battery-icon new file mode 100755 index 0000000..b893315 --- /dev/null +++ b/scripts/print-battery-icon @@ -0,0 +1,33 @@ +#!/bin/sh + +set -e + +if test $# -ne 1; then + echo "Usage $0" >&2 + exit 1 +fi +CAPACITY="$1" + +if test "$CAPACITY" -ge 90; then + echo -n '󰁹' +elif test "$CAPACITY" -ge 90; then + echo -n '󰂂' +elif test "$CAPACITY" -ge 80; then + echo -n '󰂁' +elif test "$CAPACITY" -ge 70; then + echo -n '󰂀' +elif test "$CAPACITY" -ge 60; then + echo -n '󰁿' +elif test "$CAPACITY" -ge 50; then + echo -n '󰁾' +elif test "$CAPACITY" -ge 40; then + echo -n '󰁽' +elif test "$CAPACITY" -ge 30; then + echo -n '󰁼' +elif test "$CAPACITY" -ge 20; then + echo -n '󰁻' +elif test "$CAPACITY" -ge 10; then + echo -n '󰁺' +else + echo -n '󰂎' +fi diff --git a/system/configuration.nix b/system/configuration.nix index 2380d22..ec44aed 100644 --- a/system/configuration.nix +++ b/system/configuration.nix @@ -49,6 +49,7 @@ services.logind.extraConfig = '' HandlePowerKey=suspend ''; + services.upower.enable = true; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/user/waybar/default.nix b/user/waybar/default.nix index 696f062..c9ec809 100644 --- a/user/waybar/default.nix +++ b/user/waybar/default.nix @@ -38,6 +38,7 @@ in "custom/playerctl" "tray" "custom/controller-battery" + "custom/mouse-battery" "custom/caffeine" "pulseaudio" (lib.optional (osConfig.services.vpn.enable or false) "custom/vpn") @@ -164,7 +165,11 @@ in format = "{}"; exec = lib.getExe pkgs.controller-battery; interval = 1; - tooltip = false; + }; + "custom/mouse-battery" = { + format = "{}"; + exec = lib.getExe pkgs.mouse-battery; + interval = 1; }; "custom/caffeine" = { format = "{}"; diff --git a/user/waybar/style.css b/user/waybar/style.css index 36c6ebd..9ff675f 100644 --- a/user/waybar/style.css +++ b/user/waybar/style.css @@ -38,6 +38,7 @@ window#waybar.solo { #custom-mpd, #custom-playerctl, #custom-controller-battery, +#custom-mouse-battery, #tray, #clock, #network,