Macのメニューバー アプリBitBarでプロセス監視

2017年2月25日

Macのメニューバーを色々とカスタマイズしたくなった今日この頃。痒いところに手が届きそうなMacのユーティリティアプリを見つけてのでご紹介します。アイディアとプログラムの実装次第で、活用方法は無限大なアプリだと思います。

BitBar とは

BitBar メニューバー

BitBar メニューバー


BitBar – Put anything in your Mac OS X menu bar
動作環境は、Mac OS X Lion (10.7)以上です。

Macのメニューバーに常駐して、BitBar公式サイトで公開されているプラグインや自作のスクリプト/プログラムを定期実行し、その出力された結果をメニューバーにアウトプットできるシンプルなメニューバーのアプリです。上記画像の左から天気、VAGRANT、自作プラグインをBitBarで表示させています。

BitBarのインストール方法

GitHubのReleases · matryer/bitbar · GitHubからzip形式のファイルをダウンロードし、Applicationsフォルダにコピーします。BitBarの初回起動時には、プラグインを格納するフォルダの場所を決める必要があります。

このままでは何も動作しないので、最初は、仕組みと動作確認を兼ねて適当なプラグインのサンプルをダウンロードし、実行してみるのがベターかなと思います。
プラグインは、BitBarの公式サイトで公開されています。プラグインをインストールするには「+Add to BitBar」ボタンをクリックでインストールされます。

プラグインのファイル名は以下のように「名前.更新時間.プログラムの拡張子」の命名規則になっていますので、timeの部分を書き換えれば任意のタイミングで情報の更新が可能です。例えば、10s(10秒)、1m(1分)、2h(2時間)、1d(1日)など。

CheckSerposcope.10s.sh
{name}.{time}.{ext}

プラグインをアンインストールするには、最初の起動時に設定したプラグインフォルダから該当ファイルを削除でアンインストール完了です。
削除したプラグインがBitbarのメニューバーに残ったままになっていますが、反映させるには「command + R」で反映できます。もしくは、BitBarのメニュー -> Preferences -> Refresh all から可能もです。

※プラグインをプラグインフォルダーに配置してもメニューバーに反映されない場合は、ターミナルでファイルに実行権限をつけてみてください。chmod +x ファイル名

BitBarのプラグインを作成

BitBar サンプルプラグイン

ターミナルでプロセスを監視するプラグインのサンプルを勉強しながら作成してみました。BitBarのメニューに表示させるフォントサイズやリンク、階層メニューなどの記述も追加しています。
以下は、上記画像で表示させているプラグインのソースです。

#!/bin/bash

PROCESS_NAME=監視するプロセス名
FONT_SIZE=14
FONT_COLOR_DEAD=#fe0000
FONT_COLOR_ALIVE=#ffffff

count=`ps -ef | grep $PROCESS_NAME | grep -v grep | wc -l`
    if [ $count = 0 ]; then
        # プロセスが動いていない場合(countが0の場合)
        echo "● | size=$FONT_SIZE color=$FONT_COLOR_DEAD"
        echo "---"
        echo "プロセス停止中"
    else
        # プロセスが動いている場合
        echo "● | size=$FONT_SIZE color=$FONT_COLOR_ALIVE"
        echo "---"
        echo "プロセス稼働中"
    fi
    # 以下はメニュー例

    # ターミナル実行 パラメーターは分ける
    echo "ターミナルを実行する | bash=/usr/bin/pkill param1=-KILL param2=-f param3=停止するプロセス名 terminal=false refresh=true"
    # クリックでリンクを開く
    echo "リンクの場合 | href=http://www.yahoo.co.jp/"
    # 区切り線を入れる
    echo "---"
    # フォントサイズ
    echo "文字サイズ | size=22"
    # フォントの色
    echo "文字色 | color=#fe0000"
    # 階層メニュー
    echo "階層メニュー"
    echo "--Menu 1"
    echo "--Menu 2"
    echo "--Menu 3"
    echo "----Menu 3-1"
    echo "----Menu 3-2"
    # 再読み込み
    echo "再読み込み | refresh=true"

BitBarのサンプルプラグインについて

上記のソースを保存する場合は、{name}.{time}.{ext} の命名規則に合わせて、sample.5s.sh としてみてください。5秒ごとにプロセスを監視します。※bashで書いていますので、拡張子は sh です。
また、PROCESS_NAMEを「監視するプロセス名」にしているので、プロセスを確認できずメニューバーのアイコンが赤色になっているはずです。

さらに詳しいBitBarのプラグインの書き方は、matryer/bitbar: Writing pluginsを参照ください。

Googleの検索順位チェックツール「Serposcope」を使っているのですが、Javaアプリで、色々とめんどうな部分があるので、Macのメニューバーから操作(起動状態の確認/オンオフ)できるようにBitBarプラグインを書いています。後日公開します。