OSX Firefox передает аргументы обработчику протокола магнита

1104
Lionel

Как открыть магнитные ссылки в Firefox с помощью приложения командной строки, а именно с удаленной передачей?

Я думаю, что мне нужно создать упакованное приложение, которое принимает аргументы, и вот что я сделал до сих пор:

  1. Используйте Automator для запуска сценария оболочки со следующим:

    transmission-remote -a $@

  2. Сохраните скрипт Automator как Transmission.app

  3. Выберите Transmission.app в Firefox, когда используете его для магнитных ссылок.

Однако для передачи аргументов необходимо:

open Transmission.app --args magnet:etc 

Я предполагаю, что Firefox делает что-то вроде:, Transmission.app %sно я не могу сказать, как Firefox передает аргументы вспомогательному приложению. Я также попытался создать сценарий оболочки-оболочки и назвать его helper.appбезрезультатно.

Или же Firefox может использовать что-то вроде этого в качестве обработчика протокола, где я могу передать в% s?

open Transmission.app --args %s 

РЕДАКТИРОВАТЬ: DS ответ, очевидно, работает на Snow Leopard и Lion, но у меня все еще проблемы с пустыми аргументами, посылаемыми из Firefox. Я также вставлю свой комментарий здесь:

Я пробовал следующее, но отправляются только пробелы: echo "$ @" >> ~ / somefile и echo "$ *" >> ~ / somefile с кавычками и без них. Возможно, это мои настройки Firefox (о: config?). Я использую 19.0.2 (последняя версия), OSX 10.8.2 на случай, если кто-нибудь еще подключится ...

2

1 ответ на вопрос

1
DS.

I was struggling with the same question. I got it to work, and I think you were missing a small step. Apparently Firefox on Mac, for its "Open With" applications, doesn't pass arguments via command line or environment variables or any other unix-like method. It uses Mac's Launch Services. Automator can translate these to command line arguments. The following works on Snow Leopard:

  1. Start up Automator, selecting Application for "Choose a template for your workflow".
  2. Find the Action "Run Shell Script", and drag or double-click to add it.
  3. For "Pass input" dropdown: choose "As arguments" <-- I think that's the step you are missing.
  4. For "Shell" dropdown: pick the shell you like (probably /bin/sh, judging by your question).
  5. Automator will give you a sample of code, but you'll just want what you already have: transmission-remote -a "$@" (double-quotes allow correct forwarding of arguments that contain spaces).
  6. Save the app.

When Firefox runs this app to open files/downloads, it passes them in Mac's native way, then Automator translates them to shell arguments, and the shell script forwards them to transmission-remote.

Привет DS, спасибо за ответ. Я сделал, как вы предложили, но это не работает на Горного льва. Вот мой скрипт Automator с выпадающим списком «В качестве аргументов»: http://i.imgur.com/c8u6zia.png Lionel 11 лет назад 0
Я сейчас проверил, что он работает как на Snow Leopard, так и на Lion, но у меня нет Muntain Lion для тестирования. Попробуйте заменить команду на `echo Hello" $ @ "world` и выполнить тестирование непосредственно в Automator. Единственное, о чем я могу думать, это то, что действие «Выполнить сценарий оболочки» имеет в настройках поле «Игнорировать ввод этого действия»: убедитесь, что оно не случайно проверено. DS. 11 лет назад 0
Я пробовал следующее, но отправляются только пробелы: `echo" $ @ ">> ~ / somefile` и` echo "$ *" >> ~ / somefile` с кавычками и без них. Возможно, это мои настройки Firefox (о: config?). Я использую 19.0.2 (последняя версия), OSX 10.8.2 на случай, если кто-нибудь еще подключится ... Lionel 11 лет назад 0
Вы можете протестировать без Firefox, перетаскивая файл на значок вашего приложения в Finder: новые версии Firefox должны работать так же (они работают для меня). Вы также можете попробовать тестирование в Automator. Но извините, нет 10,8 здесь, поэтому я не могу проверить. DS. 11 лет назад 0

Похожие вопросы