この記事はラクス Advent Calendar 2016の21日目の記事です。
昨日は@fnzzzさんの デザイン作成マップ でした。
BitBarとは
BitBarとは、Macのメニューバーにオリジナルのメニューを追加することができるツールです。
cronのように任意のスクリプトを一定時間間隔で自動起動したり、その結果を確認したりすることができます。
何やらとても楽しげではないでしょうか...。ということでBitBarの紹介をしたいと思います!
準備
-
下記コマンドでbitbarをインストールします。
$ brew cask install bitbar
もしくは、https://getbitbar.com/ のGet BitBarのリンクからzipをダウンロードして展開し、BitBar.app
を/Applications
配下へ配置しておきます。
-
BitBar.app
を起動するとMacのメニューバーにBitBarの文字が表示されるはずです。
プラグインを追加する
追加手順
-
試しにこんなファイルを作成
plugin.sh#!/bin/bash echo ':muscle:' echo '---' date
-
plugin.sh
の実行権限を付与$ chmod +x plugin.sh
-
Change Plugin Folder で指定したディレクトリに
plugin.sh
のシンボリックリンクを配置します(そのまま実体置いても問題なしです)。
後述しますが、ファイル名によってスクリプトを起動する間隔を決めることができます。$ cd /path/to/pluginFloder $ ln -s /path/to/plugin.sh ./
-
BitBarのメニューから Preferences → Refresh all をクリック
以上でMacのメニューバーにたくましい上腕が表示されるはずです。
なお、BitBar自体を止めたい場合にはPreferences → Quitでどうぞ。
起動間隔の設定
BitBarは任意のスクリプトを一定時間間隔で起動することができます。
その間隔の設定は下記のようにスクリプトのファイル名で設定するようになっています。
plugin.10s.rb
<任意の名前>.<間隔>.<拡張子>
となっており、 10s
の部分が起動する間隔を表しています。
このファイル名の例だと10秒ごとに起動されるファイルになります。
詳しくは https://github.com/matryer/bitbar#configure-the-refresh-time
プラグインを作成する
プラグインをいろいろな言語で作成することができる点もBitBarの良いところではないかと思います。
また、プラグインの作成は先ほどの上腕の例と同じように、標準出力へ文字列を出力するスクリプトを作成すればOKです!
出力する文字列によって表示させる内容に変化を加えることができますので、いくつか紹介します。
メニューバーへの表示・ドロップダウンメニュー
#!/bin/bash
echo ':muscle:' # 最初に出力した文字列がメニューバーに反映される
echo '---' # --- を出力するとそれ以下がドロップダウンメニューになる
echo 'foo'
echo 'bar'
date
サブメニュー
出力する文字列のprefixに --
を付与してやると、階層構造のあるメニューが作成できます
#!/bin/bash
echo ':muscle:'
echo '---'
echo 'foo'
echo '--foo1' # fooのサブメニュー
echo '---' # 区切り線
echo 'bar'
echo '--bar1' # barのサブメニュー
echo '----bar11' # bar1のサブメニュー
echo '--bar2' # barのサブメニュー
|
(パイプライン)で豊かな表現
|
で区切ってやれば文字色やフォントやフォントサイズの変更、リンクの埋め込みも可能です。
複数のオプションを組み合わせることも可能です。
#!/bin/bash
echo ':muscle:' # Slackのようにemojiを扱うことも可能
echo '---'
echo 'foo | color=red' # 文字色をredに
echo 'bar | color=blue size=28' # 組み合わせも可
echo 'baz | color=#00FF00 size=45' # カラーコードでの指定も可
クリック時の挙動などの設定
文字をリンクにしたり、シェルスクリプトを実行したりすることなども可能です。
#!/bin/bash
echo ':muscle:'
echo '---'
# クリックするとブラウザでリンク先を表示
echo 'google | href=https://google.co.jp/'
# クリックするとターミナルが起動してコマンドを実行
echo 'git status | bash="cd $HOME/workspace/rails/sample_app;\n git st;"'
# optionキーを押下している状態で表示されるメニューを作成
# 通常のメニュー
echo '?????'
# optionキー押下時のメニュー
echo '!!! | color=red alternate=true'
optionキー押してる間だけ ?????
が !!!
になります!
プラグインを公開する
作成したプラグインはプラグイン用のリポジトリにcontributeして公開することもできます。
もちろん公開したプラグインは誰かに使ってもらうことができますし、公開されているプラグインを自分で使うこともできます。
公開するには作成したスクリプトにメタデータを含める必要があるようです。
詳しくは https://github.com/matryer/bitbar#metadata
作ってみました
せっかくの機会なのでRubyでひとつプラグインを作ってみました。
https://github.com/ta-chibana/hatena-feed
はてなブックマークのRSSフィードから人気記事情報を取得して表示するようにしています。
シンボリックリンクの名前を hatena.8h.rb
として、8時間ごとに起動するようにしていますが、reload
をクリックすることで手動でスクリプトを起動し、新鮮な情報を取り入れることができるようにしています。
puts 'reload | color=red refresh=true'
車輪の再発明感は否めませんが、自分の作ったものが使えるというのはとてもとても楽しいことではないでしょうか。
余談ですが、作成中にリンクが有効になってくれずに困ってしまいましたが、 原因はString型のtitle
に |
が混入していることがあり、それによって以降の | href=xxx
が効いていないことによるものだったようです。。
puts "--#{title} | href=#{item.link}"
あとは今の所例外処理を入れていないので、例外発生時にはPreferences → Refresh allしなければならない点も修正せねばですね。
まとめ
- Macのメニューバーにオリジナルのスクリプトや他の人が作ったプラグインを追加できる!
- いろいろな言語でプラグインの開発が行える!
- 基本は標準出力への出力だけでそれっぽいものが作れる!
なのでスクリプトの作成中にBitBarのことで悩むことは少ないはず...!
参考
https://getbitbar.com/
https://github.com/matryer/bitbar
http://sprint-life.hatenablog.com/entry/2014/01/15/203535
https://syncer.jp/hatebu-api-matome
最後まで読んでいただきありがとうございました!!
明日は@yusuke-nakanoさん、よろしくお願いします!