如何使用终端打开新的 Firefox 窗口

如何使用终端打开新的 Firefox 窗口

我正在运行 Firefox v10.0.1 和 OS X Lion v10.7.3

在 Apple Dock 中,您可以右键单击 Firefox 图标并选择 NEW,然后会打开一个新的 Firefox 窗口。

从终端,我尝试过

    open -n /Applications/Firefox.app

但它说(假设 Firefox 已经打开)

已打开一个 Firefox 副本。一次只能打开一个 Firefox 副本。

你怎么能打开新窗户在 Firefox 中从终端的命令行?

答案1

您需要使用 AppleScript 来实现这一点。理想的解决方案是使用 Firefox 的内置函数,但它没有提供该函数——它的 AppleScript 词典非常有限。所以我们必须模拟键盘快捷键。

打开你的~/.bash_profile并添加以下 shell 函数:

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 参数,请参阅以下答案:如何使用 URL 参数打开新的 Firefox 窗口


~/.bash_profile是您所有自定义函数的存放位置。如果该文件不存在,您可以创建它。

功能比别名更强大,例如它们也允许你使用参数。理论上你也可以传递新窗口的 URL,然后告诉 Firefox 使用OpenURLGet URL命令–但我还没尝试过。

关于使用的语法<<-EOF这里的文件,使将多行输入传递给 更加容易osascript。输入将被解析,直到EOF标记再次出现。

答案2

一种更简单、更轻松的方法:

  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然后在 Mac 上的 ENV 中写入:以激活它。

答案3

我知道这是一篇旧帖子,我来这里寻找答案,然后我想我可以尝试旧的“直接调用应用程序”方法......

因此,要在终端中打开一个新的 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. 打开 Automator
  2. 新建 (⌘N)
  3. 选择应用程序
  4. 在上面的搜索框中输入脚本
  5. 选择Run Shell Script
  6. 将上面的命令与需要在新窗口中打开的 URL 一起粘贴
  7. 将新创建的应用程序保存到您想要的位置。
  8. (额外奖励)您可以将应用程序拖到 Dock,每次单击它都会运行脚本。我认为您不能删除原始文件,如果删除,可能会破坏链接。

Automator 窗口应如下所示: Automator 使用脚本在新的 Firefox 窗口中打开 URL

答案4

我认为这个问题与从命令行打开新选项卡类似,所以我想指出此主题有人使用 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

此外,在 Mojave 上,执行 .bash_profile 的代码时出现错误:System Events got an error: my cool script is not allowed to send keystrokes. (1002)

相关内容