$a(){ a|a& };a

ふくし…の大学?に通ってるんですけど!

Macで(Windows風に)アプリをキーボードで切り替えるJXAを書いた

したいこと

Windowsでは以下の操作が簡単にできますがデフォルトのMacでは実現できません。

  • Win+0~9 キーで数字の対応するタスクバー(MacでいうDock)の位置のアプリの起動/切り替え
  • Win+↑でアプリの画面最大化
  • Win+←→ でアプリを画面の右(左)半分にフィットさせる

Win+←→キーなどは、shiftltなどのアプリを入れることでも再現することができますが、 それではDockをキーボードで簡単に操作することはできません。 また、SplitViewを使う手もありますが、他のアプリとの切り替えがめんどうなのであれはダメです。 以上の操作を実行するAppleScriptを書いてキーボードショートカットに割り当てて爆速開発環境にしたいわけです。

具体的には、

  • Ctrl + 0~9キーで対応するDockの位置のアプリを起動/切り替え
  • Ctrl + ↑キーで現在のアプリの画面を最大化する
  • Ctrl + ←→キーで現在のアプリを左右に寄せる
  • Ctrl + ↓ キーで隣のアプリと切り替え
  • Ctrl + _ キーでiTunesと切り替え

の操作ができるようにしたいわけです。

手順

  1. $brew cask install karabiner で、キーバインドのために Karabiner を入れる。
  2. $brew install cliclick で、shellからクリック操作をエミュレートできるcliclickを入れる。(/usr/local/bin/cliclick にcliclickが配置されているようにする)
  3. Karabinerを開き、private.xml(キーバインド割当設定)を生成する
  4. gist.github.com をprivate.xmlに書く。
  5. gist.github.com~/.mv_windows.js に書く。
  6. Karabinerで先程生成したキーバインドを設定する。
  7. うまく動作しない場合はKarabinerのアクセシビリティが正しいかを確認する。
  8. キーバインド完成!!

感想

初めてAppleScriptを書いてみようとして文法がアレだったのでJavaScriptで書きました。 JXAの日本語情報(特にDock周り)がとても少なかったのでなかなかめんどかったです。