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を使って、効率化を心がけていきたい。