4 votes

Comment ouvrir une nouvelle fenêtre Firefox avec un argument d'URL

Je suis en train de mettre à niveau la réponse existante

Comment ouvrir une nouvelle fenêtre Firefox avec Terminal

pour accepter une URL en tant qu'argument et ouvrir une NOUVELLE fenêtre Firefox.

Je peux utiliser

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

mais cela ouvre dans un onglet et non une NOUVELLE fenêtre comme souhaité.

Une variation est

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

qui me donne l'erreur standard

Fermez Firefox, une copie de Firefox est déjà ouverte. Seule une copie de Firefox peut être ouverte à la fois

MAIS cela ouvre l'URL dans mon navigateur par défaut Safari.


J'ai essayé diverses options basées sur la page de manuel pour open et sur le site Mozilla pour ouvrir des URLs avec leurs produits mais ils disent que les informations sont obsolètes et peuvent ne pas fonctionner. Ce n'est pas le cas pour moi par exemple

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

les deux échouent avec l'erreur commune mentionnée précédemment.

J'ai essayé de modifier le script dans le lien précédent. Je l'ai mis à jour comme suit.

# Une fonction pour pouvoir ouvrir une nouvelle fenêtre Firefox si firefox est déjà
# en cours d'exécution.
fonction fenetre-firefox() {
/usr/bin/env osascript <<-EOF
en cours d'exécution argv
  dire à l'application "System Events"
    si (nom des processus) contient "Firefox" alors
        dire à l'application "Firefox" d'activer
        appui sur "n" en utilisant la touche de commande enfoncée
    sinon
        dire à l'application "Firefox" d'activer
    fin si

    retourner "J'essaie d'ouvrir " & article 1 de argv & " dans une nouvelle fenêtre Firefox."
  (*
    if & item 1 of argv &
      retourner "Je suis celui que vous cherchez"
      dire à l'application "Firefox" OpenURL & item 1 of argv &
    fin si
  *)

  fin tell
fin run
EOF
}

Je reçois l'erreur :

erreur d'exécution : Impossible de faire de l'article 1 de {} un texte Unicode. (-1700)

et je suis bloqué là. J'ai donc un problème pour récupérer l'URL dans l'AppleScript en tant qu'argument.

Eh bien, j'obtiens une multitude d'autres erreurs mais le script original s'exécute malgré celles avant l'erreur UNICODE.

~$ fenetre-firefox 'http://localhost:3000'
2012-06-10 16:13:30.258 osascript[789:60f] Erreur de chargement /Library/ScriptingAdditions/Adobe Unit
 Types.osax/Contents/MacOS/Adobe Unit Types :  dlopen(/Library/ScriptingAdditions/Adobe Unit
 Types.osax/Contents/MacOS/Adobe Unit Types, 262) : aucune image adaptée trouvée.  A trouvé :
    /Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types : pas
     d'architecture correspondante dans l'emballage universel
oscript : OpenScripting.framework - l'addition de script "/Library/ScriptingAdditions/Adobe Unit
 Types.osax" ne déclare aucun gestionnaire chargé.
294:300: erreur d'exécution : Impossible de faire de l'article 1 de {} un texte Unicode. (-1700)

Je pensais que cela pourrait être simple mais cela me laisse la tête contre le mur. Je suis stupéfait que cela ne fonctionne pas avec une simple commande open pour que je puisse le faire dans un script shell.

Toute aide serait appréciée pour que Firefox puisse ouvrir une NOUVELLE fenêtre tout en lui passant une URL.

2voto

slhck Points 209720

Remarque : Ce qui suit fonctionne jusqu'à OS X 10.7 mais pas dans 10.8 - voir cette question.

Ouvrez AppleScript Editor.app et collez ce qui suit :

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 -- Délai d'automatisation de l'interface utilisateur
        else
            tell application "Firefox" to activate
            delay 0.3 -- Délai supplémentaire
        end if
        keystroke "l" using command down
        keystroke item 1 of argv
        keystroke return
    end tell
end run

Ici, nous ouvrirons soit une nouvelle fenêtre avec Cmd-N, soit nous activerons simplement Firefox. J'ai inclus un délai personnalisé - cela est nécessaire car les actions de l'interface utilisateur ont un délai inhérent et le script taperait même si la fenêtre n'était pas encore prête.

Enfin, nous allons keystroke le premier argument, qui est item 1 of argv.

Enregistrez ce fichier sous firefox-window.scpt, par exemple dans votre dossier personnel. Ensuite, modifiez la fonction shell dans ~/.bash_profile :

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

Cela passera le premier argument de la ligne de commande $1 au script AppleScript, à accéder sous la forme item 1 of argv.

Enregistrez le .bash_profile et n'oubliez pas de redémarrer votre terminal ou d'entrer source ~/.bash_profile. Ensuite, exécutez simplement la commande avec :

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

… et cætera.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X