Eu tenho um script que resolve um problema semelhante, e aqui está uma versão modificada que foi testada em vários aplicativos diferentes.
on idle
tell application "System Events"
set pName to the name of every process
if pName does not contain "MY APPLICATION" then
do shell script "open -g /Applications/MY APPLICATION.app"
-- or wherever your application is
else if pName contains "MY APPLICATION" then
set makeFalse to visible of window 1 of application "MY APPLICATION"
if makeFalse is true then set visible of window 1 of application "MY APPLICATION" to false
end if
end tell
end idle
Observe que esse script deve ser salvo como um aplicativo "permanecer aberto" e pode ser adicionado à sua lista de itens de inicialização para que seja carregado automaticamente quando você reiniciar o sistema.
Quando estiver em execução, o script fará o seguinte:
- Verifique os processos em execução para ver se seu aplicativo está aberto.
- Se o seu aplicativo não estiver na lista, ele será aberto em segundo plano com o comando
do shell script "open -g
. - Se o aplicativo estiver aberto, ele ocultará a janela principal.
- O manipulador
on idle
verificará automaticamente a cada 30 segundos. Se você quiser ter um atraso maior, adicionereturn
e o número de segundos que deseja que o script aguarde antes de verificar novamente (por exemplo,return 300
por cinco minutos). Isso deve ser adicionado antes deend idle
Eu uso esta informação para esconder a doca ícone para o aplicativo e executá-lo completamente em segundo plano.