Como automatizar o script de shell para executar quando eu abro um aplicativo específico no OSX?

0

Eu tenho me deparado recentemente com um projeto que estou tentando realizar. Usando o Automator, mas não sei exatamente como fazer esse projeto. Há este aplicativo de edição de scripts chamado Brackets, e eu quero fazer isso sempre que o aplicativo é aberto, o comando shell conhecido como tty.js é executado. Qualquer ajuda que eu puder conseguir seria ótima

    
por VEDA0095 21.05.2014 / 06:04

2 respostas

1

O que você pode tentar é ir para a pasta .app do aplicativo e renomear o binário, criando um arquivo de script (marcado como executável) nomeado como o executável usado para conter uma referência ao executável agora renomeado junto com o que você é scripting. por exemplo,

cd /Applications/Brackets.app/Contents/MacOS
mv Brackets BracketsReal
echo "tty.js" > Brackets
echo "BracketsReal &" >> Brackets
chmod +x Brackets

Isso deve criar um script de texto que lance seu script e o aplicativo posteriormente ...

editar

os scripts na pasta Appname.app/Contents/MacOS/ são suportados.

A primeira linha #!/bin/sh (também conhecido como shebang ) é necessária

A técnica para mover o executável real e fazê-lo executar a partir de um script é chamada wrapping e também é usada em aplicativos como Gimp ou XQuartz (Xorg / X11) no MacOS.

Se eu entendi corretamente o que o usuário estava tentando alcançar, execute o Bracket e abra automaticamente o arquivo tty.js , além da falta do shebang , preciso de alguma outra consideração.

Para colar corretamente o BracketsReal, os colchetes devem ser algo como:

#!/bin/sh
exec "$(dirname "$0")/BracketsReal"

Isso deve funcionar como se nunca tivéssemos movido os Suportes para os Suportes.

exec é um comando interno do shell

$0 é um argumento especial passado do sistema para o shell script executado, quando executado com um click deve ser o caminho completo para o script:

/Applications/Brackets.app/Contents/MacOS/Brackets

dirname é um comando shell para obter apenas a parte do diretório sem o nome do arquivo, $( ) é uma substituição de comando, uma vez executada, a linha se tornará:

exec /Applications/Brackets.app/Contents/MacOS/BracketsReal

Tanto é assim que podemos mover o aplicativo de /Applications em outras pastas e ainda assim executá-lo.

Neste ponto, devemos verificar que BracketsReal (provavelmente um script em si) aceita arquivos para abrir como argumentos na linha de comando (e eventualmente se precisar de alguma sintaxe especial) se aceitar argumentos, então a linha se tornaria algo como :

exec "$(dirname "$0")/BracketsReal" "/path/to/the/file/tty.js"

Última nota, para verificar se algo está errado com o script wrapper basta abrir um terminal e executar o wrapper, no prompt do terminal basta digitar / colar:

/Applications/Brackets.app/Contents/MacOS/Brackets

os privilégios ou erros de sintaxe são impressos na janela do terminal.

    
por 21.05.2014 / 07:36
0

O Keyboard Maestro tem uma opção para executar uma macro quando um aplicativo é iniciado:

Vocêtambémpode atribuir um atalho para um script como open -a Brackets;tty.js e, em seguida, use sempre esse script para abrir os colchetes.

    
por 30.05.2014 / 19:35