swiftbar-plugins
Menüleisten-Plugins für SwiftBar, die den Zustand meiner lokalen Werkzeuge anzeigen.
Dieses Repo enthält nur die Darstellungsschicht. Die eigentliche Logik liegt in
den Tool-Repos, die jeweils eine state.json schreiben:
| Plugin | Liest | Tool-Repo |
|---|---|---|
combined.15m.sh |
alle vier | — |
janitor.30m.sh |
$JANITOR_DIR/state.json |
workbench-janitor |
token-watchdog.15m.sh |
$WATCHDOG_DIR/state.json |
azure-token-watchdog |
localhost-radar.1m.sh |
$RADAR_DIR/state.json |
localhost-radar |
storage-janitor.30m.sh |
$STORAGE_JANITOR_DIR/state.json |
storage-janitor |
Die Trennung ist Absicht: Die Tools laufen eigenständig auf der Kommandozeile und wissen nichts von SwiftBar. Umgekehrt sind die Tools hier optional — fehlt eines, entfällt sein Abschnitt und der Rest funktioniert weiter.
azure-token-watchdog ist ein eigenes
Repo; ohne das Tool ist sein Plugin wirkungslos. Wer nur den Janitor nutzt, nimmt
./install.sh janitor — oder combined, dessen Watchdog-Abschnitt dann einfach entfällt.
localhost-radar läuft in combined.15m.sh im selben 15-Minuten-Takt wie die anderen
beiden — obwohl Ports sich eigentlich schneller ändern als Git-/Token-Status, kann ein
einzelnes SwiftBar-Plugin nur ein Intervall haben (aus dem Dateinamen). Wer aktuellere
Radar-Updates will, installiert zusätzlich localhost-radar.1m.sh als eigenes Icon:
./install.sh combined localhost-radar.
Der Janitor-Abschnitt (in combined.15m.sh und janitor.30m.sh) hat außerdem einen
“🖥️ Dashboard öffnen”-Eintrag, der $JANITOR_DIR/dashboard.sh open per SwiftBars bash=-Param
ausführt — startet workbench-janitors statisches Localhost-Dashboard bei Bedarf und öffnet es
im Browser. Erste bash=-Aktion in diesem Repo (bisher nur href=-Links); idempotent, ein
zweiter Klick startet keinen weiteren Server.
Installation
git clone https://github.com/dernerl/swiftbar-plugins.git
cd swiftbar-plugins
./install.sh # nur combined (ein Icon für alle drei)
./install.sh janitor token-watchdog # oder einzeln, als getrennte Icons
./install.sh combined localhost-radar # combined + zusätzliches 1-Minuten-Radar-Icon
./install.sh --list # zeigt alle Plugins
install.sh legt ~/.swiftbar-plugins/ an, verlinkt die gewählten Plugins dorthin,
setzt SwiftBars Plugin-Ordner darauf und startet SwiftBar neu.
Warum ein eigener Plugin-Ordner?
SwiftBar führt jede ausführbare Datei in seinem Plugin-Ordner aus. Eine Endung
wie .disabled hilft nicht — das ist eine xbar-Konvention, die SwiftBar nicht kennt.
Zeigt der Plugin-Ordner direkt in ein Repo, wird darum jedes Hilfsskript ungewollt
zum Menüleisten-Icon. ~/.swiftbar-plugins/ enthält nur Symlinks auf genau die
Plugins, die laufen sollen.
Konfiguration
Standardmäßig werden die Tools unter ~/projects/ gesucht. Liegen sie woanders:
cp config.example.sh config.sh # config.sh ist gitignored
JANITOR_DIR="$HOME/code/workbench-janitor"
WATCHDOG_DIR="$HOME/code/azure-token-watchdog"
RADAR_DIR="$HOME/code/localhost-radar"
Aufbau
plugins/ von SwiftBar ausgeführt, Dateiname bestimmt das Intervall
lib/common.sh Pfad-Auflösung, gesourcet — liegt bewusst NICHT in plugins/
config.example.sh Vorlage für config.sh
install.sh Symlinks setzen, SwiftBar umkonfigurieren und neu starten
Ein Plugin macht zwei Dinge: den Check des Tools ausführen (SwiftBars
Refresh-Intervall ist der einzige Scheduler, kein launchd nötig) und dessen
state.json als Dropdown rendern.
Lizenz
MIT