minimiert statt beendet — dein Hörbuch schläft im Tray 🎧
  • JavaScript 79.4%
  • HTML 17.5%
  • Shell 3%
  • Nix 0.1%
Find a file
2026-08-28 00:23:53 +02:00
assets feat: Radio-Fenster-Feinschliff nach Erstabnahme 2026-08-27 23:25:36 +02:00
renderer feat: root direkt gelistet, letzter Sender persistent, frameless, ESC 2026-08-27 23:35:42 +02:00
scripts fix: Cover-Luecken geschlossen (Heuristik-Kette, Overrides, tote bookmarks-Bilder) 2026-08-28 00:04:48 +02:00
spikes feat: ABS-Webview-Machbarkeit bestätigt 2026-08-24 13:05:26 +02:00
.gitignore feat: Projekt-Grundgerüst + Tray-Machbarkeits-Spike 2026-08-23 23:21:14 +02:00
.toolctl-install fix: npm-Abhaengigkeiten in frischen Checkouts installieren 2026-08-27 23:03:07 +02:00
CHANGELOG.md chore(release): v0.2.0 2026-08-28 00:23:42 +02:00
CLAUDE.md feat: Projekt-Grundgerüst + Tray-Machbarkeits-Spike 2026-08-23 23:21:14 +02:00
cliff.toml feat: Projekt-Grundgerüst + Tray-Machbarkeits-Spike 2026-08-23 23:21:14 +02:00
LICENSE feat: Projekt-Grundgerüst + Tray-Machbarkeits-Spike 2026-08-23 23:21:14 +02:00
main.js fix: Cover-Luecken geschlossen (Heuristik-Kette, Overrides, tote bookmarks-Bilder) 2026-08-28 00:04:48 +02:00
package-lock.json feat: D-Bus-Service + Trackwechsel-Notification + Mittelklick-Toggle 2026-08-24 13:42:43 +02:00
package.json feat: D-Bus-Service + Trackwechsel-Notification + Mittelklick-Toggle 2026-08-24 13:42:43 +02:00
pemmikan.md docs: pemmikan + README auf Stand Radio-Fenster/Cover 2026-08-28 00:23:32 +02:00
playzen.sh fix: npm-Abhaengigkeiten in frischen Checkouts installieren 2026-08-27 23:03:07 +02:00
README.md docs: pemmikan + README auf Stand Radio-Fenster/Cover 2026-08-28 00:23:32 +02:00
shell.nix feat: Projekt-Grundgerüst + Tray-Machbarkeits-Spike 2026-08-23 23:21:14 +02:00

playzen

License: MIT

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/F4 togglen Play/Pause.
  • Radio über radiotray-ngs bookmarks.json (Tray-Untermenü, .m3u/.pls wird 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-ngs com.github.radiotray_ng) — genutzt von conky_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.nix im 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): … → Added
  • fix(scope): … → Fixed
  • perf(scope): … → Performance
  • refactor(scope): … → Changed
  • BREAKING 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.