ファイルのコメント欄に書いたシェルスクリプトを実行する。

synergyをアイコンクリックで簡単に起動できるようにしたくて、以下のようなAppleScriptを作ってみた。アイコンをダブルクリックすると、そのファイルのコメント欄に書かれたシェルスクリプトを実行する。*1シェルスクリプトはダブルクリックされたアイコンが存在するディレクトリに移動してから実行される。コードは以下のようにしてみた。これを フォーマット:アプリケーション の形式で保存しておく。

--comment_execute(シェルスクリプトのみ実行)
tell application "Finder"
    set myDir to folder of (path to me) as text --自分自身のパス
    set myName to name of (path to me) as text --自分自身のファイル名
    set myDir to POSIX path of myDir --UNIX式のパスに変換
    set myComment to comment of (path to me) as text
    set shellCommand to "cd " & myDir & "; " & "./" & myComment
end tell

try
    do shell script shellCommand
    display dialog myName & return & "コマンド処理が完了しました。" & return & return & result buttons {"OK"} default button "OK" with icon note giving up after 10
on error msg number val
    display dialog myName & return & "コメント欄のコマンドがエラーです。" & return & return & msg buttons {"OK"} default button "OK" with icon stop
end try
--comment_execute_on_terminal(ターミナルを起動して、その中でシェルスクリプトを実行)
tell application "Finder"
    set myDir to folder of (path to me) as text --自分自身のパス
    set myName to name of (path to me) as text --自分自身のファイル名
    set myDir to POSIX path of myDir --UNIX式のパスに変換
    set myComment to comment of (path to me) as text
    set shellCommand to "cd " & myDir & "; " & "./" & myComment
end tell

tell application "Terminal"
    activate
    do script with command shellCommand
end tell

使い方

今まで /Applications/synergy-1.3.1/synergys -f -c /Applications/synergy-1.3.1/synergy.conf と長い長いコマンドを入力していたが、上記comment_executeを使えば以下のようにできる。

  • comment_executeを/Applications/synergy-1.3.1フォルダにコピーする。
  • コピーしたcomment_executeを選択して、コマンドキー + i。
  • コメント欄に「synergys -c synergy.conf」を記入する。(コントロールされる側であれば「synergyc MacBook.local」。MacBook.localはsynergyサーバーのコンピュータ名またはIPアドレス。)
  • 以上で、アイコンをダブルクリックすれば起動する。
  • ログイン項目に入れておけば、synergyサーバーは自動的に起動する。

ターミナルからシンプルに使う

AppleScriptを作ったあとに知ったが、以下のようにインストールすれば...

  • synergys、synergycを/usr/local/binフォルダへ。
  • synergy.confを/etcフォルダへ

synergyサーバーを起動する時

synergys

synergyでコントロールされるマシン側

synergyc MacBook.local

あれれ、AppleScriptで作るまでもなかったかも...。(コメント欄にシェルスクリプトを書けば実行できるようになっているので、synergyに限らず別の何かに使えるかな。)

*1:単純に do shell script "/Applications/synergy-1.3.1/synergys -f -c /Applications/synergy-1.3.1/synergy.conf" で良いのです。でも、ちゃんと起動したかどうか不安になってしまったり、synergysが存在するディレクトリによって起動に失敗することがあるので、作ってみました。これなら他の用途にも使えるので。例えば、script/serverと書いておけば、Raislアプリが起動したりなど...。