xbarの使い方と初期設定|入れた直後に決めておくこと

xbar は、書いたスクリプトの出力をそのままメニューバーに出すためのアプリである。入れただけでは何も起きず、プラグインと呼ばれるファイルを置いて初めて表示が現れる。この最初の一歩でつまずく人が多いので、ここでは導入から表示が出るまでの手順と、あとで直しにくくなる初期設定を、公開されている資料に沿って順に整理する。

導入の方法は2通りある

配布元は公式サイトと、開発元のリポジトリの公開ページである。ディスクイメージを取得してアプリケーションフォルダに入れる方法が基本で、パッケージ管理の Homebrew を使っているなら、そちらから入れることもできる。Homebrew での識別名は xbar で、登録されている版は v2.1.7-beta である。

動作環境について、開発元の説明にはこう記されている。

Download latest xbar release - requires macOS Catalina or newer (>= 10.15) 出典: github.com

配布物の中身を確認すると、Intel と Apple シリコンの両方に対応した形式で、Developer ID による署名と公証の手続きを通った状態になっている。したがって、初回起動でシステムに止められる種類のアプリではない。ディスクイメージの容量はおよそ8.5メガバイト、展開後のアプリ本体は24メガバイトほどで、常駐アプリとしては小さい部類に入る。

Homebrew の記録では、対応が確認されている macOS として Big Sur から最新の版までが並んでいる。古い版の macOS を使っている場合は、上の要件だけ確認しておけばよい。

最初に開いたときに決めておくこと

起動すると、メニューバーに xbar の項目が現れる。プラグインが1つも無い状態では、ここから設定に入ることになる。

最初に決めるのは、プラグインをどこに置くかである。既定の置き場は ~/Library/Application Support/xbar/plugins で、このフォルダに実行可能なファイルを入れると、その1本ごとにメニューバーの表示枠が作られる。Finder から開くには、移動メニューの「フォルダへ移動」にこのパスを貼り付けるのが早い。

次に、配布されているプラグインを探す経路を把握しておく。xbar のメニューから設定を開き、プラグインの一覧に進むと、アプリの中で探して導入できる。公式サイト側にも一覧があり、AWS、開発、金融、音楽、ネットワーク、システム、天気といった分類で並んでいる。サイト側から導入する場合は xbar:// という独自の形式のリンクでアプリに受け渡される仕組みになっており、この対応付けはアプリの情報ファイルに登録されている。

3つ目に、ログイン時に起動するかどうかを決めておく。常駐アプリとして使うならログイン項目に登録することになるが、様子を見たい段階なら登録しないでおくほうが後片付けが楽である。

ファイル名そのものが設定になっている

xbar で最初に戸惑うのが、更新の間隔をどこで指定するのかという点である。答えはファイル名で、公式の手引きは次の形式を示している。

The refresh time is in the filename of the plugin, following this format: {name}.{time}.{ext} 出典: github.com

真ん中の区画が更新の間隔で、date.1m.sh なら1分ごとに実行される。指定できる書き方は、10秒なら 10s、1分なら 1m、2時間なら 2h、1日なら 1d である。あとから変えたくなったときは、ファイル名を書き換えるだけでよい。

もう1つ、忘れると何も起きないのが実行権限である。手引きでも、chmod +x で実行可能にしておくことと、先頭に #!/usr/bin/env bash のような行を書いておくことが勧められている。ここを飛ばすと、ファイルは置かれているのに表示が出ない状態になる。

初期設定の段階で決めておきたいのは、間隔の付け方の方針である。数分に一度しか変わらない情報に10秒を指定すると、実行の回数だけが増える。外部のサービスを呼ぶプラグインなら、その回数がそのまま通信量と利用料になる。最初に置くときに、実際の変化の速さに合わせておくのがよい。

出力の書き方を覚えると、表示を自分で作れる

xbar のプラグインは、標準出力に文字を書くだけのものである。特別な作法は少なく、覚えることは3つに絞れる。

  • ハイフン3つだけの行が区切りになり、それより下はメニューを開いたときにだけ出る
  • ハイフン2つで始まる行は下位のメニューになり、4つにすると1段深くなる
  • 行の後ろに縦棒を置くと、その行に対する指定を書ける

