ZealをショートカットキーでToggleするためのshell script

DashのalternativeとしてLinuxマシンではZealを使っています。
Dashにはキーボードショートカット機能があり、指定したキーマップでDashのウィンドウのアクティブ・非アクティブをトグルすることができてとても便利です。
Zealには標準機能としてはこれがなくて、手で毎回画面を出し入れする面倒くささに真面目に対処してこなかったんですが、ちょっとUbuntuのキーボードショートカット機能とxdotoolによるウィンドウ操作を駆使して(というほどのことはしてない)一発でトグルできるようにするシェルスクリプトを書いたので自分用メモも兼ねて記録。

ウィンドウを操作するためにxdotoolが入っている必要があるのでaptで事前に入れておいてください。

Ubuntuの場合、設定方法は”Menu” -> “Keyboard shortcuts” -> “+ Add”で、このシェルスクリプトへのパスを追加するだけです(+xパーミッションをつけるかshを頭につけるかしないとエラーになります)。

Dashのキーボードショートカット機能ではDashをdeactivateするときDashウィンドウは最小化され見えなくなりますが、このシェルスクリプトでは単にZealを(このshell scriptで)activateする直前までactiveであったウィンドウを再びactiveにするのみで、Zealのウィンドウ自体はその元ウィンドウの後ろに行くだけで最小化されたり見えなくなったりはしません。
つまり、もしZealがactivateされたとき直前まで使っていたウィンドウを隠していない場合、deactivateされたZealは見えたままフォーカスだけが元のウィンドウに戻ります(元ウィンドウをZealが隠していた場合、元ウィンドウが最前面に出てくることに伴ってZealは隠されることになります)。
この挙動はデュアルスクリーンの左右でコーディングとZealを行き来するときに便利であると思います。

Dashと同じ挙動にする(Zealをdeactivateする際に最小化させる)場合、

xdotool windowactivate $LAST_ACTIVE_WINDOW_ID

となっているところを、

xdotool windowminimize $ZEAL_WINDOW_ID

と書き換えればOKです(それに伴ってCURRENT_ACTIVE_WINDOW_IDをこねこねしてる部分はまるっと不要になり、shell scriptはだいぶ軽くできます)。

Ubuntu MATE 18.04・Zeal 0.6.1・xdotool 3.20160805.1で動作を確認しています。