Как открыть новое окно Firefox с аргументом URL
Я пытаюсь обновить существующий ответ
Как открыть новое окно 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 ответ
Примечание: следующее работает до 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
первый аргумент, который 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
… И так далее.