Como abrir uma nova janela do Firefox com argumento de URL

3

Estou tentando atualizar a resposta existente

Como abrir uma nova janela do Firefox com o Terminal

para aceitar um URL como argumento e abrir uma nova janela do Firefox.

eu posso usar

open -a Firefox 'http://localhost:3000'

mas é aberto em uma guia e não em uma nova janela conforme desejado.

Uma variação é

open -n -a Firefox 'http://localhost:3000'

que me dá o erro padrão

Close Firefox, A copy of Firefox is already open. Only one copy of Firefox can be open at a time

MAS abre o URL no meu navegador padrão Safari.

Eu tentei várias opções com base na página man do open e no site do Mozilla para abrir URLs com seus produtos, mas eles dizem que as informações estão obsoletas e podem não funcionar. Não é para mim, por exemplo.

/Applications/Firefox.app/Contents/MacOS/firefox -new-window "http://localhost:3000"
/Applications/Firefox.app/Contents/MacOS/firefox -remote "openURL(http://localhost:3000, new-window)"

ambos falham com o erro comum acima.

Eu tentei modificar o script no link anterior. Eu atualizei para o seguinte.

# A function to be able to open up a new Firefox window if firefox is already
# running.
function firefox-window() {
/usr/bin/env osascript <<-EOF
on run argv
  tell application "System Events"
    if (name of processes) contains "Firefox" then
        tell application "Firefox" to activate
        keystroke "n" using command down
    else
        tell application "Firefox" to activate
    end if

    return "I am trying to open " & item 1 of argv & " in a new Firefox window."
  (*
    if & item 1 of argv &
      return "I am the if you seek"
      tell application "Firefox" OpenURL & item 1 of argv &
    end if
  *)

  end tell
end run
EOF
}

Eu recebo o erro:

execution error: Can’t make item 1 of {} into type Unicode text. (-1700)

e eu estou preso lá. Então, estou tendo um problema para obter o URL no applescript como um argumento.

Bem, recebo vários outros erros, mas o script original é executado apesar dos erros anteriores ao UNICODE.

~$ firefox-window 'http://localhost:3000'
2012-06-10 16:13:30.258 osascript[789:60f] Error loading /Library/ScriptingAdditions/Adobe Unit
 Types.osax/Contents/MacOS/Adobe Unit Types:  dlopen(/Library/ScriptingAdditions/Adobe Unit
 Types.osax/Contents/MacOS/Adobe Unit Types, 262): no suitable image found.  Did find:
    /Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types: no
     matching architecture in universal wrapper
osascript: OpenScripting.framework - scripting addition "/Library/ScriptingAdditions/Adobe Unit
 Types.osax" declares no loadable handlers.
294:300: execution error: Can’t make item 1 of {} into type Unicode text. (-1700)

Eu estava esperando que isso pudesse ser simples, mas isso me fez bater a cabeça na parede. Estou confuso de que não funcionará com um simples comando aberto para que eu possa fazê-lo em um script de shell.

Qualquer ajuda seria apreciada para que o Firefox abra uma nova janela ao passar uma URL para ela.

    
por Dave 11.06.2012 / 16:14

1 resposta

1

Note: The following works up to OS X 10.7 but not in 10.8 – see this question.

Abra o AppleScript Editor.app e cole o seguinte:

on run argv
    tell application "System Events"
        if (name of processes) contains "Firefox" then
            tell application "Firefox" to activate
            keystroke "n" using command down
            delay 0.1 -- UI scripting delay
        else
            tell application "Firefox" to activate
            delay 0.3 -- more delay
        end if
        keystroke "l" using command down
        keystroke item 1 of argv
        keystroke return
    end tell
end run

Aqui, vamos abrir uma nova janela com o Cmd-N ou apenas ativar o Firefox. Eu incluí um atraso personalizado - isso é necessário já que as ações da interface do usuário têm um atraso inerente e o script, em seguida, digita embora embora a janela ainda não esteja pronta.

Finalmente, vamos keystroke o primeiro argumento, que é item 1 of argv .

Salve este arquivo em firefox-window.scpt , por exemplo na sua pasta pessoal. Em seguida, modifique a função do shell em ~/.bash_profile :

function firefox-window() {
  osascript ~/firefox-window.scpt "$1"
}

Isso passará o primeiro argumento de linha de comando $1 para o AppleScript, para ser acessado como item 1 of argv .

Salve .bash_profile e não se esqueça de reiniciar seu terminal ou digite source ~/.bash_profile . Então, simplesmente execute o comando com:

firefox-window apple.com
firefox-window google.com

… et cetera.

    
por 11.06.2012 / 21:25