3

Я пытаюсь обновить существующий ответ

Как открыть новое окно Firefox с Терминалом

принять URL в качестве аргумента и открыть новое окно Firefox.

я могу использовать

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

но он открывается на вкладке, а не в новом окне по желанию.

Один вариант

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

что дает мне стандартную ошибку

Закройте Firefox, копия Firefox уже открыта. Только одна копия Firefox может быть открыта одновременно

НО это открывает URL в моем браузере по умолчанию Safari.


Я пробовал разные варианты на основе man-страницы для открытия и на сайте Mozilla для открытия URL-адресов с их продуктами, но они говорят, что информация устарела и может не работать. Это не для меня, например,

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

оба терпят неудачу с общей ошибкой выше.

Я пытался изменить скрипт в предыдущей ссылке. Я обновил его до следующего.

# 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
}

Я получаю ошибку:

ошибка выполнения: невозможно преобразовать элемент 1 из {} в текст типа Unicode. (-1700)

и я застрял там. Так что у меня проблема с получением URL-адреса в appleScript в качестве аргумента.

Ну, я получаю множество других ошибок, но оригинальный скрипт выполняется, несмотря на те, что были до ошибки 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)

Я надеялся, что это может быть просто, но это заставляет меня биться головой об стену. Я озадачен тем, что это не будет работать с простой командой open, поэтому я могу сделать это в сценарии оболочки.

Буду признателен за любую помощь в получении Firefox, чтобы открыть новое окно при передаче URL-адреса к нему.

1 ответ1

1

Примечание: следующее работает до OS X 10.7, но не в 10.8 - см. Этот вопрос.

Откройте AppleScript Editor.app и вставьте следующее:

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

Здесь мы либо откроем новое окно с помощью Cmd-N, либо просто активируем Firefox. Я включил пользовательскую задержку - это необходимо, так как действия пользовательского интерфейса имеют присущую задержку, и тогда сценарий будет печататься, даже если окно еще не было готово.

Наконец, мы нажмем keystroke первого аргумента, который является пунктом 1 аргумента item 1 of argv .

Сохраните этот файл в firefox-window.scpt , например, в вашей домашней папке. Затем измените функцию оболочки в ~/.bash_profile:

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

Это передаст первый аргумент командной строки $1 в AppleScript, который будет доступен как item 1 of argv .

Сохраните .bash_profile и не забудьте перезапустить ваш терминал или ввести source ~/.bash_profile . Затем просто запустите команду с:

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

… И так далее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .