Como localizo o nome do aplicativo para abrir um arquivo usando o AppleScript?

1

Acho conveniente o método AppleScript de abrir um arquivo, mas muitas vezes não consigo adivinhar o nome do aplicativo a ser usado quando não quero as opções padrão.

Como exemplo, eu instalei o Foxit PDF Reader para anotar diretamente um PDF. Não consegui adivinhar o que usar no open -a ??? my.pdfcomando.

Como eu poderia encontrar isso para qualquer aplicação geral? Talvez haja alguma maneira de obter uma lista de todas as opções disponíveis?

Steven C. Howell
fonte
É simplesmente:open -a "Foxit Reader" /path/to/file.pdf
user3439894
@ user3439894, isso resolve meu caso de exemplo, mas a resposta de Mateusz identifica como aplicar isso ao caso geral. Existem muitos aplicativos com os quais quero fazer isso e não quero fazer uma nova pergunta para cada um.
Steven C. Howell
Como nunca preciso me preocupar com a localização, pessoalmente não preciso obter o BundleIdentifier, pois posso ver claramente o nome dos aplicativos e todo o meu trabalho, como no exemplo que apresentei anteriormente. De qualquer forma, com base no que Mateusz Szlosek apresentou, se você deseja obter todos os nomes de aplicativos e o BundleIdentifier em uma boa lista, basta usar a seguinte linha de comando. Copie e cole-o no Terminal:for f in /Applications/*.app; do echo "${f##*/} =>" "$(plutil -p "$f/Contents/Info.plist" | awk -F'[""]' '/BundleIdentifier/ {print $4}')"; done
user3439894

Respostas:

3

Você pode usar a -bopção e usar o Identificador de pacote em vez de usar o Nome do aplicativo. Por exemplo, para obter o Bundle Identifier no Safari :

plutil -p /Applications/Safari.app/Contents/Info.plist | grep BundleIdentifier

como resultado, você terá "CFBundleIdentifier" => "com.apple.Safari"

Então você usa assim:

open -b com.apple.Safari /path/to/file

Geralmente, você precisará obter o Identificador de pacote a partir do Info.plistarquivo localizado dentro do Application.app/Contents/diretório.

Ou, se desejar, você pode obter o nome do aplicativo com este:

plutil -p /Applications/PaintCode\ Trial.app/Contents/Info.plist | grep BundleName

saída:

"CFBundleName" => "PaintCode Trial"
Mateusz Szlosek
fonte
Isso parece uma alternativa viável. Esses identificadores de pacote serão mais difíceis de lembrar e mais longos para digitar. Para Foxit, o Identificador de pacote é com.foxitsoftware.FoxitReaderLite. Se não houver uma maneira de obter o nome mais curto do aplicativo, um alias do bash para isso provavelmente seria a próxima melhor opção, ou seja alias foxit="open -b com.foxitsoftware.FoxitReaderLite",.
Steven C. Howell
@ stvn66 Adicionei as informações sobre como obter o nome do aplicativo na minha resposta.
Mateusz Szlosek
Por que passar por tanto rigamarole quando simplesmente open -a "Foxit Reader" /path/to/file.pdffaz o que o OP está pedindo !?
User3439894
Porque alguns aplicativos têm nome de exibição diferente do nome do pacote. Por exemplo, poderia ser localizado.
Mateusz Szlosek
Bom ponto! +1 :)
user3439894