swiftbar-plugins

Active

SwiftBar-Menüleisten-Plugins für meine lokalen Werkzeuge — reine Darstellungsschicht, Tools bleiben eigenständig

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