Emular o comportamento “Go to Dekstop / Home / etc.” no OS X via AppleScript

0

O OS X tem suporte para acessar determinadas pastas (Página inicial, Utilitários, Área de trabalho, etc.) por meio de um atalho.

Eu queria emular esse comportamento para a pasta Downloads. A única coisa que está faltando no script abaixo é que ele não será bem-sucedido quando nenhuma janela for aberta no Finder (consulte a mensagem de erro).

tell application "Finder"
    activate
    set target of Finder window 1 to folder "Downloads" of folder "username" of disk "Macintosh HD"
end tell

Mensagem de erro:

error "Finder got an error: Can’t set Finder window 1 to folder \"Downloads\" of folder \"username\" of disk \"Macintosh HD\"." number -10006 from Finder window 1

É ótimo se você conhece algum tipo de 'if-compliement' que aciona a abertura da pasta Downloads no caso de não haver nenhuma janela 1 aberta no Finder. Agradecemos antecipadamente.

    
por pattulus 27.02.2011 / 07:34

3 respostas

1

Eu simplesmente usaria uma instrução open da seguinte forma, explorando o fato de que o Finder já sabe o que home significa:

tell application "Finder"
    activate
    open folder "Downloads" of home
end tell

, que criará uma nova janela mostrando a pasta "Downloads" ou exibirá qualquer janela que esteja exibindo a pasta Downloads na frente.

    
por 27.02.2011 / 08:34
1

Os itens de menu Go abrem uma nova janela se nenhum estiver aberto ainda. Então, para obter o mesmo comportamento:

tell application "Finder"
    activate
    if (count of windows) is equal to 0 then
        open folder "Macinthosh HD:Users:yourname:Downloads"
    else
        set target of (first window whose index is equal to 1) to folder "Macinthosh HD:Users:yourname:Downloads"
    end if
end tell

Isso não funciona se você usar FileVault embora. Você sempre pode usar um caminho relativo à sua pasta pessoal usando

folder "Downloads" of home

como @Asmus sugerido.

    
por 27.02.2011 / 09:32
1

set target é muito irritante para usar na visualização de colunas. Inclui todas as colunas a partir da raiz, mesmo que algumas das pastas contidas estivessem na barra lateral.

Eu mesmo uso algo assim:

tell app "Finder"
    activate
    set p to path to desktop
    close every window
    open folder p
    set w to window 1
    set toolbar visible of w to false
    set current view of w to column view
    set bounds of w to {0, 22, 960, 589}
end tell

E, por exemplo, ⌥A abre / Applications.

Ele não emite esses atalhos padrão, mas há algumas vantagens:

  • Você pode usar atalhos globais, um pouco como com os acionadores do Quicksilver
  • Ele restaura os limites padrão (como o Finder Minder)
  • Você pode garantir que a janela seja aberta com suas opções de visualização preferidas
  • IMO é melhor ter apenas uma única janela do Finder aberta de cada vez, então isso reforça
por 28.02.2011 / 01:11