Предисловие:
Появилась задачка - в 1 клик из браузера звонить на телефоны с использованием sip-uri (rfc3261).
Выглядеть это должно было следующим образом:
На веб-страничке гипперссылка
<a href="sip:nnn">nnn</a>
Для Windows задача решилась накатыванием небольшого reg-файла, который «научил» приложения использовать программу 3CX Phone для внешнего протокола «sip:». Кому интересно reg-файлик:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\dial]
@="URL:Dial Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\dial\shell]
@=""
[HKEY_CLASSES_ROOT\dial\shell\open]
[HKEY_CLASSES_ROOT\dial\shell\open\command]
@="C:\\Program Files\\3CXPhone\\3CXPhone.exe %1"
[HKEY_CLASSES_ROOT\sip]
@="URL:Sip Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\sip\shell]
@=""
[HKEY_CLASSES_ROOT\sip\shell\open]
[HKEY_CLASSES_ROOT\sip\shell\open\command]
@="C:\\Program Files\\3CXPhone\\3CXPhone.exe %1"
В Linux решение нарисовалось следующее: Сделать ассоциацию внешнего протокола «sip» с приложением «twinkle_callto», которое является небольшим bash-скриптом, со следующим содержанием:
[maza@MaZa]$ cat /usr/local/bin/twinkle_callto
#!/bin/sh
number=$(echo "$1" | sed s/sip://)
exec /usr/bin/twinkle --call "$number"
Проблемка:
Не знаю как установить ассоциацию внешних проктолов с приложениями.
Прогуглив данный вопрос, узнал о существовании скриптов «xdg».
xdg-open — opens a file or URL in the user's preferred application
xdg-settings — get various settings from the desktop environment
Предпринял попытку установить ассоциацию следующей командой:
$ xdg-settings set default-url-scheme-handler sip twinkle_callto.desktop
[Desktop Entry]
Comment=
Exec=twinkle_callto
Type=Application
[maza@MaZa applications]$ xdg-settings set default-url-scheme-handler sip twinkle_callto.desktop
xdg-mime: application argument missing
Try 'xdg-mime --help' for more information.
изучение help по xdg-mime никак мне не помогло разобраться в вопросе :(
p.s.: да, баш-скрипт twinkle_callto может и не нужен, т.к. можно будет в twinkle_callto.desktop указать команду запуска Twinkle с аргументом --call $(echo «$1» | sed s/sip://).