同じアプリケーションで別なウィンドウにフォーカスする Slate.app の設定

OSXのウィンドウ操作アプリとして、とてつもなくとてつもなく名高い Slate.app には Ctrl+Alt+1 で iTerm にフォーカスするような地獄キーバインドを設定している。

Slateでアプリ切り替えをする設定 - ミントフレーバー緑茶

結構便利に使っているのだけれど、次は iTerm のウィンドウが複数あった時に、別なウィンドウにフォーカスしたいと思うようになった。思うようになって数ヶ月経ってるけど、やっと別なウィンドウにフォーカスするやつを書いた。Ctrl+Alt+n で別のウィンドウにフォーカスできる。

同じアプリケーションで別のウィンドウにフォーカスする Slate.app の設定

Chromeのような親ウィンドウの中に子ウィンドウがある(?)アプリケーションでは1つ目の設定は動かない。今回書いた設定では、ウィンドウの名前で別のウィンドウを識別しているので、名前の付いていない親ウィンドウがあると、無名のウィンドウが2つできてウィンドウを識別できなくなる。タイトルの無いウィンドウを無視してしまえばとりあえず対応できるけど、もっと根本的な解決策がないかな。

同様に、同名のウィンドウがあると正常に動かない。window objectにはこれくらいしか取得できる情報がないので、タイトル以外に識別する方法が見つからない。

Slateでアプリ切り替えをする設定

Slateしか頭にないのかって感じですが、今日追加したSlate設定情報です。

今まではfocusアクションを使って普通にフォーカスしていたけど、アプリが起動していない場合は起動するようにした。あと、iTermとEmacsアプリをj+altで行き来できるようにもした。app_hashに切り替え先を書いておけば、現在のアプリ名を参考に移動するようになっている。設定次第ではApp1->App2->App3->App1と切り替えることも可能。

JavaScriptでSlateの設定ができるようになった

OS Xのウィンドウ操作アプリSlate(jigish/slate · GitHub)の設定ファイルは今まで独自の形式だったけど、chainの設定をする場合など、かなり見辛いことになっていた。

バージョン1.0.19からはJavaScriptで設定ができるようになっていて、柔軟に設定できるようになった。他にもフォーカスしているウィンドウのpidを取得したり、シェルコマンドを叩けるようになったりして、いたれりつくせりっぽい。JSでの設定方法はJavaScript Configs · jigish/slate Wiki · GitHubを読めば分かるけど、自分のちょっとしたメモをgistに置いておきます(Slate(https://github.com/jigish/slate)のJSによる設定メモ)。

個人的にはpid取得とシェルコマンドが嬉しくて、XmonadのPrefix+Shift+cによるアプリケーション終了が書けるようになったことが嬉しい。前回書いた記事(Slateで高速なウィンドウ操作 - ミントフレーバー緑茶)にある設定ファイルをJS版に移植したものもgistに上げておきました。アプリケーション終了コマンドも追加してます。

ウィンドウをタイル型に自動で配列させるコマンドとかも作ってみたい。