2

Я использую Firefox v10.0.1 с OS X Lion v10.7.3

В доке Apple вы можете щелкнуть правой кнопкой мыши значок Firefox и выбрать NEW, и откроется новое окно Firefox.

С терминала я пробовал

    open -n /Applications/Firefox.app

но он говорит (при условии, что Firefox уже открыт)

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

Как вы можете открыть Новое окно в Firefox из командной строки Терминала?

1 ответ1

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 .

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