Ein minimalistisches Tray-Tool für Linux, das verhindert, dass dein System in den Ruhezustand wechselt oder der Bildschirm abschaltet – inspiriert von Microsoft PowerToys „Keep Awake".
Das Tool lebt ausschließlich in der Tray (kein Fenster) und wird komplett über das Tray-Menü gesteuert. Das Icon ist eine Kaffeetasse: grau wenn inaktiv, grün sobald das System wach gehalten wird.
- Aus – das System verhält sich normal, alle Sperren werden freigegeben
- Unbegrenzt wach – hält das System wach, bis du es wieder ausschaltest
- Timer – wach für eine feste Dauer (30 Min / 1 Std / 2 Std / 4 Std), danach automatisch zurück auf „Aus"
- Bildschirm anlassen – verhindert zusätzlich das Abdunkeln/Sperren des Bildschirms
- Beim Login starten – Autostart-Eintrag direkt aus dem Menü an-/abschalten
- Beenden
Die zuletzt gewählte Einstellung von „Bildschirm anlassen" wird gespeichert und beim nächsten Start wiederhergestellt.
- Linux mit einer Desktop-Umgebung, die das StatusNotifierItem-Protokoll unterstützt (z. B. Ubuntu/GNOME mit aktiver AppIndicator-Erweiterung, KDE Plasma)
- D-Bus mit
org.freedesktop.login1(systemd-logind) undorg.freedesktop.ScreenSaver - Zum Bauen: Rust (Stable, mit
cargo)
Entwickelt und getestet unter Ubuntu 26.04 LTS (GNOME/Wayland).
Das mitgelieferte Skript baut die Release-Binary, installiert sie und richtet Autostart sowie einen App-Eintrag ein:
./install.shDanach läuft das Tool nach dem nächsten Login automatisch. Sofort starten:
~/.local/bin/keep-awake &Das Skript installiert nach:
| Pfad | Zweck |
|---|---|
~/.local/bin/keep-awake |
die Binary |
~/.local/share/applications/keep-awake.desktop |
App-Eintrag (App-Menü) |
~/.config/autostart/keep-awake.desktop |
Autostart beim Login |
Konfiguration wird in ~/.config/keep-awake/config.toml gespeichert.
cargo build --release
./target/release/keep-awakepkill -x keep-awake
rm -f ~/.local/bin/keep-awake \
~/.local/share/applications/keep-awake.desktop \
~/.config/autostart/keep-awake.desktop
rm -rf ~/.config/keep-awakeKeep Awake nimmt keine dauerhaften Systemeinstellungen vor, sondern setzt D-Bus-Inhibitor-Sperren, die nur so lange gelten, wie das Tool sie hält:
- System wach halten:
org.freedesktop.login1→Inhibit("sleep", …, "block"). Blockiert Auto-Suspend (GNOME und logind-IdleAction), ohne die Session-Idle zu unterdrücken — ohne „Bildschirm anlassen“ gilt der normale DE-Idle-Timer (Dimmen/Blank). Keinidle-Inhibit: der würde Dimmen verhindern. Solange die Sperre aktiv ist, ist auch manuelles Suspendieren über das Menü blockiert – Keep Awake vorher ausschalten. Lid-Close bleibt separat (handle-lid-switch). Die Sperre ist ein Datei-Deskriptor; wird er geschlossen, ist sie sofort frei. - Bildschirm anlassen:
org.freedesktop.ScreenSaver→Inhibit(…)verhindert Abdunkeln, Bildschirmschoner und Sperre. Freigabe überUnInhibit(cookie).
Beim Beenden (oder Prozessende) werden alle Sperren automatisch freigegeben.
linux.keepAwake/
├─ Cargo.toml
├─ install.sh # Build + Installation + Autostart
└─ src/
├─ main.rs # tokio-Runtime, Controller-Loop, Timer
├─ tray.rs # Tray-Icon, Menü, State-Modell
├─ inhibit.rs # D-Bus-Inhibitoren (login1 + ScreenSaver)
├─ icon.rs # prozedural gezeichnetes Kaffeetassen-Icon
└─ config.rs # Konfiguration + Autostart-Eintrag
Technik: pures Rust (kein Webview) mit ksni (Tray), zbus (D-Bus) und
tokio (Async-Runtime/Timer).