3つ目の指定は種類が多いが、実際に使うものは限られる。href= を付けると押したときに指定した場所を開き、shell= を付けるとスクリプトを実行する。refresh=true を付けた行を押すと、そのプラグインが再実行される。color=size= は見た目、length= は表示の文字数の上限、disabled=true は押せない行にする指定である。key= を使えば、その項目に対する組み合わせキーを割り当てられる。

覚え方としては、まず区切り行だけを使って「上にひと言、下に詳細」の形を作り、必要になった時点で指定を足していくのが早い。区切り行より上に複数の行を書くと、それらは数秒ごとに入れ替わって表示される。この動きが煩わしいなら、上に置く行は1つだけにしておく。

なお、プラグインの実行には時間の上限がある。v2.1.7-beta で上限が1分から2分に引き上げられた。複数の場所へ問い合わせる処理を1本にまとめる場合は、この時間に収まるかを確認しておきたい。

最初の1本は、自分で書いたほうが理解が早い

配布されているプラグインをいきなり入れると、動かなかったときにどこを見ればよいか分からなくなる。仕組みを掴むだけなら、自分で書く1本は数行で足りる。

手順は3つである。テキストエディタで新しいファイルを作り、1行目に実行するプログラムを指定する行を書き、その下に文字を出す命令を1つ書く。これを既定のフォルダに、間隔を含めた名前で保存し、実行権限を付ける。これだけでメニューバーに文字が現れる。

最初の1本で確認しておきたいのは、区切り行の効き方である。文字を出す命令を3つ並べ、2つ目の前にハイフン3つだけの行を挟むと、1つ目だけがメニューバーに出て、残りは押したときに出る。この違いを一度見ておくと、配布されたプラグインの出力を読んだときに、どこがメニューバーに出る部分なのかが即座に分かるようになる。

慣れてきたら、公開するときの作法も確認しておくとよい。手引きでは、プラグインの中に題名、版、作者、説明といった情報をコメントとして書いておくことが求められている。この情報は一覧に載るときの表示に使われる。自分だけで使う場合でも書いておくと、半年後に開いたときに用途を思い出せる。

使わなくなったプラグインの片付け方

入れたあとに増えていくものなので、外し方も最初に知っておきたい。プラグインを1本だけ止めるなら、そのファイルを既定のフォルダの外へ移すだけでよい。削除しなくても、フォルダに無ければ実行されない。移したあとに再読み込みを行うと、メニューバーからその表示枠が消える。

戻すときは同じファイルを元の場所に置けばよく、設定値を保存したファイルを一緒に移してあれば入力し直す必要もない。この可逆性があるので、迷ったものはいったん外へ出して様子を見る運用が取りやすい。

xbar 自体を使わなくなる場合は、アプリを終了してから本体を削除し、残るファイルを片付けることになる。Homebrew が公開している定義によれば、設定や作業用のデータが置かれるのは ~/Library/Application Support/xbar~/Library/Caches/com.xbarapp.app~/Library/Preferences/com.xbarapp.app.plist~/Library/WebKit/com.xbarapp.app の4か所である。ログイン項目としての登録名は xbar なので、システム設定のログイン項目に残っていないかも見ておきたい。自作したプラグインは最初の場所にまとめて入っているため、あとで使う可能性があるならそのフォルダごと複製しておけばよい。

設定値はプラグインの外に持たせられる

APIキーや表示件数のように、あとから変えたくなる値をスクリプトの中に直接書くと、更新のたびに書き直すことになる。xbar には、こうした値を設定として外に出す仕組みが用意されている。

書き方は、コメントの中に変数の宣言を1行入れるだけである。型は文字列、数値、真偽値、選択肢の4種類が使える。宣言した変数はアプリ側の設定画面に項目として現れ、利用者が入力した値は、実行時に同じ名前の環境変数として渡される。

