在applescript中,有没有办法指定打开文件的桌面?

时间:2013-11-04 18:17:47

标签: applescript

当我的系统启动时,我想运行在三个不同桌面/空间中打开文件的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中,我创建了另外两个桌面,这些桌面将在我的系统下次启动时保留在那里,除非他们被手动删除。我没有创建一个长脚本,而是将三个应用程序(boot1,boot2和boot3)链接起来,将其分解为更简单的代码块。在boot1结束时,您将看到:

run script file "<drive name>:Users:<username>:boot2.scpt"

在boot2和boot3中,你会看到一堆delay行。我不喜欢applescript的一件事是它经常在操作系统完成对前一个命令的响应之前开始处理下一个命令。这会导致不一致和错误。延迟是一种迫使事情放缓的黑客行为。他们有所帮助,但即使你使用它们,事情仍然有点冒险。在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不再相关,因为空间偏好已经消失。

感谢。

1 个答案:

答案 0 :(得分:1)

  

Boot3.script与boot2几乎相同,但在尝试在桌面3上打开应用程序时,由于桌面2上有一个窗口,系统会跳回到该桌面。

任务控制首选项中有一个选项,称为“切换到应用程序时,切换到打开应用程序窗口的空间”。取消选中此项。

  

好的......所以这主要是为了让桌面2到位,除了延迟不够长时的不一致。

更好的解决方案始终是这样的

repeat until something exists
delay 0.1
end repeat