OSX Firefox 将参数传递给 Magnet 协议处理程序

OSX Firefox 将参数传递给 Magnet 协议处理程序

如何使用命令行应用程序(即 transmission-remote)在 Firefox 中打开磁力链接?

我想我需要制作一个接受参数的打包应用程序,以下是我目前所做的:

  1. 使用 Automator 运行以下命令脚本:

    transmission-remote -a $@

  2. 将 Automator 脚本保存为 Transmission.app

  3. 在 Firefox 中使用磁力链接时请选择 Transmission.app

但是,传递参数需要:

open Transmission.app --args magnet:etc

我假设 Firefox 正在执行类似以下操作:Transmission.app %s,但我不知道 Firefox 如何将参数传递给辅助应用程序。我还尝试创建包装器 shell 脚本并命名它,helper.app但无济于事。

或者,Firefox 是否可以使用类似这样的东西作为协议处理程序,我可以在其中传入 %s?

open Transmission.app --args %s

编辑:DS 答案显然适用于 Snow Leopard 和 Lion,但我仍然遇到 Firefox 发送空白参数的问题。我也会在此处粘贴我的评论:

我尝试了以下操作,但只发送了空白:echo "$@" >> ~/somefile 和 echo "$*" >> ~/somefile 带引号和不带引号。也许是我的 Firefox 设置(about:config?)。我使用的是 19.0.2(最新版),OSX 10.8.2,以防其他人也加入进来……

答案1

我也曾为同样的问题而苦恼。我成功了,但我认为你漏掉了一个小步骤。显然,Mac 上的 Firefox 对于其“打开方式”应用程序,不会通过命令行或环境变量或任何其他类似 unix 的方法传递参数。它使用 Mac 的发射服务。Automator 可以将它们转换为命令行参数。以下适用于 Snow Leopard:

  1. 启动 Automator,选择“为您的工作流程选择模板”的应用程序。
  2. 找到操作“运行 Shell 脚本”,然后拖动或双击添加它。
  3. 对于“传递输入”下拉菜单:选择“作为参数”<-我认为这是你缺少的步骤。
  4. 对于“Shell”下拉菜单:选择您喜欢的shell(根据您的问题判断,可能是/bin/sh)。
  5. Automator 将为您提供代码示例,但您只需要您已经拥有的内容:(transmission-remote -a "$@"双引号允许正确转发包含空格的参数)。
  6. 保存应用程序。

当 Firefox 运行此应用程序来打开文件/下载时,它会以 Mac 的本机方式传递它们,然后 Automator 将它们转换为 shell 参数,shell 脚本将它们转发到transmission-remote

相关内容