LINUX.ORG.RU

Настройка обработчика внешнего протокола


1

1

Предисловие:
Появилась задачка - в 1 клик из браузера звонить на телефоны с использованием sip-uri (rfc3261).
Выглядеть это должно было следующим образом:
На веб-страничке гипперссылка

<a href="sip:nnn">nnn</a>
, n - номер телефона. В качестве звонилки на Windows ОС было принято использовать 3CX Phone, а на Linux - Twinkle.

Для 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
, предварительно создав файлик ~/.local/share/applications/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://).


Ответ на: комментарий от lazyklimm

попробовал. данная команда ничего не вернула, ни сообщения, ни ошибки. после чего попробовал снова

xdg-settings set default-url-scheme-handler sip twinkle_callto.desktop

- ошибка такая же как и была =(

maza ()
Ответ на: комментарий от maza

попробовал. данная команда ничего не вернула

это линукс, если программа отработала нормально, она ничего и не должна возвращать

после чего попробовал снова

зачем? Ты где ваще отрыл эту фигню?

xdg-open sip://blabla

попробуй

lazyklimm ★★★★★ ()
Ответ на: комментарий от lazyklimm

Ты где ваще отрыл эту фигню?

в мануале по xdg-settings

EXAMPLES
       Get the desktop file name of the current default web browser

                   xdg-settings get default-web-browser

       Check whether the default web browser is firefox.desktop, which can be false even if «get default-web-browser» says that is the current value (if only some
       of the underlying settings actually reflect that value)

                   xdg-settings check default-web-browser firefox.desktop

       Set the default web browser to google-chrome.desktop

                   xdg-settings set default-web-browser google-chrome.desktop

       Set the default mailto URL scheme handler to be evolution.desktop

                   xdg-settings set default-url-scheme-handler mailto evolution.desktop

попробовал:

[maza@MaZa applications]$ xdg-open sip://12
kioclient(18175)/kio (KRun): #### NO SUPPORT FOR READING! 
[maza@MaZa applications]$ xdg-open sip:12
kioclient(18181)/kio (KRun): #### NO SUPPORT FOR READING! 

maza ()
Ответ на: комментарий от lazyklimm

кеды, кеды.. 4.7.4 свой обработчик? возможно kfmclient. но вроде как xdg-open с ним и работает (там в коде есть проверка на DE и упоминается kfmclient).

maza ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.