检测 Applescript 中的默认浏览器

Detect default browser in Applescript

由于最近我经常更改我的默认网络浏览器,我想知道是否有一种方法可以专门解决您的默认浏览器。我只能找到一个 10 year old Whosebug-post 提到对当前的邮件客户端做类似的事情,但我没有找到任何关于默认浏览器的信息。我想默认浏览器也有类似的方法,但我不太理解已接受答案的代码。

一段时间以来,在 macOS 中,~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist 文件 包含有关 默认浏览器 的信息,用于 URLs with HTTPHTTPS 协议。

以下 示例 AppleScript code 解析该文件以获得 http ;https; 并提供一些(不是全部)logic 来根据返回的内容执行您想要的操作。正如编码的那样,它有利于将两者设置为相同的 value,如果不是,您将需要添加额外的 logic 以适应该场景。

set defaultBrowserList to paragraphs of (do shell script "defaults read \
    ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure \
    | awk -F'\"' '/http;|https;/{print window[(NR)-1]}{window[NR]=}'")

if (count defaultBrowserList) is not equal to 2 then return

if item 1 of defaultBrowserList is equal to item 2 of defaultBrowserList then
    set defaultBrowser to item 1 of defaultBrowserList
else
    return
end if

if defaultBrowser is "" or defaultBrowser contains "safari" then
    --  # The default Browser is Safari.
    set defaultBrowser to "Safari"
    --  # Your code goes here.
else if defaultBrowser contains "chrome" then
    --  # The default Browser is Google Chrome.
    set defaultBrowser to "Google Chrome"
    --  # Your code goes here.
else if defaultBrowser contains "firefox" then
    --  # The default Browser is Firefox.
    set defaultBrowser to "Firefox"
    --  # Your code goes here.
else
    set defaultBrowser to "Other"
    --  # Your code goes here.
end if

备注:

if defaultBrowser 语句 的开始没有测试 "" 以及 "safari",因为,如果 Safari 是唯一安装的 Browser 或者如果安装了另一个 Browser 并且从未有默认的 Browser 设置,那么默认情况下 do shell script "defaults ..." 命令 不会返回任何内容,这意味着 Safari 是默认 浏览器.

在上面的示例AppleScript代码中,值[ defaultBrowser 变量 的 =122=] 最初设置为以下 之一:

  • 无:""
  • com.apple.safari
  • com.google.chrome
  • org.mozilla.firefox
  • 其他一些:output

然后在 if 语句 中,defaultBrowser 被设置为 浏览器 的正确名称.虽然你当然可以修改为 needed/wanted.

上面显示的示例AppleScript代码在[=81=中进行了测试]Script Editor 在 macOS CatalinaLanguage & Region 设置在 System Preferences 设置为 English (US) — Primary 并为我工作没有问题1.

  • 1 假定在 系统偏好设置 > 安全和隐私 > 隐私 已根据需要 set/addressed。

对于 OS X 10.10,替换:

~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure

有:

com.apple.LaunchServices

do shell script "defaults ..."命令中



注意:示例 AppleScript code 就是这样,没有包含任何 错误处理 不包含任何额外的 错误处理 可能是适当的。用户有责任根据需要或需要添加任何 错误处理 。查看 try statement and error statement in the AppleScript Language Guide. See also, Working with Errors. Additionally, the use of the delay 命令 在适当的事件之间可能是必要的,例如delay 0.5,适当设置延迟