Как открыть новое окно 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 маркер появится снова.

Более простой и легкий подход:

  1. Первый тест на терминале: 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 со сценарием внутри, а затем дважды щелкнуть это приложение, чтобы открыть определенный веб-сайт в новом окне.

Для этого:

  1. Открыть автомататор
  2. Создать новый (⌘N)
  3. Выберите приложение
  4. В поле поиска выше введите скрипт
  5. ВыбиратьRun Shell Script
  6. Вставьте команду сверху с URL-адресом, который нужно открыть в новом окне.
  7. Сохраните вновь созданное приложение в нужном месте.
  8. (Бонус) Вы можете перетащить приложение в док-станцию ​​и при нажатии на него каждый раз будет запускаться скрипт. Я думаю, вы не можете удалить исходный файл, иначе это может привести к поломке ссылки.

Окно Automator должно выглядеть так:

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

Другие вопросы по тегам