From 8f248d2a7a20243da0de2631e6321fe43a9cfcd6 Mon Sep 17 00:00:00 2001 From: nevaforget Date: Sat, 28 Mar 2026 00:03:39 +0100 Subject: [PATCH] =?UTF-8?q?HID++=20Batterie-Modul=20f=C3=BCr=20Waybar=20mi?= =?UTF-8?q?t=20dynamischer=20Ger=C3=A4teerkennung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Das bisherige battery#keyboard Modul nutzte eine feste hidpp_battery_N Nummer, die sich bei jedem Boot ändern kann. moonarch-waybar-hidpp findet den richtigen Eintrag dynamisch per MODEL_NAME Argument. --- defaults/bin/moonarch-waybar-hidpp | 48 ++++++++++++++++++++++++++++++ defaults/user/waybar/config | 20 +++++-------- 2 files changed, 56 insertions(+), 12 deletions(-) create mode 100755 defaults/bin/moonarch-waybar-hidpp diff --git a/defaults/bin/moonarch-waybar-hidpp b/defaults/bin/moonarch-waybar-hidpp new file mode 100755 index 0000000..87a05fb --- /dev/null +++ b/defaults/bin/moonarch-waybar-hidpp @@ -0,0 +1,48 @@ +#!/usr/bin/bash +# ABOUTME: Waybar-Modul das den Batteriestatus eines HID++ Geräts als JSON ausgibt. +# ABOUTME: Findet den richtigen hidpp_battery_* Eintrag dynamisch per MODEL_NAME (Argument). + +if [ -z "$1" ]; then + echo "Usage: moonarch-waybar-hidpp " >&2 + exit 1 +fi + +MODEL="$1" + +for dev in /sys/class/power_supply/hidpp_battery_*; do + [ -d "$dev" ] || continue + name=$(cat "$dev/model_name" 2>/dev/null) + if [ "$name" = "$MODEL" ]; then + capacity=$(cat "$dev/capacity" 2>/dev/null) + status=$(cat "$dev/status" 2>/dev/null) + + if [ -z "$capacity" ]; then + exit 0 + fi + + class="normal" + if [ "$capacity" -le 20 ]; then + class="critical" + elif [ "$capacity" -le 35 ]; then + class="warning" + fi + + if [ "$status" = "Charging" ]; then + text="${capacity}% 󰌌" + else + text="${capacity}% 󰌌" + fi + + tooltip="${name}: ${capacity}% (${status})" + + jq --compact-output -n \ + --arg text "$text" \ + --arg tooltip "$tooltip" \ + --arg class "$class" \ + --argjson percentage "$capacity" \ + '{text: $text, tooltip: $tooltip, class: $class, percentage: $percentage}' + exit 0 + fi +done + +# Gerät nicht gefunden — keine Ausgabe, Waybar versteckt das Modul diff --git a/defaults/user/waybar/config b/defaults/user/waybar/config index 8e0fa55..6a75df3 100644 --- a/defaults/user/waybar/config +++ b/defaults/user/waybar/config @@ -15,23 +15,19 @@ // "group/net", // "group/sound", // "backlight", + // "custom/keyboard", // "battery", - // "battery#keyboard", // "group/indicators" // ], - // Beispiel: Logitech-Tastatur-Akku anzeigen - // (hidpp_battery_X ggf. anpassen — siehe /sys/class/power_supply/) + // Beispiel: HID++ Geräte-Akku anzeigen (z.B. Logitech Tastatur) + // moonarch-waybar-hidpp findet den richtigen hidpp_battery_* Eintrag dynamisch // - // "battery#keyboard": { - // "bat": "hidpp_battery_4", + // "custom/keyboard": { + // "exec": "moonarch-waybar-hidpp 'G515 LS TKL'", + // "return-type": "json", // "interval": 120, - // "states": { - // "warning": 35, - // "critical": 20 - // }, - // "format": "{capacity}% 󰌌", - // "format-charging": "{capacity}% 󰌌", - // "tooltip-format": "Tastatur: {capacity}%" + // "format": "{}", + // "exec-on-event": false // } }