
3つの簡単な手順でMacOSにカスタムメニューバープログラムを追加します。
Get Plugins...メニュー項目を使用して、Awesome Bitbarリポジトリから、またはSwiftbar自体からプラグインを入手できます。
Githubリリースからダウンロードしてください
または、Homebrewでインストールします
brew install swiftbar
Macos Catalina(10.15)などで実行されます。
SwiftBar/SwiftBar.xcodeprojを開きますSwiftBarにはプラグインリポジトリがバンドルされています。 SwiftBarでアクセスできます→プラグインを取得...

プラグインを削除するか、リポジトリのコンテンツについて他の質問がある場合は、この問題を参照してください。
SwiftBarに新しいプラグインを追加するには、必要な形式に従って実行可能なスクリプトを作成し(以下を参照)、 Plugin Folderに配置する必要があります。
最初の起動により、SwiftBarはPlugin Folderの設定を依頼します。 Swiftbarは、このフォルダー内のすべてのファイルをプラグインとしてインポートしようとします。
重要:
.swiftbarignoreファイルがサポートされているため、プラグインとしてインポートされていることからファイルを除外するために使用できます。準備してフォルダーを非表示にすることができます.または、このコマンドを使用してchflags hidden <folder name>使用します。
プラグインファイルは、次の形式を採用する必要があります。
{name}.{time}.{ext}
期間修飾子:
ファイル名の例: date.1m.sh
プラグインリポジトリからプラグインを使用している場合でも、独自のプラグインを作成している場合でも、プラグインは最初にメニューバーに事前に決定されていない順序で表示されます。ただし、 CMDを押し続けてドラッグすることで表示される方法を並べ替えることができます(このプロセスは、メニューバーの他の非スウィフトバーでも使用できます)。プラグインの位置は、プラグインファイルの名前を変更しない限り記憶されます。その場合、再度再配置する必要があります。
プラグインは、選択した言語の実行可能なスクリプトです。 SwiftbarがPlugin Folder内の新しいファイルを検出すると、必要に応じてこのファイルが実行可能になり、実行されます。
スクリプトは、必要な形式で出力( STDOUT )を生成する必要があります(次の章を参照)。スクリプトエラーはSTDERRにリダイレクトする必要があります。
プラグインAPIはBitbar xbarから採用されています。つまり、Swiftbarは既存のBitbar Xbarプラグインを実行できます。
プラグインの出力を解析すると、SwiftBarが次のブロックを認識します。
Header最初のすべてのものです--- 。それぞれ---最初のものの後にメニューセパレーターとして解釈されます。ヘッダーには1つ以上の行があります。
最もシンプルなプラグインは次のようになります:
echo " This is Menu Title "複数のタイトルを提供する場合、提供されたタイトルはメニューバーでサイクリングされ、ドロップダウンメニューに表示されます。
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 "ヘッダーとボディの両方のスクリプト出力は、ライン( n )によって分割されます。各行はこの形式に従う必要があります。
<Item Title> | [param = ...]
どこ:
=で区切られたキー値です。使用|パラメーターをタイトルから分離します。 テキストのフォーマット:
| パラメーター | 価値 | 説明 |
|---|---|---|
color | CSSの色またはhex、 light_color,dark_color | アイテムのテキストの色を設定します。 1色のみが提供されている場合、明るい外観と暗い外観の両方に使用されます。 |
sfcolor | CSSの色またはhex、 light_color,dark_color | SFシンボルの色を設定します。 1色のみが提供されている場合、明るい外観と暗い外観の両方に使用されます。複数のSFシンボルが名声を得ると、このsfcolor2のようにインデックスを追加することで異なる色を提供できます |
font | MacOSフォント名 | アイテムテキストで使用するフォント名を設定します |
size | 番号 | アイテムのテキストサイズを設定します |
md | 真実 | **bold**および*italic*のメニュータイトルでマークダウンサポートを有効にする |
sfsize | 番号 | テキストに埋め込まれたSFシンボルイメージのサイズを設定します |
length | 番号 | 提供された数の文字にアイテムテキストをトリミングします。完全なタイトルはツールチップに表示されます。 |
trim | 真実 | ホワイトスペースの文字をトリミングします |
ansi | 真実 | ANSIカラーコードのサポートを有効にします。対立: symbolize |
emojize | 間違い | Githubスタイルの絵文字の解析(例:mushroom: Into?)を無効にします。要求: symbolize=false trueに設定するとき。 |
symbolize | 間違い | SFシンボルの解析を無効にします(例: "SF Symbols Test :sun.max: :cloud.fill: :gamecontroller.fill: :bookmark: :sun.dust:" → )。カタリナに常にFalse 。 |
ビジュアル:
| パラメーター | 価値 | 説明 |
|---|---|---|
dropdown | 間違い | Header内のアイテムにのみ適用されます。 falseに設定すると、アイテムはドロップダウンメニューに表示されませんが、メニューバーで循環します。 |
alternate | 真実 | オプションキー( ⌥ )がドロップダウンで押されたときの前のラインの代替としてマークを付けます。 |
image | base64、 light_image,dark_imageでエンコードされた画像 | アイテムの画像を設定します。 1つの画像のみが提供されている場合、明るい外観と暗い外観の両方に使用されます。 |
templateImage | Base64でエンコードされた画像 | imageと同じですが、画像はテンプレート画像です。テンプレート画像は、黒と透明な色(およびアルファチャネル)で構成されています。テンプレート画像は、スタンドアロン画像として使用することを意図しておらず、通常、他のコンテンツと混合して、目的の最終的な外観を作成します。 |
sfimage | sfsymbol名 | SFシンボルからアイテムの画像を設定します。 Big Sur以上でのみ利用できます。 |
sfconfig | SFSymbol構成 | sfimage用のレンダリングモードを構成します。 base64、例JSON {"renderingMode":"Palette", "colors":["red","blue"], "scale": "large", "weight": "bold"} 。オリジナルの問題#354 |
checked | 真実 | アイテムの前にチェックマークを設定します。 |
tooltip | 文章 | アイテムのツールチップを設定します。 |
webview | 真実 | プレゼントは、標準のメニューバーメニューの代わりに、WebViewとしてHREFを提供しました |
webvieww | 番号 | ピクセルでWebView幅を設定します |
webviewh | 番号 | ピクセルでWebViewの高さを設定します |
行動:
| パラメーター | 価値 | 説明 |
|---|---|---|
refresh | 真実 | プラグインスクリプトは、アイテムクリックで実行されます |
href | 絶対URL | アイテムがクリックされたときに開くURLを設定します |
bash | 絶対ファイルパス | シェルで実行するための実行可能スクリプト |
terminal | 間違い | ターミナルを起動する代わりに、 bashスクリプトがバックグラウンドで実行されます |
params | param0= 、 param1= 、 param10= ... | bashスクリプトのパラメーター |
shortcut | CMD+オプション+t | アイテムに割り当てられたホットキー。アイテムがヘッダーにある場合、HotKeyにメニューが表示されます。それ以外の場合、Hotkeyは関連するアクションを起動します。 |
プラグインを実行するとき、Swiftbarは次の環境変数を設定します。
| 変数 | 価値 |
|---|---|
SWIFTBAR | 1 |
SWIFTBAR_VERSION | 実行中のswiftbarバージョン番号( xyz形式) |
SWIFTBAR_BUILD | 実行中のswiftbarビルド番号( CFBundleVersion ) |
SWIFTBAR_PLUGINS_PATH | Plugin Folderへのパス |
SWIFTBAR_PLUGIN_PATH | 実行中のプラグインへのパス |
SWIFTBAR_PLUGIN_CACHE_PATH | プラグインごとの個別のデータフォルダーへのキャッシュ |
SWIFTBAR_PLUGIN_DATA_PATH | データフォルダーへのパス、個々のプラグイン |
SWIFTBAR_PLUGIN_REFRESH_REASON | プラグインの更新理由トリガー |
SWIFTBAR_LAUNCH_TIME | Swiftbarの起動日時、ISO8601 |
OS_APPEARANCE | 現在のmacosの外観( LightまたはDark ) |
OS_VERSION_MAJOR | MacOSバージョンの最初の部分(たとえば、MacOS 11.0.1の11 ) |
OS_VERSION_MINOR | MacOSバージョンの2番目の部分(たとえば、MacOS 11.0.1の場合は0 ) |
OS_VERSION_PATCH | MacOSバージョンの3番目の部分(たとえば、MacOS 11.0.1の場合1 ) |
OS_LAST_SLEEP_TIME | 最後の睡眠の日付と時刻、ISO8601。 Swiftbarが発売されて以来、OSがスリープしなかった場合は空です。 |
OS_LAST_WAKE_TIME | 睡眠の日時からの最後のOSウェイク、ISO8601。 Swiftbarが発売されて以来、OSがスリープしなかった場合は空です。 |
プラグインスクリプトにメタデータを含めることをお勧めします。メタデータは、SwiftbarのAboutプラグイン画面で使用されます。 Swiftbarは、Bitbar xbarによって提案されたメタデータ形式を採用しています。
# <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は、これらのオプションのメタデータフラグをサポートして、デフォルトのメニュー項目を非表示にします。
# <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>
オプション+クリックにはすべてのアイテムが表示されます。 
特別なタグは、プラグインの名前で定義されている更新間隔を更新する代替として使用できます。ValueはCron構文を採用します。
<swiftbar.schedule>01,16,31,46 * * * *</swiftbar.schedule>
Sepparator |を使用して、複数のスケジュールを構成できます:
<swiftbar.schedule>1 * * * *|2 * * * *</swiftbar.schedule>
<swiftbar.refreshOnOpen>true</swiftbar.refreshOnOpen> - メニューを表示する前に、クリック時にプラグインを再表示します<swiftbar.runInBash>false</swiftbar.runInBash> - 実行中にプラグインをバッシュにラップしません<swiftbar.type>streamable</swiftbar.type> -Markプラグインはストリーミング可能です<swiftbar.environment>[var1=default value, var2=default value, ... ]</swiftbar.environment> - この変数はプラグインの環境で渡されます。<swiftbar.persistentWebView>true</swiftbar.persistentWebView> - WebViewを永続化するため、各メニューでリロードしませんbarクリックバイナリプラグインの場合、メタデータは拡張ファイル属性として追加できます。
xattr -w "com.ameba.SwiftBar" "$(cat metadata.txt | base64)" <plugin_file>
プラグインの標準タイプの場合、SwiftBarは、プラグインの実行が有限であることを期待しています。
オプションで、標準のプラグインは、プラグインのファイル名またはscheduleメタデータプロパティで構成された繰り返し可能なスケジュールで実行できます。
このプラグインタイプは、ショートカットアプリを使用してメニューバーアイテムを作成したい人を対象としています。プラグインAPIは標準とほぼ同じです。必要な形式でテキストを出力するショートカットを作成し、Swiftbarの設定のショートカットプラグインセクションでこのショートカットを選択すると、行きます。
ショートカットプラグインの場合、SwiftBarは更新スケジュールを構成する便利なUIを提供します。
例のショートカット:
EphemeralプラグインSwiftbarのショートカットアクションを実行するか、URLスキームを呼び出すことにより、メニューバーアイテムをオンデマンドで作成します。プラグインAPIは標準とほぼ同じです。
URLスキームのパラメーターは次のとおりです。
ショートカットアクションはかなり自明です。
このプラグインタイプは、通知またはその他の一時的なメニューバーアイテムに最適です。
Swiftbarは、Streamableプラグインごとに個別のプロセスを開始します。これは、SwiftBarが閉じたり障害になるまで無期限に実行されます。入ってくるイベントのストリームを扱うときにのみ、ストリーム可能なプラグインを使用する必要があります。例は、リモートコンピューターのWebSocketまたはCPUロード情報から読み取られる金融市場情報です。
Swiftbarにメニューバーアイテムをいつ更新するかを知らせるには、ストリーミング可能なプラグインが特別なラインセパレーター~~~を使用する必要があります。 SwiftBarは、このセパレーターの発生ごとにメニュー項目をリセットします。
以下の例では、Swiftbarはメニューバーの「テスト1」を3秒間示し、5秒間は何も、「テスト2」は無期限に表示されます。
#!/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"
プラグインを特別なメタデータプロパティでストリーミング可能であるとマークできます<swiftbar.type>streamable</swiftbar.type>
いくつかのメモ:
name複数のプラグイン間で同じにすることができます。プラグインのfilepathが~/Documents/SwiftBar/myplugin.1m.shの場合、名前はmypluginとid myplugin.1m.shです。open(1)を使用してスキームURLをトリガーする場合、 -gを使用して、コマンドがアクティブなアプリからフォーカスを盗むのを防ぎます。| 終点 | パラメーター | 説明 | 例 |
|---|---|---|---|
| shleashallplugins | なし | すべてのロードされたプラグインを強制リフレッシュします | swiftbar://refreshallplugins |
| RefreshPlugin | nameまたはpluginプラグイン名 | 名前でプラグインを更新します。提供されている場合、追加のURLパラメーターは、プラグインにenv変数として公開されます | swiftbar://refreshplugin?name=myplugin |
| RefreshPlugin | 0から始まるMenubarのindexプラグインインデックス | Menubarでの位置でプラグインを押し上げます | swiftbar://refreshplugin?index=1 |
| EnablePlugin | nameまたはpluginプラグイン名 | 名前でプラグインを有効にします | swiftbar://enableplugin?name=myplugin |
| Pluginを無効にします | nameまたはpluginプラグイン名 | 名前でプラグインを無効にします | swiftbar://disableplugin?name=myplugin |
| TogglePlugin | nameまたはpluginプラグイン名 | 名前でトグル( disableを有効)プラグイン | swiftbar://toggleplugin?name=myplugin |
| addplugin | srcソースURLプラグインファイル | URLからSwiftBarにプラグインを追加します | swiftbar://addplugin?src=https://coolplugin |
| 通知します | nameまたはpluginプラグイン名。通知フィールド: title 、 subtitle 、 body 。クリック時にURLを開くためのhref (カスタムURLスキームを含む)。 silent=true | 通知を表示します | swiftbar://notify?plugin=MyPlugin&title=title&subtitle=subtitle&body=body&silent=true |
| setephemeralplugin | nameプラグイン名は一意でなければなりません。 content - プラグインのコンテンツ、 exitafterオプションでメノバーの寿命を数秒で設定します | はかないプラグインを作成します。既存の一時的なプラグインを削除するには、空の文字列にコンテンツを設定します"" | swiftbar://setephemeralplugin?name=ephemeral&content=hi |
Swiftbar UIで公開されていない選好のリスト:
defaults write com.ameba.SwiftBar StealthMode -bool YES -hides swiftbarメニュー項目すべてのプラグインが無効になっているときdefaults write com.ameba.SwiftBar DisableBashWrapper -bool YES bashでプラグインをラップしないdefaults write com.ameba.SwiftBar MakePluginExecutable -bool NO -disaves auto chmod +xプラグインディレクトリのすべてのファイルdefaults write com.ameba.SwiftBar PluginDeveloperMode -bool YES adable in fearness->プラグインdefaults write com.ameba.Swiftbar PluginDebugMode -bool YESプラグインデバッグビューを有効にするdefaults write com.ameba.SwiftBar StreamablePluginDebugOutput -bool YESストリーミング可能なプラグインのデバッグ出力を有効にすると、swiftbarはconsole.appのストリームデータを公開しますプラグインが実行に失敗した場合、Swiftbarが表示されますConsole.appを使用して、SwiftBarログを表示します。
Swiftbarはこれらのオープンソースライブラリを使用しています。
依存関係を凍結して確保するために、これらのライブラリはSwiftbar組織に分岐します。
Swiftbarはここに翻訳できます。
Swiftbarを楽しんでいるなら、これらも好きかもしれません: