АвтоматичСский Π²Ρ…ΠΎΠ΄ Π² Lync ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π² Linux

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€!

Для мСня эта Ρ„Ρ€Π°Π·Π° сродни hello world, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я добрался Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π΄ΠΎ своСй ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π”ΠΎΠ»Π³ΠΎ ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π» этот Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΎ Ρ‡Π΅ΠΌ, Π° ΠΎΠ±ΡΠ°ΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΠΎ ΠΊΡƒΡ‡Π΅ Ρ€Π°Π· обсосано, Ρ‚ΠΎΠΆΠ΅ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ. Π’ΠΎΠΎΠ±Ρ‰Π΅ для своСй ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅, ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈ содСрТащСС ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‡Π΅Π»Π»Π΅Π½ΠΆ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. И Π²ΠΎΡ‚ я ΡƒΠΆΠ΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ этим. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΠΎ всСм ΠΏΠΎ порядку.

ВступлСниС

ΠΠ°Ρ‡Π°Π»ΠΎΡΡŒ всС с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π°Π·Π°Π΄ я Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠΎΠΌΠΏΠ΅ Π½Π°ΠΊΠ°Ρ‚ΠΈΠ» сСбС Linux Mint. МногиС навСрняка Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Pidgin с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Sipe Π²ΠΏΠΎΠ»Π½Π΅ годная Π·Π°ΠΌΠ΅Π½Π° Microsoft Lync (сСйчас называСтся Skype for business) для Linux систСм. Π’ силу спСцифики Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ½Π΅ часто приходится ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² sip-конфСрСнциях, ΠΈ Π² Π±Ρ‹Ρ‚Π½ΠΎΡΡ‚ΡŒ виндузятника Π²Ρ…ΠΎΠ΄ Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π±Ρ‹Π» элСмСнтарным: ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅, ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ Π½Π° ссылку Π²Ρ…ΠΎΠ΄Π°, Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΌΡ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° Ρ‚Π΅ΠΌΠ½ΡƒΡŽ сторону Linux всС нСсколько ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΠ»ΠΎΡΡŒ: Π²Ρ…ΠΎΠ΄ Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π² Pidgin ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ, Π½ΠΎ Ρ‚Π°ΠΌ для этого Π½ΡƒΠΆΠ½ΠΎ Π² свойствах вашСго sip-Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ присоСдинСния ΠΊ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π² мСню ΠΈ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ссылку Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡŽ Π»ΠΈΠ±ΠΎ ввСсти имя ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ conf id. И Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя я Π½Π°Ρ‡Π°Π» Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ: Β«Π° нСльзя Π»ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ это ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒΒ». Ага, скаТСтС Π²Ρ‹, Π½Π° ΠΊΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ Ρ‚Π΅Π±Π΅ это понадобилось, сидСл Π±Ρ‹ сСбС Π½Π° Π²ΠΈΠ½Π΄Π΅ ΠΈ Π² ус Π½Π΅ Π΄ΡƒΠ».

Шаг 1. ИсслСдованиС

Β«Π’Ρ‚Π΅ΠΌΡΡˆΠΈΡ‚ΡΡ Π² Π±Π°ΡˆΠΊΡƒ какая блаТь β€” ΠΊΠΎΠ»ΠΎΠΌ Π΅Π΅ ΠΎΡ‚Ρ‚ΡƒΠ΄ΠΎΠ²Π° Π½Π΅ Π²Ρ‹Π±ΡŒΠ΅ΡˆΡŒΒ» β€” Ρ‚Π°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» НСкрасов Π² своСм ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΈ Β«ΠšΠΎΠΌΡƒ Π½Π° Руси ΠΆΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎΒ».

Π˜Ρ‚Π°ΠΊ, Ρ€Π°Π· ΡƒΠΆ ΠΌΡ‹ΡΠ»ΡŒ ΠΏΠΎΠΏΠ°Π»Π° Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ, Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈ пСрвая идСя для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Казалось всС просто β€” Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ссылкам meet.company.com/user/confid β€” ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρƒ сСбя Π½Π° Ρ‚Π°Ρ‡ΠΊΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ процСсс Π²Π΅Π±-прилоТСния Π½Π° 127.0.0.1 ΠΈ Π² /etc/hosts занСсти ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ запись для Π΄ΠΎΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ производится Π²Ρ…ΠΎΠ΄ Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° localhost. Π”Π°Π»ΡŒΡˆΠ΅ этот Π²Π΅Π±-сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΡƒΡŽ Π΅ΠΌΡƒ ссылку ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ Pidgin (сразу скаТу, Ρ‡Ρ‚ΠΎ Π½Π° этом этапС Ρƒ мСня Π½Π΅ Π±Ρ‹Π»ΠΎ Π΅Ρ‰Π΅ понимания ΠΊΠ°ΠΊ ΠΌΠ½Π΅ это Π΅ΠΌΡƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ). РСшСниС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΏΠΎΠΏΠ°Ρ…ΠΈΠ²Π°Π΅Ρ‚ костылями, Π½ΠΎ ΠΌΡ‹ ΠΆΠ΅ программисты, костыли нас Π½Π΅ ΠΏΡƒΠ³Π°ΡŽΡ‚ (Ρ‰ΡŽΡ‚ΠΊΠ°).

ΠŸΠΎΡ‚ΠΎΠΌ случайно я ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π» ссылку Π½Π° ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ Π² Google Chrome (Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ я всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Mozilla Firefox). И Π½Π° ΠΌΠΎΠ΅ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Π±-страничка выглядСла совсСм ΠΈΠ½Π°Ρ‡Π΅ β€” Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ„ΠΎΡ€ΠΌΡ‹ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ сразу послС Π²Ρ…ΠΎΠ΄Π° Π½Π° страницу Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠ» запрос Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· xdg-open. Π Π°Π΄ΠΈ интСрСса наТимаю Β«Π΄Π°Β» ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ сообщСниС ΠΎΠ± ошибкС β€” ссылка lync15:confjoin?url=https://meet.company.com/user/confid Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°. Π₯ΠΌΠΌ. Π§Ρ‚ΠΎ это Π·Π° xdg-open Ρ‚Π°ΠΊΠΎΠΉ ΠΈ Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ссылки ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»ΠΈΡΡŒ? ВскрытиС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ это ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ графичСской ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ассоциированныС прилоТСния Π»ΠΈΠ±ΠΎ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ для uri scheme, Π»ΠΈΠ±ΠΎ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². Ассоциации Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· сопоставлСниС mime-type. Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас запускаСтся поиск сопоставлСнного прилоТСния для uri scheme с ΠΈΠΌΠ΅Π½Π΅ΠΌ lync15 ΠΈ ссылка пСрСдаСтся Π² xdg-open, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дальшС ΠΏΠΎ ΠΈΠ΄Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ссылок. ΠšΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρƒ нас, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π² систСмС Π½Π΅Ρ‚. А Ρ€Π°Π· Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ΠΌΠΈΡ€Π΅ опСнсорса? ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΌΡ‹ напишСм Π΅Π³ΠΎ сами.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠΈΡ€ Linux ΠΈ особСнно Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ графичСская ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° (desktop environment, DE), ΠΊ слову Ρƒ мСня это Xfce Π² Linux Mint, ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ Ρ‡Ρ‚ΠΎ прилоТСния ΠΈ ассоциированный с Π½ΠΈΠΌ mime-type прописываСтся ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прямо Π² Ρ„Π°ΠΉΠ»Π°Ρ… ярлыков с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .desktop. Ну Π° ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΈ Π½Π΅Ρ‚, создаю простой ярлык прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ просто Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ баш-скрипт ΠΈ вывСсти ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π΅ΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π° консоль, ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сам Ρ„Π°ΠΉΠ» ярлыка:

[Desktop Entry]
Name=Lync
Exec=/usr/local/bin/lync.sh %u
Type=Application
Terminal=false
Categories=Network;InstantMessaging;
MimeType=x-scheme-handler/lync15;

Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ xdg-open ΠΈΠ· консоли с ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Ρ‚ΠΎΠΉ ΠΆΠ΅ ссылки, какая ΠΈΠ΄Π΅Ρ‚ ΠΈΠ· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° и… ΠΎΠ±Π»ΠΎΠΌ. Π‘Π½ΠΎΠ²Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ссылку.

Как оказалось я Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ассоциированных mime-type с ΠΌΠΎΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ДСлаСтся это простой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

xdg-mime default lync.desktop x-scheme-handler/lync15

