
Fügen Sie in drei einfachen Schritten benutzerdefinierte Menüleistenprogramme auf macOS hinzu:
Sie können Plugins aus dem fantastischen Bitbar -Repository oder in Swiftbar selbst mit dem Menüpunkt Get Plugins... erhalten.
Herunterladen von Github -Veröffentlichungen
oder mit Homebrew installieren
brew install swiftbar
Läuft auf MacOS Catalina (10.15) und auf.
SwiftBar/SwiftBar.xcodeprojSwiftbar ist mit einem Plugin -Repository gebündelt. Sie können bei Swiftbar → Plugins erhalten ...

Wenn Sie Plugin hinzufügen möchten oder andere Fragen zu Repository -Inhalten haben möchten, lesen Sie bitte dieses Problem.
Um SwiftBar ein neues Plugin hinzuzufügen, müssen Sie ein ausführbares Skript erstellen, das dem erforderlichen Format (siehe unten) in Plugin Folder einfügt.
Mit dem ersten Start wird Swiftbar Sie auffordern, den Plugin Folder einzustellen. Swiftbar versucht, jede Datei in diesem Ordner als Plugin zu importieren.
Wichtig :
.swiftbarignore Sie können einen Ordner durch Vorbereitung ausblenden . oder mit diesem Befehl chflags hidden <folder name> .
Plugin -Dateien müssen das folgende Format annehmen:
{name}.{time}.{ext}
Dauermodifikatoren:
Beispiel Dateiname: date.1m.sh
Unabhängig davon, ob Sie ein Plugin aus dem Plugin-Repository verwenden oder Ihre eigenen erstellen, werden Plugins zunächst in der Menüleiste in keiner festgelegten Reihenfolge angezeigt. Sie können jedoch neu ordnen, wie sie angezeigt werden, indem Sie CMD gedrückt halten und sie ziehen (dieser Vorgang kann manchmal auch für einige andere nicht-schwiftbare Symbole in der Menüleiste verwendet werden). Die Plugin-Position wird erinnert, es sei denn, Sie ändern den Namen der Plugin-Datei. In diesem Fall müssen sie erneut positioniert werden.
Plugin ist ein ausführbares Skript in der Sprache Ihrer Wahl. Wenn Swiftbar eine neue Datei im Plugin Folder erkennt, wird diese Datei bei Bedarf ausführbar und ausgeführt.
Das Skript sollte in dem erforderlichen Format Ausgabe ( STDOUT ) erzeugen (siehe nächstes Kapitel). Skriptfehler sollten in STDERR weitergeleitet werden.
Die Plugin -API wird aus der Bitbar xbar übernommen, was bedeutet, dass Swiftbar alle vorhandenen Bitbar XBAR -Plugin ausführen kann.
Beim Analysieren von Plugin -Ausgang erkennt Swiftbar die folgenden Blöcke:
Header ist alles vor dem ersten --- . Jedes --- nach dem ersten wird als Menüabschied interpretiert. Sie haben eine oder mehrere Zeilen im Kopf.
Das einfachste Plugin sieht so aus:
echo " This is Menu Title "Wenn Sie mehrere Titel bereitstellen, werden die bereitgestellten Titel in der Menüleiste gefahren und im Dropdown -Menü angezeigt:
echo " This is a primary Menu Title "
echo " This is a secondary Menu Title "
echo " This is a n-th Menu Title "
echo " --- "
echo " This is not a Menu Title, this will be shown in the drop-down menu only " Die Skriptausgabe sowohl für Header als auch für den Körper wird nach Zeile ( n ) aufgeteilt. Jede Zeile muss diesem Format folgen:
<Item Title> | [param = ...]
Wo:
= getrennt ist. Verwendung | Parameter vom Titel trennen. Textformatierung :
| Parameter | Wert | Beschreibung |
|---|---|---|
color | CSS -Farbe oder Hex, light_color,dark_color | Legt Artikelfarbe der Art und Weise fest. Wenn nur eine Farbe bereitgestellt wird, wird sie sowohl für helles als auch für dunkler Aussehen verwendet. |
sfcolor | CSS -Farbe oder Hex, light_color,dark_color | Legt SF -Symbolfarbe fest. Wenn nur eine Farbe bereitgestellt wird, wird sie sowohl für helles als auch für dunkler Aussehen verwendet. Wenn Sie mehrere SF sfcolor2 berühmen |
font | MacOS -Schriftname | Legt den Schriftnamen im Elementtext fest, um sie zu verwenden |
size | Nummer | Legt die Artikelgröße der Elemente fest |
md | WAHR | Aktiviert die Markdown -Unterstützung im Menütitel für **bold** und *italic* |
sfsize | Nummer | Legt die Größe für das SF -Symbolbild fest, das in Text eingebettet ist |
length | Nummer | STRIMS -Element Text zu einer bereitgestellten Anzahl von Zeichen. Der vollständige Titel wird in einem Tooltip angezeigt. |
trim | WAHR | Trims Whitespace -Charaktere |
ansi | WAHR | Ermöglicht die Unterstützung von ANSI -Farbcodes. Konflikte mit: symbolize |
emojize | FALSCH | Deaktiviert das Parsen von Emojis im Github -Stil (z. B :mushroom: in?). Erfordert: symbolize=false wenn Sie auf True setzen. |
symbolize | FALSCH | Deaktiviert die Parsen von SF -Symbolen (z. B. "SF Symbols Test :sun.max: :cloud.fill: :gamecontroller.fill: :bookmark: :sun.dust:" → ). Immer False auf Catalina. |
Bilder :
| Parameter | Wert | Beschreibung |
|---|---|---|
dropdown | FALSCH | Nur für Elemente im Header anwendbar. Wenn auf False eingestellt wird, wird das Element nicht im Dropdown -Menü angezeigt, sondern in der Menüleiste gefahren. |
alternate | WAHR | Markiert eine Zeile als Alternative zum vorherigen, wenn die Optionstaste ( ⌥ ) in der Dropdown -Down -Stelle gedrückt wird. |
image | Bild codiert in Base64, light_image,dark_image | Legt ein Bild für Element fest. Wenn nur ein Bild bereitgestellt wird, wird es sowohl für helles als auch für dunkeles Erscheinungsbild verwendet. |
templateImage | Bild codiert in Base64 | Gleich wie image , aber das Bild ist ein Vorlagenbild. Vorlagenbilder bestehen aus schwarzen und klaren Farben (und einem Alpha -Kanal). Vorlagenbilder sollen nicht als eigenständige Bilder verwendet werden und werden normalerweise mit anderen Inhalten gemischt, um das gewünschte endgültige Erscheinungsbild zu erzeugen. |
sfimage | SFSYMBOL -Name | Legt ein Bild für Element aus dem SF -Symbol fest. Nur auf Big Sur und oben erhältlich. |
sfconfig | SFSymbol -Konfiguration | Konfigurieren Sie den Rendering -Modus für sfimage . Akzeptiert ein JSON, das als Basis64 codiert ist, Beispiel JSON {"renderingMode":"Palette", "colors":["red","blue"], "scale": "large", "weight": "bold"} . Originalausgabe #354 |
checked | WAHR | Legt ein Checkmark vor dem Artikel fest. |
tooltip | Text | Legt ein Tooltip für den Artikel fest. |
webview | WAHR | Präsentieren Sie HREF als Webview anstelle als Standardmenü des Menüleistens |
webvieww | Nummer | Setzt WebView -Breite in Pixel |
webviewh | Nummer | Legt Webview -Höhe in Pixel fest |
Aktionen :
| Parameter | Wert | Beschreibung |
|---|---|---|
refresh | WAHR | Das Plugin -Skript wird im Element -Klick ausgeführt |
href | Absolute URL | Legt eine URL fest, die geöffnet ist, wenn das Artikel geklickt hat |
bash | Absolutes Dateipfad | Ausführbares Skript zum Ausführen in Shell |
terminal | FALSCH | bash -Skript wird im Hintergrund ausgeführt, anstatt das Terminal zu starten |
params | param0= , param1= , param10= ... | Parameter für bash -Skript |
shortcut | CMD+Option+t | Hotkey, die dem Artikel zugewiesen sind. Wenn der Artikel im Kopf ist, zeigt Hotkey das Menü an. Andernfalls startet Hotkey zugehörigen Aktionen. |
Beim Ausführen eines Plugins legt Swiftbar die folgenden Umgebungsvariablen fest:
| Variable | Wert |
|---|---|
SWIFTBAR | 1 |
SWIFTBAR_VERSION | Die laufende Swiftbar -Versionsnummer (im xyz -Format) |
SWIFTBAR_BUILD | Die laufende Swiftbar -Build -Nummer ( CFBundleVersion ) |
SWIFTBAR_PLUGINS_PATH | Der Pfad zum Plugin Folder |
SWIFTBAR_PLUGIN_PATH | Der Weg zum laufenden Plugin |
SWIFTBAR_PLUGIN_CACHE_PATH | Der Cache -to -Datenordner, individuell pro Plugin |
SWIFTBAR_PLUGIN_DATA_PATH | Der Pfad zum Datenordner, individuell pro Plugin |
SWIFTBAR_PLUGIN_REFRESH_REASON | Plugin -Aktualisierungsgrund Trigger |
SWIFTBAR_LAUNCH_TIME | Swiftbar -Startdatum und Uhrzeit, ISO8601 |
OS_APPEARANCE | Aktuelles MacOS -Aussehen ( Light oder Dark ) |
OS_VERSION_MAJOR | Der erste Teil der MacOS -Version (z. B. 11 für macOS 11.0.1) |
OS_VERSION_MINOR | Der zweite Teil der MacOS -Version (z. B. 0 für macOS 11.0.1) |
OS_VERSION_PATCH | Der dritte Teil der MacOS -Version (z. B. 1 für macOS 11.0.1) |
OS_LAST_SLEEP_TIME | Letzte OS -Schlafdatum und Uhrzeit, ISO8601. Leer, wenn OS seit dem Start von Swiftbar nicht geschlafen hat. |
OS_LAST_WAKE_TIME | Letzte OS Wake aus Schlafdatum und Uhrzeit, ISO8601. Leer, wenn OS seit dem Start von Swiftbar nicht geschlafen hat. |
Es wird empfohlen, Metadaten in das Plugin -Skript aufzunehmen. Metadaten werden im About -Plugin -Bildschirm in Swiftbar verwendet. Swiftbar übernimmt das von Bitbar xbar vorgeschlagene Metadatenformat:
# <xbar.title>Title goes here</xbar.title>
# <xbar.version>v1.0</xbar.version>
# <xbar.author>Your Name</xbar.author>
# <xbar.author.github>your-github-username</xbar.author.github>
# <xbar.desc>Short description of what your plugin does.</xbar.desc>
# <xbar.image>http://www.hosted-somewhere/pluginimage</xbar.image>
# <xbar.dependencies>python,ruby,node</xbar.dependencies>
# <xbar.abouturl>http://url-to-about.com/</xbar.abouturl>
# <xbar.droptypes>Supported UTI's for dropping things on menu bar</xbar.droptypes>
Swiftbar unterstützt diese optionalen Metadaten -Flags, um Standard -Menüelemente auszublenden:
# <swiftbar.hideAbout>true</swiftbar.hideAbout>
# <swiftbar.hideRunInTerminal>true</swiftbar.hideRunInTerminal>
# <swiftbar.hideLastUpdated>true</swiftbar.hideLastUpdated>
# <swiftbar.hideDisablePlugin>true</swiftbar.hideDisablePlugin>
# <swiftbar.hideSwiftBar>true</swiftbar.hideSwiftBar>
Option+Klicken werden alle Elemente angezeigt: 
Ein spezielles Tag kann als Alternative zum aktuellen Aktualisierungsintervall verwendet werden, das im Namen des Plugins definiert ist. Value nimmt die Cron -Syntax an:
<swiftbar.schedule>01,16,31,46 * * * *</swiftbar.schedule>
Sie können mehrere Zeitpläne mit dem Sepparator | konfigurieren | :
<swiftbar.schedule>1 * * * *|2 * * * *</swiftbar.schedule>
<swiftbar.refreshOnOpen>true</swiftbar.refreshOnOpen> - Aktualisieren Sie das Plugin beim Klicken, bevor Sie das Menü präsentieren<swiftbar.runInBash>false</swiftbar.runInBash> - wickelt Plugins beim Laufen keine Plugins in Bash ein<swiftbar.type>streamable</swiftbar.type><swiftbar.environment>[var1=default value, var2=default value, ... ]</swiftbar.environment><swiftbar.persistentWebView>true</swiftbar.persistentWebView> - macht WebView persistent, sodass es nicht in jedem Menüleisten klicken kann Für binäre Plugins -Metadaten können als erweitertes Dateiattribut hinzugefügt werden:
xattr -w "com.ameba.SwiftBar" "$(cat metadata.txt | base64)" <plugin_file>
Bei Standardtypen von Plugins erwartet Swiftbar, dass die Plugin -Ausführung endlich ist, dh Plugin läuft und beendet mit Ausgang zu STDOut:
Optional kann ein Standard -Plugin auf einem wiederholbaren Zeitplan ausgeführt werden, der in der Dateinamen oder schedule -Metadata -Eigenschaft des Plugins konfiguriert ist.
Dieser Plugin -Typ richtet sich an Personen, die eine Verknüpfungs -App verwenden möchten, um Menüleistenelemente zu erstellen. Die Plugin -API entspricht so gut wie Standard. Erstellen Sie eine Verknüpfung, die Text im erforderlichen Format ausgibt, wählen Sie diese Verknüpfung im Abschnitt "Shortcuts Plugin" der Einstellungen von Swiftbar aus, und Sie können loslegen.
Für Verknüpfungs -Plugins bietet Swiftbar eine praktische Benutzeroberfläche, um den Aktualisierungsplan zu konfigurieren.
Beispielverknüpfungen:
Ephemeral -Plugins erstellen Menüleistenelemente auf Bedarf, indem Sie die Abkürzung von Swiftbar ausführen oder ein URL -Schema aufrufen. Die Plugin -API entspricht so gut wie Standard.
Hier sind die Parameter für das URL -Schema:
Verknüpfungsmaßnahmen sind ziemlich selbsterklärend.
Dieser Plugin -Typ wird am besten für Benachrichtigungen oder andere temporäre Menüleistenelemente verwendet.
Swiftbar startet einen separaten Vorgang für jedes streamable Plugin, das auf unbestimmte Zeit ausgeführt wird, bis Swiftbar geschlossen ist oder ein Fehler. Sie sollten nur dann streamable Plugins verwenden, wenn Sie sich mit einem Strom eingehender Ereignisse befassen. Ein Beispiel könnten Finanzmarktinformationen sein, die von einem WebSocket- oder CPU -Ladeinformationen für einen Remote -Computer gelesen werden.
Um Swiftbar zu informieren, wann das Menüleistenelement aktualisiert werden soll, müssen streamable Plugins einen speziellen Zeilenabscheider ~~~ verwenden. Swiftbar setzt den Menüpunkt bei jedem Auftreten dieses Separators zurück.
Im folgenden Beispiel wird Swiftbar "Test 1" in der Menüleiste für 3 Sekunden, dann 5 Sekunden lang und "Test 2" auf unbestimmte Zeit angezeigt.
#!/bin/bash
#<swiftbar.type>streamable</swiftbar.type>
echo "Test 1"
echo "---"
echo "Test 2"
echo "Test 3"
sleep 3
echo "~~~"
sleep 5
echo "~~~"
echo "Test 2"
Sie können ein Plugin als streamable mit einer speziellen Metadateneigenschaft <swiftbar.type>streamable</swiftbar.type> markieren
Einige Notizen:
name zwischen mehreren Plugins gleich sein kann. Wenn der Filepath Ihres Plugins ~/Documents/SwiftBar/myplugin.1m.sh ist, dann ist der Name myplugin und der ID myplugin.1m.shopen(1) um Scheme -URLs auszulösen, mit -g um zu verhindern, dass der Befehl den Fokus aus Ihrer aktiven App stiehlt.| Endpunkt | Parameter | Beschreibung | Beispiel |
|---|---|---|---|
| Refreshallplugins | keiner | Erfrischen Sie alle beladenen Plugins Aktualisierung | swiftbar://refreshallplugins |
| Refreshplugin | name oder plugin -Plugin -Name | Erzwingen Sie das Aktualisierung des Plugins mit dem Namen. Bei der Bereitstellung werden zusätzliche URL | swiftbar://refreshplugin?name=myplugin |
| Refreshplugin | index -Plugin -Index in Menubar ab 0 | Erzwingen Sie das Auffrischen von Plugin durch seine Position in Menubar | swiftbar://refreshplugin?index=1 |
| aktivieren | name oder plugin -Plugin -Name | Das Plugin mit dem Namen aktivieren | swiftbar://enableplugin?name=myplugin |
| Deaktivieren Sieplugin | name oder plugin -Plugin -Name | Das Plugin mit Namen deaktivieren | swiftbar://disableplugin?name=myplugin |
| Toggleplugin | name oder plugin -Plugin -Name | Plugin mit Namen umschalten (aktivieren deaktivieren) | swiftbar://toggleplugin?name=myplugin |
| Addplugin | src -Quell -URL zu Plugin -Datei | Fügen Sie Swiftbar von der URL Plugin hinzu | swiftbar://addplugin?src=https://coolplugin |
| benachrichtigen | name oder plugin -Plugin -Name. Benachrichtigungsfelder: title , subtitle , body . href , um eine URL auf Klick zu öffnen (einschließlich benutzerdefinierter URL -Schemata). silent=true um den Ton zu deaktivieren | Benachrichtigung zeigen | swiftbar://notify?plugin=MyPlugin&title=title&subtitle=subtitle&body=body&silent=true |
| setePhemeralplugin | name Plugin -Name sollte eindeutig sein. content - Plugin -Inhalt, exitafter - Setzen Sie optional die Lebensdauer der Menümen in Sekunden | Erstellt ein kurzlebiges Plugin. So entfernen Sie vorhandenes kurzes Plugin -Setzen Sie den Inhalt in einer leeren Zeichenfolge "" | swiftbar://setephemeralplugin?name=ephemeral&content=hi |
Liste der Einstellungen, die in der UI von Swiftbar nicht aufgedeckt werden:
defaults write com.ameba.SwiftBar StealthMode -bool YES - versteckt Swiftbar -Menüelement, wenn alle Plugins deaktiviert sinddefaults write com.ameba.SwiftBar DisableBashWrapper -bool YES - Wickeln Plugins beim Ausführen keine Plugins in Bash.defaults write com.ameba.SwiftBar MakePluginExecutable -bool NO - Deaktiviert automatisch chmod +x Alle Dateien im Plugin -Verzeichnisdefaults write com.ameba.SwiftBar PluginDeveloperMode -bool YES -Ermöglicht die Bearbeitung in Einstellungen -> Pluginsdefaults write com.ameba.Swiftbar PluginDebugMode -bool YES - Aktiviert Plugin -Debug -Ansichtdefaults write com.ameba.SwiftBar StreamablePluginDebugOutput -bool YES - Ermöglicht die Debug -Ausgabe für streamable Plugins. Wenn Plugin Swiftbar nicht ausführt, wird angezeigtConsole.app , um Swiftbar -Protokolle anzuzeigen.
Swiftbar verwendet diese Open -Source -Bibliotheken:
Um Abhängigkeiten einzufrieren und zu sichern, werden diese Bibliotheken in die Swiftbar -Organisation gezogen.
Swiftbar kann hier übersetzt werden.
Wenn Sie Swiftbar genießen, mögen Sie diese auch: