Existe uma maneira de configurar um espaço (controle de missão) no OSX?

6

Parece que o Spaces foi projetado com a atribuição de aplicativos para um espaço em mente (consulte este artigo da base de conhecimento ). Mesmo aplicativos como o TotalSpaces são construídos com este modelo . Isso parece redundante para mim, pois já existe um alternador de aplicativos (Cmd-Tab) que permite alternar entre aplicativos.

Gostaria de usar o Spaces como uma maneira de alternar entre projetos . Por exemplo, eu tenho um espaço para o ProjectA que tem uma janela para cada XCode, Safari, Sublime Text e Terminal. Então eu tenho um espaço diferente para o ProjectB que também tem uma janela para cada XCode, Safari, Sublime Text e Terminal. É só que as janelas têm documentos diferentes abertos.

Mas manter a configuração é inconveniente, porque eu tenho que configurá-las repetidas vezes, e é particularmente terrível quando eu olho para frente e para trás entre computadores, e tenho que abrir cinco janelas e colocá-las no espaço certo. . Existe alguma maneira eu posso gerar um script de uma etapa que configura um espaço do jeito que eu gosto automaticamente? Shareware, Applescript, etc? Ou estou apenas tentando encaixar meu estilo de trabalho em um recurso que foi criado para outra pessoa?

    
por Drew 17.01.2013 / 00:31

1 resposta

1

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.

    
por 17.01.2013 / 04:05