которая просто Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» ~/.config/mimeapps.list.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π½ΠΎΠΌΠ΅Ρ€ 2 с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ xdg-open β€” ΠΈ снова Π½Π΅ΡƒΠ΄Π°Ρ‡Π°. НичСго, трудности нас Π½Π΅ ΠΏΡƒΠ³Π°ΡŽΡ‚, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ³Ρ€Π΅Π²Π°ΡŽΡ‚ интСрСс. И Π²ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ всСй ΠΌΠΎΡ‰ΡŒΡŽ баша (Ρ‚.Π΅. трассировкой) ныряСм с Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ Π² ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ. Π’ΡƒΡ‚ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ xdg-open являСтся просто шСлл-скриптом.

bash -x xdg-open $url

Анализируя Π²Ρ‹Π²ΠΎΠ΄ послС трассировки становится Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ понятно, Ρ‡Ρ‚ΠΎ дальшС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π² exo-open. А это ΡƒΠΆΠ΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΅ΠΌΡƒ ссылки Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ ΡƒΠΆΠ΅ слоТнСС.

ΠŸΡ€ΠΎΠ±Π΅ΠΆΠ°Π² ΠΏΠΎ внутрСнностям xdg-open я выяснил, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ окруТСния ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ дальшС Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ инструмСнтам для открывания файловссылок спСцифичных для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ DE, Π»ΠΈΠ±ΠΎ Ρƒ Π½Π΅Π³ΠΎ имССтся fallback Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ open_generic

open_xfce()
{
if exo-open --help 2>/dev/null 1>&2; then
exo-open "$1"
elif gio help open 2>/dev/null 1>&2; then
gio open "$1"
elif gvfs-open --help 2>/dev/null 1>&2; then
gvfs-open "$1"
else
open_generic "$1"
fi

if [ $? -eq 0 ]; then
exit_success
else
exit_failure_operation_failed
fi
}

Быстро впиливаю сюда нСбольшой Ρ…Π°ΠΊ с Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Ссли Ρ‚Π°ΠΌ находится наша спСцифичСская подстрока lync15:, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ сразу ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ open_generic.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π½ΠΎΠΌΠ΅Ρ€ 3 ΠΈ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ? Ага, сСйчас, ΠΊΠ°ΠΊ ΠΆΠ΅. Но сообщСниС ΠΎΠ± ошибкС ΡƒΠΆΠ΅ помСнялось, это ΡƒΠΆΠ΅ прогрСсс β€” сСйчас ΠΎΠ½ ΠΌΠ½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈ Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° писал ΠΌΠ½Π΅ Ρ‚Ρƒ ΡΠ°ΠΌΡƒΡŽ ссылку, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΡƒΡŽ Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

На этот Ρ€Π°Π· Π΄Π΅Π»ΠΎ оказалось Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ is_file_url_or_path, которая Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° Π½Π° Π²Ρ…ΠΎΠ΄ ссылка Π½Π° Ρ„Π°ΠΉΠ» file:// Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅. И ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π²Π΅Ρ€Π½ΠΎ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ наш прСфикс (url scheme) ΠΈΠΌΠ΅Π΅Ρ‚ Ρ†ΠΈΡ„Ρ€Ρ‹, Π° рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ провСряСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±ΠΎΡ€ символов, состоящий ΠΈΠ· :alpha: Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ Ρ‚ΠΈΡ€Π΅. ПослС ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΡ со стандартом rfc3986 для uniform resource identifier стало понятно Ρ‡Ρ‚ΠΎ Π½Π° этот Ρ€Π°Π· ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ (хотя Ρƒ мСня Π±Ρ‹Π»Π° такая вСрсия). ΠŸΡ€ΠΎΡΡ‚ΠΎ класс символов :alpha: содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠΊΠ²Ρ‹ латинского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Быстро мСняю ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΠΎ рСгуляркС Π½Π° alphanumeric. Π“ΠΎΡ‚ΠΎΠ²ΠΎ, Π²Ρ‹ Π²ΠΎΡΡ…ΠΈΡ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, всС Π½Π°ΠΊΠΎΠ½Π΅Ρ† запускаСтся, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ послС всСх ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ отдаСтся Π² наш скрипт-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π° консоль выводится наша ссылка, всС ΠΊΠ°ΠΊ полагаСтся. ПослС этого Π½Π°Ρ‡ΠΈΠ½Π°ΡŽ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρƒ exo-open Ρ‚ΠΎΠΆΠ΅ ΠΈΠ·-Π·Π° Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ссылки ΠΈΠ·-Π·Π° Ρ†ΠΈΡ„Ρ€ Π² схСмС. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ мСняю Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ mime-type Ρƒ прилоТСния Π½Π° просто схСму lync ΠΈ вуаля β€” всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π±Π΅Π· пСрСопрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ open_xfce. Но Π½Π°ΠΌ это Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π΅Π±-страница для Π²Ρ…ΠΎΠ΄Π° Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡŽ создаСт ΠΈΠΌΠ΅Π½Π½ΠΎ ссылку с lync15.

