ãããããã«ïŒ
ããããæåã®åºçç©ãåºçã§ããã®ã§ãç§ã«ãšã£ãŠãã®ãã¬ãŒãºã¯ hello world ã«äŒŒãŠããŸãã ç§ã¯ãã®çŽ æŽãããç¬éãé·ãéå 延ã°ãã«ããŠããŸãããæžãããšãäœããªãã£ãããã§ãããŸãããã§ã«äœåºŠãåžããããã®ãåžãã®ãå«ã ã£ãããã§ãã äžè¬ã«ãç§ã®æåã®åºçç©ã§ã¯ãç¬åµçã§ä»ã®äººã«ãšã£ãŠåœ¹ç«ã¡ãããçš®ã®ææŠãšåé¡è§£æ±ºãå«ããã®ãæãã§ããŸããã ãããŠä»ããããå ±æã§ããããã«ãªããŸããã ããã§ã¯ããã¹ãŠã«ã€ããŠé çªã«è©±ããŸãããã
ãšã³ããªãŒ
ããã¯ãã¹ãŠããã°ããåã«è·å Žã®ã³ã³ãã¥ãŒã¿ãŒã« Linux Mint ãããŠã³ããŒããããšãã«å§ãŸããŸããã ããããå€ãã®äººã¯ãSipe ãã©ã°ã€ã³ãåãã Pidgin ããLinux ã·ã¹ãã çšã® Microsoft Lync (çŸåšã¯ Skype for business ãšåŒã°ããŠããŸã) ã«å®å šã«é©ãã代æ¿åã§ããããšãç¥ã£ãŠããã§ãããã ç§ã®ä»äºã®ç¹æ®æ§ã«ãããSIP ã«ã³ãã¡ã¬ã³ã¹ã«åå ããå¿ èŠãããããšããããããŸããWindows ã§åããŠããé ã¯ãã«ã³ãã¡ã¬ã³ã¹ã«åå ããã®ã¯åæ©çãªããšã§ãããã¡ãŒã«ã§æåŸ ç¶ãåãåãããã°ã€ã³ ãªã³ã¯ãã¯ãªãã¯ããã°ãæºåã¯å®äºã§ãã ã
Linux ã®ããŒã¯ãµã€ãã«åãæ¿ãããšããã¹ãŠãããè€éã«ãªããŸãããã¡ãããPidgin ã§äŒè°ã«ãã°ã€ã³ããããšãã§ããŸããããããè¡ãã«ã¯ãSIP ã¢ã«ãŠã³ãã®ããããã£ã®ã¡ãã¥ãŒã§äŒè°ã«åå ãããªãã·ã§ã³ãéžæããå¿
èŠããããŸããéãããŠã£ã³ããŠã§ãäŒè°ãžã®ãªã³ã¯ãæ¿å
¥ããããäž»å¬è
ã®ååãšäŒè° ID ãå
¥åããŸãã ãããŠãã°ããããŠãããããããäœãšãåçŽåã§ããªãã ãããïŒããšèãå§ããŸããã ãããäžäœãªããããå¿
èŠãªã®? ãšæããããããããŸããããç§ã¯ Windows ã䜿çšããŠããŠãæ··ä¹±ããªãã»ãããããšæããŸãã
ã¹ããã 1: 調æ»
ãé ã®äžã«æ°ãŸãããçããŠãããããæã§æã¡æ¶ãããšã¯ã§ããªãããšãã¯ã©ãœãæ°ã¯èæžã誰ããã·ã¢ã§ããçããããã®äžã§è¿°ã¹ãã
ããã§ããã®èããé ã«æµ®ããã åŸããã°ããããŠãå®è£
ã®ããã®æåã®ã¢ã€ãã¢ãæµ®ãã³ãŸããã ãã¹ãŠãç°¡åããã«èŠããŸãã - ãªã³ã¯ãžã®ã¢ã¯ã»ã¹ãã€ã³ã¿ãŒã»ããããå¿
èŠããããŸã
ãããŠãå¶ç¶ãGoogle Chrome ã§æåŸ ãªã³ã¯ãéããŠããŸããŸãã (æ®æ®µã¯åžžã« Mozilla Firefox ã䜿çšããŠããŸã)ã ãããŠé©ããããšã«ãWeb ããŒãžã®èŠãç®ã¯ãŸã£ããç°ãªã£ãŠããŸããããŠãŒã¶ãŒ ããŒã¿ãå ¥åãããã©ãŒã ã¯ãªããããŒãžã«å ¥ã£ãçŽåŸã«ãäœããéãããèŠæ±ããããŸããã xdg-openã é¢çœååã§ãã¯ãããã¯ãªãã¯ãããšããªã³ã¯ lync15:confjoin?url=https://meet.company.com/user/confid ãéããªããšãããšã©ãŒ ã¡ãã»ãŒãžã衚瀺ãããŸãã ãµãŒãã ããã¯ã©ã®ãã㪠xdg-open ã§ãã?ãŸãããã®ãããªãªã³ã¯ãéãã«ã¯äœãå¿ èŠã§ãã? ããã¥ã¡ã³ããäºåŸçã«èªãã ãšãããããã¯ãuri ã¹ããŒã ã®ãããã³ã«ãŸãã¯ç¹å®ã®ãã¡ã€ã« ã¿ã€ãã®ããããã䜿çšããŠãé¢é£ããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããã®ã«åœ¹ç«ã€ GUI ãã³ãã©ãŒã§ããããšãå€æããŸããã é¢é£ä»ãã¯ãMIME ã¿ã€ã ãããã³ã°ãä»ããŠèšå®ãããŸãã ãããã£ãŠããšããååã® URI ã¹ããŒã ã«äžèŽããã¢ããªã±ãŒã·ã§ã³ã®æ€çŽ¢ãå®è¡ããŠããããšãããããŸãã lync15 ãããŠããªã³ã¯ã¯ xdg-open ã«æž¡ãããçè«çã«ã¯ããã®ã¿ã€ãã®ãªã³ã¯ãæ åœããã¢ããªã±ãŒã·ã§ã³ã«ãªã³ã¯ãæž¡ãããã¯ãã§ãã ãã¡ãããç§ãã¡ã®ã·ã¹ãã ã«ã¯ããããããŸããã ããã§ãªãå Žåã圌ãã¯ãªãŒãã³ãœãŒã¹ã®äžçã§äœãããŠããã®ã§ãããã? ããã§ããèªåãã¡ã§æžããŸãããã
Linux ã®äžçã«ããã«æ²¡é ããç¹ã«ã°ã©ãã£ã«ã« ã·ã§ã« (ãã¹ã¯ãããç°å¢ãDE) ãã©ã®ããã«åäœããããç 究ãããšãã¡ãªã¿ã«ãç§ã¯ Linux Mint ã« Xfce ãå ¥ããŠããŸãããã¢ããªã±ãŒã·ã§ã³ãšããã«é¢é£ä»ãããã MIME ã¿ã€ããéåžžãXfce ã§çŽæ¥æžãããŠããããšãããããŸãããæ¡åŒµåã .desktop ã®ã·ã§ãŒãã«ãã ãã¡ã€ã«ã ããã¯ã©ãã§ãããããåçŽãªã¢ããªã±ãŒã·ã§ã³ ã·ã§ãŒãã«ãããäœæããŸããããã¯ãbash ã¹ã¯ãªãããèµ·åããæž¡ãããåŒæ°ãã³ã³ãœãŒã«ã«åºåããã ãã§ããã·ã§ãŒãã«ãã ãã¡ã€ã«èªäœã®ã¿ãæäŸããŸãã
[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 ã¿ã€ãã®ãã£ã¬ã¯ããªãæŽæ°ããŸããã§ããã ããã¯ç°¡åãªã³ãã³ãã§å®è¡ã§ããŸãã
xdg-mime default lync.desktop x-scheme-handler/lync15
ãã¡ã€ã«ãç·šéããã ãã§ã ~/.config/mimeapps.list.
xdg-open åŒã³åºãã§çªå· 2 ãè©Šã¿ãŸãããåã³å€±æããŸãã äœããå°é£ã¯ç§ãã¡ãæãããããã®ã§ã¯ãªãããã ç§ãã¡ã®èå³ãåºæ¿ããã ãã§ãã ãããŠãbash (ã€ãŸããã¬ãŒã¹) ã®ãã¹ãŠã®æ©èœã掻çšããŠãçã£å ã«ãããã°ã«åãæãããŸãã ããã§ãxdg-open ã¯åãªãã·ã§ã« ã¹ã¯ãªããã§ããããšã«æ³šæããããšãéèŠã§ãã
bash -x xdg-open $url
ãã¬ãŒã¹åŸã®åºåãåæãããšãå¶åŸ¡ã次ã«è»¢éãããããšãå°ãæããã«ãªããŸãã ãšã¯ãœãªãŒãã³ã ãããŠãããã¯ãã§ã«ãã€ã㪠ãã¡ã€ã«ã§ãããåŒæ°ã§ãã®ãã¡ã€ã«ãžã®ãªã³ã¯ãæž¡ããšå€±æãããªã¿ãŒã³ ã³ãŒããè¿ãããçç±ãç解ããã®ã¯ããã«å°é£ã§ãã
xdg-open ã®å éšã調ã¹ããšãããããŸããŸãªç°å¢ãã©ã¡ãŒã¿ãåæããç¹å®ã® DE ã«åºæã®ãã¡ã€ã« ãªã³ã¯ãéãããã®ããŒã«ã«ããã«å¶åŸ¡ãæž¡ããããã©ãŒã«ããã¯æ©èœãããããšãããããŸããã ãªãŒãã³ãžã§ããªãã¯
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:ãã®åŸãããã«å¶åŸ¡ãé¢æ°ã«ç§»ããŸãã ãªãŒãã³ãžã§ããªãã¯.
çªå· 3 ãè©ŠããŠã¿ãŠãããŸããã£ããšæããŸãã? ã¯ãããã¡ããã§ãã ãããããšã©ãŒã¡ãã»ãŒãžã¯ãã§ã«å€æŽãããŠãããããã¯ãã§ã«é²è¡äžã§ããä»ã圌ã¯ãã¡ã€ã«ãèŠã€ãããªããšç§ã«èšããåŒæ°ãšããŠæž¡ãããåããªã³ã¯ããã¡ã€ã«ã®åœ¢åŒã§ç§ã«æžããŸããã
ä»åã¯é¢æ°ã§ããããšãå€æããŸãã is_file_url_or_pathãå ¥åã«æž¡ããããã¡ã€ã« ãªã³ã¯: file:// ãŸãã¯ãã¡ã€ã«ãžã®ãã¹ããŸãã¯ãã®ä»ã®ãã®ãåæããŸãã ãŸãããã¬ãã£ãã¯ã¹ (URL ã¹ããŒã ) ã«æ°åãå«ãŸããŠãããæ£èŠè¡šçŸã§ã¯ :alpha: ããããšããã·ã¥ã§æ§æãããæåã»ããã®ã¿ããã§ãã¯ãããããããã§ãã¯ã¯æ£ããæ©èœããŸããã§ããã rfc3986 æšæºãåç §ããåŸã çµ±äžãªãœãŒã¹èå¥å ä»åãMicrosoftã¯äœãéåããŠããªãããšãæããã«ãªããŸããïŒç§ã¯ãã®ãããªããŒãžã§ã³ãæã£ãŠããŸãããïŒã æåã¯ã©ã¹ :alpha: ã«ã¯ãã©ãã³æåã®æåã®ã¿ãå«ãŸããŸãã ããã«å®æãã§ãã¯ãè±æ°åã«å€æŽããŸãã å®äºãããªãã¯çŽ æŽãããã§ããã€ãã«ãã¹ãŠãå§ãŸãããã¹ãŠã®ãã§ãã¯åŸã®å¶åŸ¡ãã¹ã¯ãªãã ã¢ããªã±ãŒã·ã§ã³ã«äžãããããªã³ã¯ãã³ã³ãœãŒã«ã«è¡šç€ºããããã¹ãŠãæ¬æ¥ããã¹ã姿ã«ãªã£ãŠããŸãã ãã®åŸãexo-open ã«é¢ãããã¹ãŠã®åé¡ããã¹ããŒã å ã®æ°å€ã«ãããªã³ã¯åœ¢åŒã®æ€èšŒãåå ã§ã¯ãªãããšçãå§ããŸãã 仮説ããã¹ãããããã«ãã¢ããªã±ãŒã·ã§ã³ã® MIME ã¿ã€ãç»é²ãåãªãã¹ããŒã ã«å€æŽããŸãã ãªã³ã¯ ãããŠåºæ¥äžãã - open_xfce é¢æ°ããªãŒããŒã©ã€ãããªããŠããã¹ãŠãæ©èœããŸãã ãã ããäŒè°ã«åå ããããã® Web ããŒãžã§ã¯ lync15 ãžã®ãªã³ã¯ãäœæããããããããã¯äœã®åœ¹ã«ãç«ã¡ãŸããã
ãšããããšã§ãæ ã®ååéšåã¯çµäºã§ãã ç§ãã¡ã¯ãªã³ã¯åŒã³åºããã€ã³ã¿ãŒã»ããããæ¹æ³ãç¥ã£ãŠããã®ã§ããããäœããã®æ¹æ³ã§åŠçã㊠Pidgin å ã«æž¡ãå¿ èŠããããŸãã ãäŒè°ã«åå ãã¡ãã¥ãŒã®ãªã³ã¯ãä»ããŠããŒã¿ãå ¥åãããšãã«å éšã§ã©ã®ããã«åäœããããç解ããããã«ãSipe ãããžã§ã¯ãã® Git ãªããžããªã®ã¯ããŒã³ãäœæããå床ã³ãŒãã«é£ã³èŸŒãæºåãããŸããã ããã幞éãªããšã«ãç§ã¯ã«ã¿ãã°ã«ããã¹ã¯ãªããã«æ¹ãããŸããã æçš¿/dbus/:
- sipe-join-conference-with-uri.pl
- sipe-join-conference-with-organizer-and-id.pl
- sipe-call-é»è©±çªå·.pl
- SipeHelper.pm
Sipe ãã©ã°ã€ã³ã¯ dbus (ãã¹ã¯ããã ãã¹) ãä»ãã察話ã«å©çšã§ããããšãå€æããã¹ã¯ãªããå ã«ã¯äž»å¬è ã®ååãš conf-id ãä»ããŠãªã³ã¯ãä»ããŠäŒè°ã«åå ããäŸãããããŸã㯠sip ãä»ããŠé話ãéå§ããããšãã§ããŸãã ã ããã¯ãŸãã«ç§ãã¡ã«æ¬ ããŠãããã®ã§ãã
ã¹ããã 2. èªåçµåãã³ãã©ãŒã®å®è£
Pearl ã«ã¯æ¢è£œã®ãµã³ãã«ãããã®ã§ããã®ãŸãŸäœ¿çšããããšã«ããŸããã sipe-join-conference-with-uri.pl ãããŠèªåã«åãããã«å°ãä¿®æ£ããŠãã ããã Pearlã§ãæžããã®ã§ç¹ã«å°ãããšã¯ãããŸããã§ããã
ã¹ã¯ãªãããåå¥ã«ãã¹ãããåŸããã®åŒã³åºãããã¡ã€ã«ã«æžã蟌ã¿ãŸãã lync.ãã¹ã¯ãããã ãããŠããã¯åå©ã§ããïŒ äŒè°åå ããŒãžã«å
¥ããxdg-open ã®å®è¡ãèš±å¯ãããšãPidgin ããã®äŒè°ãããã¢ãã ãŠã£ã³ããŠãèªåçã«éããŸãã ãªããšããããã£ãããšã§ãããã
ãã®æåã«åæ°ã¥ããããŠãç§ã¯ã¡ã€ã³ã®ãã©ãŠã¶ã§ãã Mozilla Firefox ã§ãåãããšãããããšã«ããŸããã fox çµç±ã§ãã°ã€ã³ãããšãèªèšŒçšã®ããŒãžãéããäžçªäžã«ãã¿ã³ããããŸã ãªãã£ã¹ã³ãã¥ãã±ãŒã¿ãŒã䜿çšããŠåå ããã 圌女ã¯ç§ã®æ³šæãåŒãã人ã§ããã ãã©ãŠã¶ã§ã¯ãªãã¯ãããšã次ã®ã¢ãã¬ã¹ã«ç§»åããŸãã
conf:sip:{user};gruu;opaque=app:conf:focus:id:{conf-id}%3Frequired-media=audio
ãããšåœŒã¯ããããéãæ¹æ³ãããããªãããããŠãããããã®ãããªãããã³ã«ã«é¢é£ããã¢ããªã±ãŒã·ã§ã³ãæã£ãŠããªããããããªããšèŠªåã«ç§ã«èšããŸããã ãŸããç§ãã¡ã¯ãã§ã«ãããçµéšããŠããŸãã
ã¹ã¯ãªãã ã¢ããªã±ãŒã·ã§ã³ã URI ã¹ããŒã ã«ãããã«ç»é²ããŸã confã« ãããŠ...äœãèµ·ãããŸããã ãã©ãŠã¶ã¯ããªã³ã¯ãåŠçããã¢ããªã±ãŒã·ã§ã³ãååšããªããšããã¡ãã»ãŒãžãåºãç¶ããŸãã ãã®å Žåãã³ã³ãœãŒã«ãããã©ã¡ãŒã¿ãæå®ã㊠xdg-open ãåŒã³åºããšå®å šã«æ©èœããŸãã
ãFirefox ã§ã«ã¹ã¿ã ãããã³ã« ãã³ãã©ãŒãèšå®ããã - ç§ã¯ãã®è³ªåããªã³ã©ã€ã³ã§èª¿ã¹ãŸããã stackoverflow ã«ã€ããŠããã€ãã®è°è«ãçµãåŸ (ãããŠããããªããã°ã©ããªãã§ãããã)ãçããèŠã€ãã£ãããã§ãã ç¹å¥ãªãã©ã¡ãŒã¿ãäœæããå¿ èŠããããŸã çŽïŒèšå® (ãã¡ãã foo ã conf ã«çœ®ãæããŸã):
network.protocol-handler.expose.foo = false
ãããäœæãããªã³ã¯ãéããŸãã...ãã®ãããªéã¯ãããŸããã§ããã ãã©ãŠã¶ã¯ãäœäºããªãã£ããã®ããã«ãã¢ããªã±ãŒã·ã§ã³ãèªèããŠããªããšèšããŸãã
Mozilla ã®ãããã³ã«ã®ç»é²ã«é¢ããå ¬åŒããã¥ã¡ã³ããèªãã§ããŸããgnome ãã¹ã¯ãããèªäœã«é¢é£ä»ããç»é²ãããªãã·ã§ã³ããããŸã (ãã¡ããã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
ç»é²ããŠãã©ãŠã¶ãéããšããŸããã²ãçŸããŸãã
ããã§ãããã¥ã¡ã³ãã®æ¬¡ã®è¡ãç®ã«çãŸããŸããã
次åããããã³ã« ã¿ã€ã foo ã®ãªã³ã¯ãã¯ãªãã¯ãããšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã§éãããå°ããããŸãã
â ã»ãã§ã³ã»ã»ãããã
- ãã
ãªã³ã¯ãã¯ãªãã¯ããããã§ã¯ãããŸããããWeb ããŒãžã¯ JavaScript ã«ãã£ãŠ window.location ãå€æŽããã ãã§ãã conf ãããã³ã«ãžã®ãªã³ã¯ãå«ãåçŽãª HTML ãã¡ã€ã«ãäœæãããã©ãŠã¶ã§éãããªã³ã¯ãã¯ãªãã¯ããŸãã ãŠã£ã³ããŠãéããã©ã®ã¢ããªã±ãŒã·ã§ã³ã§ãªã³ã¯ãéãå¿ èŠãããããå°ããããŸããããã«ã¯ãã§ã« Lync ã¢ããªã±ãŒã·ã§ã³ããªã¹ãã«ãããŸããæ£çŽã«ãå¯èœãªéããã¹ãŠã®æ¹æ³ã§ãããç»é²ããŸããã ãŠã£ã³ããŠã«ã¯ãéžæãèšæ¶ããã¢ããªã±ãŒã·ã§ã³å ã®ãªã³ã¯ãåžžã«éãããã§ãã¯ããã¯ã¹ããããããã«ããŒã¯ãä»ããŠãOKããã¯ãªãã¯ããŸãã ãããŠããã㯠XNUMX çªç®ã®åå©ã§ã - äŒè°ãŠã£ã³ããŠãéããŸãã åæã«ãã«ã³ãã¡ã¬ã³ã¹ã®éå§ã¯ããªã³ã¯ãã¯ãªãã¯ãããšãã ãã§ãªããå¿ èŠãªåå ããŒãžããã«ã³ãã¡ã¬ã³ã¹ã«ç§»åãããšããæ©èœããŸãã
次ã«ããã©ã¡ãŒã¿ãåé€ããŠç¢ºèªããŸãã network.protocol-handler.expose.conf Fox ã§ã®ãããã³ã«ã®åäœã«ã¯ãŸã£ãã圱é¿ããŸããã§ããã ãªã³ã¯ã¯åŒãç¶ãæ©èœããŸããã
ãŸãšã
ãã¹ãŠã®äœæ¥ã GitHub ãªããžããªã«ã¢ããããŒãããŸããããã¹ãŠã®ãªãœãŒã¹ãžã®ãªã³ã¯ã¯èšäºã®æåŸã«ãããŸãã
ç§ã®äœåã䜿çšãããæ¹ããã®ãã£ãŒãããã¯ããåŸ
ã¡ããŠããŸãã ç§ã¯ãã¹ãŠã®éçºã Linux Mint ã·ã¹ãã ã«å¯ŸããŠã®ã¿è¡ã£ãã®ã§ãä»ã®äžéšã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ããã¹ã¯ãããã¯ãã®ããŒãžã§ã³ã§ã¯åäœããªãå¯èœæ§ãããããšã«ããã«æ³šæããŠãã ããã ãšããããç§ã¯ãããã»ãŒç¢ºä¿¡ããŠããŸãããªããªããxdg-open ã§ç§ã® DE ã«ã®ã¿é¢é£ããé¢æ°ã 1 ã€ã ããããããããã§ãã ä»ã®ã·ã¹ãã ãŸãã¯ãã¹ã¯ãããã®ãµããŒããè¿œå ãããå Žåã¯ãGithub ã«ãã« ãªã¯ãšã¹ããæžããŠãã ããã
ãããžã§ã¯ãå šäœãå®äºãããŸã§ã« 1 æ©ããããŸããã
ãªã³ã¯ïŒ
-
Mozilla ãžã®ãããã³ã«ã®ç»é² -
Dãã¹(wikipedia) -
rfc3986 URI -
Github äžã®ãããžã§ã¯ã
åºæïŒ habr.com