Alfredを使ってMissionControlのウィンドウ切り替えをしてみる、そしてWorkflowへ

はじめに

MissionControlの←→とウィンドウを切り替える機能は、毎日すごく使うのですが、キーボードショートカットの割り当てを

  • Ctrl + ←
  • Ctrol + →

としているんですが、どうしても十字キーが遠い…

そこで

  • Ctrl + H
  • Ctrol + L

としてた時期もあるんですが、Vimのウィンドウ切り替えとバッティングしてしまい、いまいちでした。

そこでAlfredを使ってなんとか出来ないかなーと思っていたんですが、サボってサボって。
そしてAppleScriptを使えばできるんじゃないかなーと思って、ちょっとやってみました。
その過程をメモメモ。

ターミナルからデスクトップ切り替えしてみる

こんなのがあったんですが、1を2、3と切り替えてみてもデスクトップ切り替えにはなりませんでした。

/Applications/Mission\ Control.app/Contents/MacOS/Mission\ Control 1

via Terminal commands for “Application Windows” and “Show Desktop” in Mountain Lion – Ask Different

AppleScriptを書いてみる

職場のチャットで話ししていて、こんなAppleScriptを教えてもらいました。

←に移動

tell application "System Events"
  key down control
  keystroke (ASCII character 28)
  key up control
end tell

■gist
MissionControllLeft.applescript

→に移動

tell application "System Events"
  key down control
  keystroke (ASCII character 29)
  key up control
end tell

■gist
MissionControllRight.applescript

そして、これをAlfredのAction → Terminal Commandから実行するようにしてみた。

osascript MissionControllRight.applescript

そして、InputのKeywordを適当に作って実行したところ、うまくいった!

Alfredのみで完結してみる(AppleScriptを外部ファイルにしない)

どうもこちらを見ていると、雑多の備忘録 – AppleScript/osascriptAppleScriptはShellとしても呼び出せそう。
なので、AlfredのAction → Run Scriptを使って、Languageのところを/usr/bin/osascriptし、上述したAppleScriptをペタリ。

これで、外部ファイル使わずにAlfred環境だけでいけた!!

Workflowにしておきました

hisasann/MissionControlMoveSpace

おまけ

MissionControllのdurationを変更できそうなので、ためしに以下のコマンドを実行してみましたが、
ウィンドウ切り替えのdurationは変更できませんでした。

defaults write com.apple.dock expose-animation-duration -float 0.15; killall Dock

via Mission Controlが表示されるアニメーションのスピードを調節する方法 – Macの手書き説明書