入力された値は、プラグインと同じ場所に置かれる JSON 形式のファイルに保存される。名前はプラグインのファイル名に .vars.json を足したもので、たとえば tail.5s.sh に対しては tail.5s.sh.vars.json が作られる。中身は名前と値の対応表なので、端末を移すときはこのファイルも一緒に持っていけば設定が引き継がれる。

自分用のプラグインでも、この仕組みを使っておくと後が楽である。値の書き換えがアプリの設定画面で済むようになり、スクリプト本体を触る回数が減る。

表示が出ないときに見る場所

置いたのに何も出ない、という状態は原因が絞りやすい。上から順に確認していけばよい。

  • ファイルの置き場所が既定のフォルダかどうか
  • 実行権限が付いているか
  • 先頭に実行するプログラムを指定する行があるか
  • ファイル名の形式が3つの区画に分かれているか
  • 端末で直接実行したときに、期待した文字が出るか

最後の確認が一番効く。端末で動くのに xbar では出ない場合、原因はほぼ環境変数の違いである。xbar から実行されるときの環境は、端末で開いたときの設定を読み込んでいない。このため、追加で入れたコマンドの場所が通っておらず、途中で止まる。手引きでも、スクリプトの中で場所の一覧を明示的に設定しておく方法が案内されている。

このほか、公開されている課題管理には、画面をロックすると動作が止まる、再読み込みを繰り返すと不安定になる、といった報告が登録されたままになっている。開いたままの課題は186件あり、最後のリリースは2021年10月である。想定どおりに動かない挙動に当たったときは、自分の書き方を疑う前に、同じ症状の報告があるかを確認したほうが早い場合がある。

入れたあとにメニューバーで起きること

初期設定の最後に確認しておきたいのが、表示枠の使い方である。xbar はプラグイン1本につき1つの表示枠を使うため、3本入れれば3席分の場所を取る。文字を出す作りなので、絵文字だけの常駐アプリより横幅を使う点も見落としやすい。

置くプラグインが増えてきたら、区切り行より下に移す、表示の文字数を切り詰める、2本を1本にまとめる、といった手で幅を戻せる。それでも足りない場合は、メニューバーの表示を畳む側で調整することになる。畳んだあとに操作が面倒になるかどうかは道具によって差があり、隠したアイコンを、メニューバーを畳んだまま押してその場でメニューを開ける作りなら、畳んだままで用が足りる。畳んだ状態で何ができるのかはできること、整理の考え方の違いはほかの道具との違いにまとめてある。

導入の手順としては、まず1本だけ置いて表示を確認し、そのうえで間隔と出力の形を決める順番が確実である。最初から複数を入れると、出なかったときにどれが原因か分からなくなる。費用や動作環境の確認は料金よくある質問に、実物を試す場合はダウンロードにまとめてある。

よくある質問

xbarを入れたのに何も表示されません。

プラグインを置くまでは表示は出ません。~/Library/Application Support/xbar/plugins に実行可能なファイルを置き、chmod +x で実行権限を付けてください。それでも出ない場合は、端末で直接実行して期待した文字が出るかを確認すると、原因が環境変数の違いかどうかが切り分けられます。

更新の間隔はどこで設定しますか?

ファイル名で指定します。形式は名前、間隔、拡張子の3区画で、date.1m.sh なら1分ごとに実行されます。10秒なら 10s、2時間なら 2h、1日なら 1d と書きます。変更したいときはファイル名を書き換えるだけで反映されます。

APIキーをスクリプトに直接書かずに済ませる方法はありますか?

コメント内に変数の宣言を書くと、アプリの設定画面に入力欄が現れ、入力値は環境変数としてスクリプトに渡されます。型は文字列、数値、真偽値、選択肢の4種類です。値はプラグインと同じ場所の .vars.json という名前のファイルに保存されます。

動作環境の条件はありますか?

開発元の説明では macOS Catalina 以降が必要とされています。配布されている実行ファイルはIntelとAppleシリコンの両方に対応しており、Developer IDによる署名と公証を通った状態で配られているため、初回起動が止められる種類のアプリではありません。

記事一覧へ戻る