Você com certeza pode. Escrevi um AppleScript há algum tempo para executar a tediosa tarefa de abrir uma janela do Terminal em todos os espaços.
A maioria dos exemplos na internet usa o AppleScript para gerar pressionamentos de teclas. Por exemplo, se você tiver configurado para que "control-2" leve você ao espaço 2 (isso pode ser definido no painel de preferências "teclado"), você pode usar o seguinte AppleScript:
tell application "System Events"
tell process "Finder"
keystroke "2" using control down --switches to space 2
end tell
end tell
para mudar para o espaço 2. Assim, meu script, que abre uma janela do Terminal em cada espaço, funciona assim:
tell application "System Events"
tell process "Finder"
keystroke "1" using control down --switches to space 1
end tell
tell process "Terminal"
activate
keystroke "t" using command down --new terminal tab
end tell
tell process "Finder"
keystroke "2" using control down --switches to space 2
end tell
...etc...
end tell
É claro que você pode instruir aplicativos que não sejam o Terminal a abrir janelas em um determinado espaço.
Você pode iniciar um aplicativo inativo com do shell script "open -a application_name"
.
O problema com essa abordagem é que ela é totalmente dependente do envio de pressionamentos de teclas, onde é possível que eles sejam enviados com muita rapidez, acabem enfileirados e, por fim, executem na ordem errada. Para evitar isso, é necessário adicionar um atraso (por exemplo, delay 0.1
) após cada pressionamento de tecla com script, fazendo com que todo o script leve algum tempo para ser executado.
Ou, por exemplo, se você iniciar um aplicativo, pode levar algum tempo para inicializar, e ele abrirá suas janelas em qualquer espaço que estiver ativo quando chegar tão longe (em oposição a qualquer espaço ativo quando você lançou o aplicativo). Portanto, o atraso deve ser definido apropriadamente a cada vez e, às vezes, pode levar vários segundos. Ainda pior, devido às variações de carga do sistema, o tempo pode nem mesmo ser consistente desde a execução até a execução, forçando você a usar um atraso longo o suficiente para considerar o pior cenário possível. (Por exemplo, se você iniciar um aplicativo que pode demorar até 5 segundos a partir do momento da execução para exibir sua primeira janela, será necessário atrasar 5 segundos antes de passar para o próximo espaço e seguir em frente.)
Infelizmente, não vi outra abordagem para trocar espaços. Espero que alguém possa vir e fornecer uma maneira melhor de alternar do que enviar pressionamentos de tecla, ou talvez uma maneira de fazer o script aguardar sem causar um atraso arbitrário.
Ainda assim, se você não se importar em dar ao seu script alguns segundos para colocar seu ambiente em funcionamento, será possível sequenciar facilmente uma série de lançamentos de aplicativos ou aberturas de janelas e seleções de espaço com o que eu forneci.