Π˜Ρ‚Π°ΠΊ, пСрвая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π°. ΠœΡ‹ ΡƒΠΌΠ΅Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² ссылки ΠΈ дальшС Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ Pidgin. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ссылкС Π² мСню «присоСдинСния ΠΊ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈΒ» я склонировал Π³ΠΈΡ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Sipe ΠΈ приготовился снова Π½Ρ‹Ρ€ΡΡ‚ΡŒ Π² ΠΊΠΎΠ΄. Но Ρ‚ΡƒΡ‚ мСня ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ»ΠΈ скрипты Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ contrib/dbus/:

  • sipe-join-conference-with-uri.pl
  • sipe-join-conference-with-organizer-and-id.pl
  • sipe-call-phone-number.pl
  • SipeHelper.pm

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ Sipe доступСн для взаимодСйствия Ρ‡Π΅Ρ€Π΅Π· dbus (desktop bus) ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ скриптов прямо Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ присоСдинСния Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡŽ ΠΏΠΎ ссылкС, Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· имя ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ conf-id, Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π²ΠΎΠ½ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· sip. Π­Ρ‚ΠΎ ΠΆΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚ΠΎ Ρ‡Π΅Π³ΠΎ Π½Π°ΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ.

Π¨Π°Π³ 2. РСализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° для Π°Π²Ρ‚ΠΎΠ΄ΠΆΠΎΠΉΠ½Π°

Π Π°Π· ΡƒΠΆ Π΅ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π° ΠΏΠ΅Ρ€Π», Ρ‚ΠΎ я Ρ€Π΅ΡˆΠΈΠ» просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ sipe-join-conference-with-uri.pl ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ сСбя. ΠŸΠΈΡΠ°Ρ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π» я ΡƒΠΌΠ΅ΡŽ, поэтому особых слоТностСй это Π½Π΅ доставило.

ПослС тСстирования скрипта ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, я вписал Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ² Π² Ρ„Π°ΠΉΠ» lync.desktop. И это Π±Ρ‹Π»Π° ΠΏΠΎΠ±Π΅Π΄Π°! ΠŸΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π½Π° страницу присоСдинСния ΠΊ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ запуска xdg-open Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ΠΈΠ· Pidgin ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»ΠΎΡΡŒ автоматичСски. Как ΠΆΠ΅ я Π»ΠΈΠΊΠΎΠ²Π°Π».
Π’ΠΎΠΎΠ΄ΡƒΡˆΠ΅Π²Π»Π΅Π½Π½Ρ‹ΠΉ успСхом, я Ρ€Π΅ΡˆΠΈΠ» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΈ для своСго основного Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Mozilla Firefox. ΠŸΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Ρ‡Π΅Ρ€Π΅Π· лису открываСтся страничка для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π΅Ρ‰Π΅ Π² самом Π½ΠΈΠ·Ρƒ Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° join using office communicator. Она-Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ»Π° ΠΌΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠŸΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° Π½Π΅Π΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ происходит ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу:

conf:sip:{user};gruu;opaque=app:conf:focus:id:{conf-id}%3Frequired-media=audio

Π½Π° Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠ½Π΅ любСзно Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρƒ мСня Π½Π΅Ρ‚ ассоциированного прилоТСния для Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°. Ну это ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΈ.

Π‘Ρ‹ΡΡ‚Ρ€Π΅Π½ΡŒΠΊΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-скрипт Π΅Ρ‰Π΅ ΠΈ для uri-схСмы conf и… Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠΎΠΈ ссылки. ΠŸΡ€ΠΈ этом Π²Ρ‹Π·ΠΎΠ² ΠΈΠ· консоли xdg-open с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ прСвосходно.

