MacBookの電源やWi-Fi、Bluetoothの接続が切れたのをトリガーにコマンドを実行しつづけるCLIツールを作った

2週に1度くらいFukuoka Growth Nextコワーキングスペースを使わせてもらっています*1

その時ちょっとだけ席を立ちたいときに、展開しているMacBookバックパックを「置いておくか」「持っていくか」いつも悩みます。

バックパックはワイヤーを持ち歩いているので机に縛ってしまえばいいのですが、MacBookはそうもいかないので少しだけ安心できるような仕組みが欲しいなと思っていました。プライベートのMacBookとはいえ、盗まれたら家計に大打撃です*2

日本ですしコワーキングスペースという出入りが限定されているエリアなのでそこまで気にする必要はないんですが。

「そういえば昔そんなこと考えていたなー」と思ったら、アイデアをエントリに残していました。

k1low.hatenablog.com

なるほど。アプリとまでいかないまでもシェルスクリプトとかCLIツールで作れば良さそうと思って作ってみました。

github.com

これは何?

電源ケーブル、もしくはWi-FiBluetoothを指定して実行しておくと、その接続が切れたことを検知して、接続が切れている間指定のコマンドを 実行し続ける というだけのCLIツールです。

インストール

macOSというかMacBook専用コマンドなのでHomebrewでのインストールがオススメです。

$ brew install k1LoW/tap/connected

使い方

コワーキングスペースなどでちょっと席を立つときに、電源ケーブルを電源に繋いだ状態で以下のようなコマンドを実行しておきます。

$ connected watch -- say "電源ケーブルが外れています"

そうすると、電源ケーブルが外れたときに say コマンドが実行され続けます。

音量を下げられても対応できるようにosascriptでボリュームを最大にするのも良いかもしれません。

$ connected watch -c 'osascript -e "set Volume 10"; say "電源ケーブルが外れています"'

実行するコマンドは任意のものを指定できるので、Slackに通知したりTwilio経由で電話をかけたりすることも可能です。

電源ではなくWi-Fiの接続を利用したいときは--wifi オプション、Bluetoothバイスとの接続を利用したいときは --bluetooth オプションを指定します。

$ connected watch --wifi -- sh ./slack_notify.sh
$ connected watch --bluetooth -- sh ./twilio_call.sh

というわけで

なんとなく作ってみました。

特に抑止力にはならなそうですが、ちょっとした安心が欲しい方はどうぞ。

*1:平日もfgnで業務をすることもできるのですが、私の場合は主に休日の趣味プログラミングのためです

*2:そういえばキーボードの効きが悪くなったと思っていたらキーボード修理プログラムの対象でした