Como colocar um aplicativo na frente com base em alguma condição (OS X) com o AppleScript

0

Eu estou tentando encontrar uma maneira de automatizar trazendo um navegador da web para a frente (ou seja, dar foco, torná-lo visível na tela) com base em um evento que acontece em uma página da web. Eu tenho controle total sobre a página da web, para que eu possa fazer o que eu preciso para acionar isso.

Eu preciso ter vários aplicativos abertos com uma página da web em segundo plano que está monitorando algumas câmeras de vídeo. Quando uma câmera de vídeo tem movimento, preciso que a janela do navegador da Web chegue à frente para que fique visível, em vez de qualquer aplicativo que esteja sendo usado.

Eu estava pensando em algo parecido com o que esse cara estava tentando fazer:

Eu estava pensando em usar o AppleScript para rodar em um loop contínuo, e uma vez por segundo verificar a página aberta no Safari, procurar por alguma mudança e, em seguida, enviar o comando "activate" para o Safari para trazê-lo para a frente. É assim que eu deveria fazer isso, ou há uma maneira melhor?

    
por scotts7777 01.07.2012 / 05:53

1 resposta

1

Eu provavelmente usaria launchd ou cron em vez de executar o script como um processo em segundo plano.

  1. Salve um script como este em algum lugar no AppleScript Editor:

    try
        tell application "Safari"
            tell document 1 where name starts with "Webcam" to do JavaScript "--"
            if result is "--" then activate
        end tell
    end
    
  2. Salvar uma lista de propriedades como esta ~/Library/LaunchAgents/com.superuser.443513.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.superuser.443513</string>
        <key>ProgramArguments</key>
        <array>
            <string>osascript</string>
            <string>/Users/username/Library/Scripts/script.scpt</string>
        </array>
        <key>StartInterval</key>
        <integer>5</integer> <!-- every 5 seconds -->
    </dict>
    </plist>
    
  3. launchctl load ~/Library/LaunchAgents/com.superuser.443513.plist

Você poderia usar o curl para verificar a condição? Você poderia executá-lo a cada dois minutos editando o crontab com EDITOR=nano crontab -e e adicionando uma linha como esta:

*/2 * * * * [[ -n "$(curl -L http://superuser.com/questions/443513 | grep automate)" ]] && open http://example.com

    
por 01.07.2012 / 17:25