システムの起動時に、3 つの異なるデスクトップ/スペースでファイルを開く AppleScript を実行したいと考えています。
First Space: Mail and Things (my to do list program)
Second Space: Textmate and a Safari for my first project
Third Space: Textmate and a Safari for my second project
まず、Mission Control でさらに 2 つのデスクトップを作成しました。これらのデスクトップは、手動で削除しない限り、次回システムが起動したときに残ります。1 つの長いスクリプトを作成する代わりに、3 つの AppleScript (boot1、boot2、および boot3) をチェーンして、より単純なコード ブロックに分割しました。boot1 の最後に次のように表示されます。
run script file "<drive name>:Users:<username>:boot2.scpt"
boot2 と boot3 には、たくさんのdelay
行が表示されます。AppleScript について私が気に入らない点の 1 つは、OS が前のコマンドへの応答を完了する前に、次のコマンドの処理を開始することが多いことです。これにより、矛盾やエラーが発生します。遅延は、物事を強制的に遅くするためのハックです。それらは役に立ちますが、それらを使用したとしても、物事はまだ少し危険です. boot2.script:
# this emulates the keyboard shortcut to move to desktop 2
# there doesn't seem to be any way to modify an `open` command to open a file on desktop 2
tell application "System Events"
delay 2
# key code 19 is the key code for the number 2.
# <cntl> 2 is the shortcut to get to desktop 2
key code 19 using control down
end tell
tell application "TextMate"
activate
# 'sites' is the name of the directory my projects are in
open "/users/<username>/sites/project1/"
end tell
tell application "Terminal"
activate
do script "cd /users/<username>/sites/project1/"
delay 2
do script "rails s" in front window
delay 2
tell application "System Events" to tell process "Terminal" to keystroke "t" using command down
tell application "System Events" to tell process "Terminal" to keystroke return
delay 2
do shell script "open -a Safari http://localhost:3000"
end tell
わかりました...これは、遅延が十分に長くない場合の不一致を除いて、ほとんどの場合、デスクトップ 2 を配置するために機能します。Boot3.script は boot2 とほとんど同じですが、デスクトップ 3 でアプリケーションを開こうとすると、デスクトップ 2 にウィンドウがあるため、システムはそのデスクトップに戻ります。これが次の問題です。どうすればそれを克服できますか?
スペース設定がなくなったため、2305491は関連性がなくなりました。
ありがとう。