applescriptを使ってvlcをドロップレットで複数起動できるようにする(runハンドラのみ使用)

投稿者: | 2019-10-09

macOSでドロップレットを利用して、VLCを複数ウィンドウで開けるようにする。

ついでにFinderの右クリックメニューからも開けるようにする。

環境

  • macOS High Sierra 10.13.6
  • vlc 3.0.6

作り方

前回と同じく、automatorを起動してメニューバーからファイル->新規を選択する。

今回は、アプリケーションとして作るのでアプリケーションを選択し、選択を押す。

アプリケーションを選択して新規作成

メインウィンドウが表示されているので、AppleScriptを実行をドラッグ&ドロップして、 VLC HowTo/Play multiple instances - VideoLAN Wikiにあるスクリプトをコピペ。 つまり以下のスクリプトをコピー&ペーストする。

今回はコピペなのであまり意味はないが、スクリプトを書いた箇所の上にあるハンマーをクリックして構文チェックできる。

-- このスクリプトのままでは使わないので注意。詳細は`修正`のところに。
on run
    do shell script "open -n /Applications/VLC.app"
    tell application "VLC" to activate
end run

on open theFiles
    repeat with theFile in theFiles
        do shell script "open -na /Applications/VLC.app " & quote & (POSIX path of theFile) & quote
    end repeat
    tell application "VLC" to activate
end open

ドラッグ&ドロップしてコピー&ペーストする

最後に保存する。

メニューバーのファイル->保存を選択し、

  • 保存先をアプリケーションフォルダにする。(アプリは1箇所にまとめておきたい)
  • フォーマットはアプリケーションのまま。

だけ注意して保存する。下の画像を参考。

アプリとして保存する。

これでアプリの作成は終了。automatorは終了してもOK。

修正

このまま使っても、サービスの時と同じくファイルを開けないことに気付いた。なお、空のまま起動はしてくれる。

display dialog "hello"などを使って調べていくと、どうやら、openハンドラは動いておらず、runハンドラだけが呼び出されているようだ。

なので、runハンドラについて再度調べると、引数が渡されていることがわかった。

6. AppleScript - mytrans マニュアル等の個人的な翻訳 によると、{input, parameters}の2種類の引数があるようで、openハンドラを削除し、runハンドラを書き換えた所、うまく動いた。これならサービスでも同じことをすれば動く可能性がある。(未確認)

automatorを終了していたら、先ほど保存したappをautomatorで開いて、スクリプトを書き換えればよい。

書き換えたAppleScriptはこちら:

on run {input, params}
    if (count of input) > 0 then
        repeat with theFile in input
            do shell script "open -na /Applications/VLC.app " & quote & (POSIX path of theFile) & quote
        end repeat
    else
        do shell script "open -n /Applications/VLC.app"
    end if
    -- tell application "VLC" to activate
end run

tell application...の辺りは、なぜか空のVLCが1つ余計に起動するので外した。

これでVLCの複数起動が可能になる。

使い方

Finderで別ウィンドウとして開きたいファイルを右クリックする。

右クリックからその他を開く

すると、アプリケーションの選択画面が表示されるので、先ほど保存したアプリを選択して開けばOK。

おそらく何回も使用すれば、その他…をクリックせずとも、上の候補のアプリとして載るんじゃないかと思っている。

あとがき

思ってたよりてこずった。applescriptは資料が多いようであんまり多くない。引数がわかりづらい。どのハンドラが呼ばれるか分かりづらい。予約語はなんだ。

と言いつつも、ただの練習不足だと思うので、効率よくできそうなことは、applescriptやautomatorを使って、効率化を心がけていきたい。