Β«Set custom protocol handler in firefoxΒ» β€” с этим вопросом я Π²Ρ‹ΡˆΠ΅Π» Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. ΠŸΡ€ΠΎΡˆΠ΅Ρ€ΡΡ‚ΠΈΠ² нСсколько обсуТдСний Π½Π° stackoverflow (Π° ΠΊΡƒΠ΄Π° ΠΆΠ΅ Π±Π΅Π· Π½Π΅Π³ΠΎ), Π²Ρ€ΠΎΠ΄Π΅ ΠΎΡ‚Π²Π΅Ρ‚ нашСлся. НуТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² about:config (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠ² foo Π½Π° conf):

network.protocol-handler.expose.foo = false

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ссылку и… Π½Π΅ Ρ‚ΡƒΡ‚-Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΊΠ°ΠΊ Π½ΠΈ Π² Ρ‡Π΅ΠΌ Π½ΠΈ Π±Ρ‹Π²Π°Π»ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Ρ‡Ρ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π§ΠΈΡ‚Π°ΡŽ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ рСгистрации ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Ρƒ Mozilla, Π΅ΡΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ асоциации Π² самом gnome desktop (Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ foo Π½Π° conf):

gconftool-2 -s /desktop/gnome/url-handlers/foo/command '/path/to/app %s' --type String
gconftool-2 -s /desktop/gnome/url-handlers/foo/enabled --type Boolean true

Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽ браузСр… ΠΈ снова Π±ΠΎΡ€ΠΎΠ΄Π°.

Π’ΡƒΡ‚ Π½Π° Π³Π»Π°Π·Π° попадаСтся строчка ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ:

Next time you click a link of protocol-type foo you will be asked which application to open it with.

β€” Π‘Π΅ΠΌΠ΅Π½ Π‘Π΅ΠΌΠ΅Π½Ρ‹Ρ‡
β€” Ааа

ΠœΡ‹ ΠΆΠ΅ Π½Π΅ ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ ΠΏΠΎ ссылкС, Π° просто Π²Π΅Π±-страница Π΄Π΅Π»Π°Π΅Ρ‚ смСну window.location Ρ‡Π΅Ρ€Π΅Π· javascript. ΠŸΠΈΡˆΡƒ простой html Ρ„Π°ΠΉΠ» со ссылкой Π½Π° conf ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, кликаю ΠΏΠΎ ссылкС β€” Yos! ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΎΠΊΠ½ΠΎ с вопросом Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½Π°ΡˆΡƒ ссылку ΠΈ Ρ‚Π°ΠΌ Π² спискС Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Lync β€” ΠΌΡ‹ ΠΆΠ΅ Π΅Π³ΠΎ чСстно зарСгистрировали всСми Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ способами. Π’Π°ΠΌ ΠΆΠ΅ Π² окошкС Π΅ΡΡ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΠ° Β«Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ ΠΈ всСгда ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ссылки Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΒ», ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅ΠΌ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΎΠΊ. И это вторая ΠΏΠΎΠ±Π΅Π΄Π° β€” ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ открываСтся. ΠŸΡ€ΠΈ этом ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ссылку, Π° ΠΈ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Π½ΡƒΠΆΠ½ΠΎΠΉ Π½Π°ΠΌ страницы присоСдинСния Π² ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡŽ.

ΠŸΠΎΡ‚ΠΎΠΌ я ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ», ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² network.protocol-handler.expose.conf Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ повляло Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π² лисС. Бсылки ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π― Π·Π°Π»ΠΈΠ» всС свои Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±, ссылки Π½Π° всС рСсурсы Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ.
МнС Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΎΡ‚ Ρ‚Π΅Ρ… ΠΊΡ‚ΠΎ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠΎΠΈΠΌΠΈ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ. Π‘Ρ€Π°Π·Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ я всС Π΄Π΅Π»Π°Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ свою систСму Linux Mint, поэтому ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дистрибутивы ΠΈΠ»ΠΈ дСсктопы ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅. Π’Π΅Ρ€Π½Π΅Π΅ я Π΄Π°ΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½ Π² этом, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я ΠΏΡ€ΠΎΠΏΠ°Ρ‚Ρ‡ΠΈΠ» Π² xdg-open Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΡ‚Π½ΠΎΡΡΡ‰ΡƒΡŽΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΌΠΎΠ΅ΠΌΡƒ DE. Если Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм ΠΈΠ»ΠΈ дСкстопов, ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΡƒΠ»-рСквСсты Π² Π³ΠΈΡ‚Ρ…Π°Π±Π΅.

РСализация всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° заняла 1 Π²Π΅Ρ‡Π΅Ρ€.

Бсылки:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com