rcmdnk's blog

AppleScriptリファレンス

Macを新しくしてからHyperSwitchの調子が悪いのですが、 他のアプリに乗り換えようと思いましたが使い勝手が良いのが無いので引き続き使っています。

特に外部モニタと切り離したりつけたりするときに表示がおかしくなるんですが、 この際、アプリを再起動すると元に戻ります。

ただ、HyperSwitchをメニューバーに表示させてないので 再起動するときは一度HyperSwitchをスポットライトから呼んで環境設定を 出してメニューバーを表示させてそこにあるメニューから終了させて また立ち上げて。。。 みたいな事をやってましたが、流石に煩わしいのでAppleScriptで再起動する スクリプトを作りました。

Sponsored Links

リスタートスクリプト

こんな感じのスクリプトを AppleScriptエディタで書いて ~/Library/Scripts/restartApp.scptとして保存します。

~/Library/Scripts/restartApp.scpt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
property DEF_APP_NAME : "HyperSwitch"
property DEF_DIR : "/Applications"

on restartApp(pars)
    set {appName, dir} to {DEF_APP_NAME, DEF_DIR}
    try
        set appName to appName of pars
    end try
    try
        set dir to dir of pars
    end try

    if application appName is running then
        tell application appName to quit
        repeat while application appName is running
            delay 0.1
        end repeat
    end if

    tell application (dir & "/" & appName & ".app")
        activate
    end tell
end restartApp

on run
    restartApp({})
end run

最初のtry文のところは擬似デフォルト引数みたいなことをするために、 最初にデフォルト値をセットして、 それぞれの値が引数の配列(pars)に入ってればそれをセット、 みたいな事をやっています。

引数としてはアプリへのパスとアプリ名。 (~/Applications/に居るものもあるので)

その次にis runningでアプリが起動しているかどうかをチェックしています。 起動していたらquitを送って停止するわけですが、 この時にすぐに次に言ってしまうときちんと終了する前に 次の処理に言ってしまうので終了するのを待つのを入れています。 (delay 0.1で0.1秒待ち)

最後にアプリをパス事指定してactivateすればOK。

このスクリプトを直接実行した時は最初に書いてある デフォルトのアプリを使います。

今のところHyperSwitch専用なのでデフォルト値もそのままで これを直接使っても良いのですが、 他でも使いまわすには次の様なスクリプトを使います。

~/Library/Scripts/restartHyperSwitch.scpt
1
2
3
4
5
6
tell application "Finder"
    set scriptPath to (path to me)'s folder as text
end tell
set restartAppScpt to scriptPath & "restartApp.scpt"
set restartApp to load script file restartAppScpt
restartApp's restartApp({appName:"HyperSwitch", dir:"/Applications/"})

このファイルをrestartApp.scptと同じディレクトリに入れておきます。

最初の3行はこのスクリプトの位置を取得していて、 これを使ってrestartApp.scptへのフルパスを求めます。

後は関数restartAppにアプリ名とパスを渡して上げればOK。

これで、メニューバーにAppleScriptを表示させておいて そこから実行したり、 もしもっっと頻繁に使うようなら BetterTouchToolなんかでキーボードショートカットに指定しておけば さらに簡単に再起動が出来るようになります。

Sponsored Links
Sponsored Links

« Vimで気づいたらすべて小文字になる現象 多段ssh設定のまとめ »