Как открыть новое окно Firefox с Терминалом
Я использую Firefox v10.0.1 с OS X Lion v10.7.3
В доке Apple вы можете щелкнуть правой кнопкой мыши значок Firefox и выбрать NEW, и откроется новое окно Firefox.
С терминала я пробовал
open -n /Applications/Firefox.app
но он говорит (при условии, что Firefox уже открыт)
Копия Firefox уже открыта. Только одна копия Firefox может быть открыта одновременно.
Как вы можете открыть Новое окно в Firefox из командной строки Терминала?
4 ответа
Вам нужно использовать AppleScript для этого. Идеальным решением было бы использование встроенной функции от Firefox, но она не предлагает ее - ее словарь AppleScript очень ограничен. Поэтому мы должны эмулировать сочетания клавиш.
Откройте свой ~/.bash_profile
и добавьте следующую функцию оболочки:
function firefox-window() {
/usr/bin/env osascript <<-EOF
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
end tell
EOF
}
Это позвонит osascript
, который выполняет команды AppleScript, затем активирует Firefox, а затем эмулирует нажатие клавиши ⌘N - но только если он уже запущен. Если нет, Firefox просто откроется, поэтому вы не получите два новых окна. Также вы можете обменять "n"
в "t"
чтобы получить новые вкладки, очевидно.
Спасти ~/.bash_profile
файл и введите source ~/.bash_profile
перезагрузить его. Затем просто вызывайте следующую функцию всякий раз, когда вам нужно новое окно Firefox:
firefox-window
Конечно, не стесняйтесь менять название функции.
Если вы хотите передать аргумент URL из командной строки, посмотрите ответ: Как открыть новое окно Firefox с аргументом URL .
~/.bash_profile
где все ваши пользовательские функции должны находиться. Если файл не существует, вы можете просто создать его.
Функции оболочки более мощные, чем псевдонимы, например, они также позволяют использовать аргументы. Вы также можете теоретически передать URL нового окна, а затем сказать Firefox открыть его с помощью OpenURL
или же Get URL
команда - но я не пробовал их.
Относительно используемого синтаксиса: <<-EOF
здесь документ , облегчающий передачу многострочного ввода в osascript
, Вход будет проанализирован до EOF
маркер появится снова.
Более простой и легкий подход:
- Первый тест на терминале:
open -n /Applications/"Firefox Developer Edition".app
Если это сработает, перейдите в ~/.bash_profile и создайте простую функцию:
## Open Firefox:s
function firefox() {
echo "Opening Firefox Browser ...";
open -n /Applications/"Firefox Developer Edition".app
}
Затем написать:
source ~/.bash_profile
чтобы активировать это в ENV на Mac.
Я знаю, что это старый пост, я пришел сюда в поисках ответа, а потом решил, что могу попробовать старый подход «вызвать приложение напрямую»...
Итак, чтобы открыть новое окно Firefox в Терминале, вы можете сделать:
/Applications/Firefox.app/Contents/MacOS/firefox --new-window
И если вы хотите открыть URL-адрес в новом окне:
/Applications/Firefox.app/Contents/MacOS/firefox --new-window URL
# For example:
/Applications/Firefox.app/Contents/MacOS/firefox --new-window https://superuser.com/questions/396434/how-to-open-a-new-firefox-window-with-terminal
Если вам это нужно, вы можете сделать даже кое-что более крутое. Вы можете создать приложение Automator со сценарием внутри, а затем дважды щелкнуть это приложение, чтобы открыть определенный веб-сайт в новом окне.
Для этого:
- Открыть автомататор
- Создать новый (⌘N)
- Выберите приложение
- В поле поиска выше введите скрипт
- Выбирать
Run Shell Script
- Вставьте команду сверху с URL-адресом, который нужно открыть в новом окне.
- Сохраните вновь созданное приложение в нужном месте.
- (Бонус) Вы можете перетащить приложение в док-станцию и при нажатии на него каждый раз будет запускаться скрипт. Я думаю, вы не можете удалить исходный файл, иначе это может привести к поломке ссылки.
Я думаю, что проблема с открытием новой вкладки из командной строки, поэтому я хотел бы указать на этот поток, где кто-то имел дело с подобной проблемой, используя AppleScript.
on firefoxRunning()
tell application "System Events" to (name of processes) contains "Firefox"
end firefoxRunning
on run argv
if (firefoxRunning() = false) then
do shell script "open -a Firefox " & (item 1 of argv)
else
tell application "Firefox" to activate
tell application "System Events"
keystroke "t" using {command down}
keystroke item 1 of argv & return
end tell
end if
end run
Что еще на Мохаве я получаю сообщение об ошибке при выполнении кода из.bash_profile: System Events got an error: my cool script is not allowed to send keystrokes. (1002)