minimiert statt beendet — dein Hörbuch schläft im Tray 🎧
- JavaScript 79.4%
- HTML 17.5%
- Shell 3%
- Nix 0.1%
| assets | ||
| renderer | ||
| scripts | ||
| spikes | ||
| .gitignore | ||
| .toolctl-install | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| cliff.toml | ||
| LICENSE | ||
| main.js | ||
| package-lock.json | ||
| package.json | ||
| pemmikan.md | ||
| playzen.sh | ||
| README.md | ||
| shell.nix | ||
playzen
Audiobookshelf-Player mit Hide-to-Systray statt Beenden — Fenster verschwindet in den Tray, das Hörbuch läuft weiter.
Features
- Lädt Audiobookshelf direkt (
https://audiothek.mueller.network/) in einem eigenen Electron-Fenster, eigenes Profil, getrennt von Holms Chromium. - Fenster startet versteckt, Schließen versteckt es nur (Tray statt Beenden).
- Tray-Icon in polybars bestehendem
internal/tray, vier Zustände (Stopp/ Pause/Radio/ABS) — Rechtsklick fürs Menü (Linksklick toggelt direkt das Fenster, s. #6), Mittelklick/MediaPlayPause/F4togglen Play/Pause. - Radio über radiotray-ngs
bookmarks.json(Tray-Untermenü,.m3u/.plswird aufgelöst, ICY-Metadaten live). - Kleines floatendes Radio-Fenster (frameless, Kopf = Dragzone, ESC/✕ verstecken): Now-Playing mit Cover + Live-Metadaten, ⏮⏯⏹⏭ + Lautstärke, root-Sender direkt, Gruppen klappbar. Letzter Sender überlebt Neustarts.
- Sender-Cover per
scripts/fetch-covers.mjs(somafm/AudioAddict/laut.fm- APIs + Website-Heuristik) nach~/.config/playzen/covers/— 116 von 126 Sendern abgedeckt. - „Alles stoppen" falls ABS und Radio gleichzeitig laufen.
- D-Bus-Service
network.mueller.playzen(get_player_state, gleiches Feldschema wie radiotray-ngscom.github.radiotray_ng) — genutzt vonconky_nowplaying.sh. - Login läuft über Cloudrons SSO (
id.nerdraum.de); dessen WebAuthn- „Conditional UI" für Passkeys wird abgeschaltet, weil sie in dieser Electron-Version ohne Platform-Authenticator das 2FA-Feld blockiert.
Details und Fallstricke: pemmikan.md.
Aufruf
./playzen.sh
Voraussetzungen
- NixOS mit
pkgs.electron(shell.nixim Repo-Root) - Audiobookshelf-Instanz zum Abspielen
Changelog
Siehe CHANGELOG.md. Wird per git-cliff aus Conventional Commits generiert. Manuell nicht editieren — stattdessen Commit-Messages sauber halten:
feat(scope): …→ Addedfix(scope): …→ Fixedperf(scope): …→ Performancerefactor(scope): …→ ChangedBREAKING CHANGE: …im Body → Major-Bump
Installation
git clone ssh://git@forgejo.mueller.network:2222/holm.tools.public/playzen.git
Lizenz
MIT — Copyright (c) 2026 holm / Christian Müller, unter Zuhilfenahme von Claude.ai (Anthropic).
Siehe LICENSE.