Da mich die bestehenden Möglichkeiten zum Ausführen von Aktionen in Abh. des Akku-Ladezustandes nicht zufriedenstellen (welche ich hier zusammengefasst habe), habe ich mich an eine eigene Implementierung gewagt.
Das Resultat ist batwatch, ein Daemon, der UPower-Ereignisse in Empfang nimmt, auswertet und dann entsprechend Skripte ausführt. Die momentane Bedingung für das Ausführen ist "Akku entlädt und verbleibende % kleiner gleich beliebiger Wert". Informationen wie Ladezustand (% und verbleibende Zeit), Name des Akkus und ggf. Vorhandensein eines Zweitakkus werden an die Skripte weitergegeben.
Im Vergleich zu existierenden Lösungen (ACPI-Regel, Desktop-Power-Manager) gibt es folgende Unterschiede:
Im Moment befindet sich das Stück Software in einem frühen Stadium. Prinzipiell ist es lauffähig, ein paar Fehler wird es aber sicherlich haben und die todo-Liste ist noch nicht erschöpft.
Zum schnellen Ausprobieren gibt es ein instagit-Skript
, das sich den aktuellen Quellcode besorgt, das Programm baut und anschließend ausführt (und nebenbei noch die Abhängigkeiten prüft). Die notwendigen Pakete muss man allerdings selber installieren. Generell sind das ein paar Standardwerkzeuge, glib und upower (+ dbus, udev).
[Platzhalter für Liste der notwendigen Pakete -- Debian/Ubuntu: build-essential + ?-dev?]
Für Gentoo (mit portage):
Anschließend:
Sollte das soweit korrekt durchgelaufen sind, findet man batwatch in ~/git-src/batwatch. "bw-instagit.sh" kann dann entsorgt werden (und stattdessen das ggf. aktuellere ~/git-src/batwatch/scripts/instagitlet.sh verwenden).
Minimalisten sollten noch sicherstellen, dass der DBus-Dienst auch läuft
Das Projekt ist auf https://github.com/dywisor/batwatch zu finden. Eine README (en) gibt es auch, die beim Erstellen eigener Skripte hilfreich sein sollte.
Rückmeldungen jeglicher Art ("läuft bei mir (nicht)", Vorschläge, ...) sind erwünscht. Die genaue Liste der notwendigen Pakete für die Distribution eurer Wahl (speziell Debian/Ubuntu) wäre auch hilfreich.
vg,
dywi
Das Resultat ist batwatch, ein Daemon, der UPower-Ereignisse in Empfang nimmt, auswertet und dann entsprechend Skripte ausführt. Die momentane Bedingung für das Ausführen ist "Akku entlädt und verbleibende % kleiner gleich beliebiger Wert". Informationen wie Ladezustand (% und verbleibende Zeit), Name des Akkus und ggf. Vorhandensein eines Zweitakkus werden an die Skripte weitergegeben.
Im Vergleich zu existierenden Lösungen (ACPI-Regel, Desktop-Power-Manager) gibt es folgende Unterschiede:
- reine CLI-Anwendung (kann acpid auch)
- der Grenzwert für das Eintreten d. Ereignisse ist frei wählbar
- Skript wird nur einmal ausgeführt, bis sich der Zustand ändert ((ent-)ladend,...) (müsste man in acpi-Skripten ggf. selbst skripten)
- direkte Übergabe von wesentlichen Akkuinformation ($BATTERY, $BATTERY_TIME, $BATTERY_PERCENT, $FALLBACK_BATTERY, $BATTERY_PATH, ...)
- funktioniert -theoretisch- mit beliebig vielen Akkus/Skripten, insbesondere müssen die Skripte nicht hardgecodet werden
- ist ein zusätzlicher Prozess, der im Hintergrund läuft (der Overhead ist mMn aber vernachlässigbar)
Im Moment befindet sich das Stück Software in einem frühen Stadium. Prinzipiell ist es lauffähig, ein paar Fehler wird es aber sicherlich haben und die todo-Liste ist noch nicht erschöpft.
Zum schnellen Ausprobieren gibt es ein instagit-Skript

[Platzhalter für Liste der notwendigen Pakete -- Debian/Ubuntu: build-essential + ?-dev?]
Für Gentoo (mit portage):
Code:
emerge -a --noreplace glib upower
Anschließend:
Code:
# Verzeichnis wechseln (optional)
cd ${TMPDIR:-/tmp}
# Skript besorgen und entpacken
wget "https://github.com/dywisor/batwatch/blob/master/dist/instagitlet.sh.bz2?raw=true" -O- | bzip2 -dc > ./bw-instagit.sh
# ... und ausführbar machen
chmod u+x ./bw-instagit.sh
# anzeigen lassen, was das Skript machen würde
# Ausgabe bzgl. der Abhängigkeiten lesen!
./bw-instagit.sh -n
# Test-Modus -- dummy-Skript ausführen, wenn Akku entladen wird und der Ladezustand <= 97% beträgt
# (mit -N wird batwatch im Vordergrund ausgeführt)
./bw-instagit.sh -- -N -T 97 -x ./event-scripts/dummy.sh
Sollte das soweit korrekt durchgelaufen sind, findet man batwatch in ~/git-src/batwatch. "bw-instagit.sh" kann dann entsorgt werden (und stattdessen das ggf. aktuellere ~/git-src/batwatch/scripts/instagitlet.sh verwenden).
Minimalisten sollten noch sicherstellen, dass der DBus-Dienst auch läuft

Das Projekt ist auf https://github.com/dywisor/batwatch zu finden. Eine README (en) gibt es auch, die beim Erstellen eigener Skripte hilfreich sein sollte.
Rückmeldungen jeglicher Art ("läuft bei mir (nicht)", Vorschläge, ...) sind erwünscht. Die genaue Liste der notwendigen Pakete für die Distribution eurer Wahl (speziell Debian/Ubuntu) wäre auch hilfreich.
vg,
dywi