Hlo Habr!
Rau kuv, cov kab lus no zoo ib yam li nyob zoo ntiaj teb, txij li thaum kawg kuv tau txais kuv thawj qhov kev tshaj tawm. Kuv tso lub sijhawm zoo no mus ntev, vim tsis muaj ib yam dab tsi los sau txog, thiab kuv kuj tsis xav nqus ib yam dab tsi uas twb tau nqus rau ntau zaus. Feem ntau, rau kuv thawj qhov kev tshaj tawm kuv xav tau ib yam dab tsi qub, muaj txiaj ntsig zoo rau lwm tus thiab muaj qee yam kev sib tw thiab kev daws teeb meem. Thiab tam sim no kuv tuaj yeem qhia qhov no. Tam sim no cia peb tham txog txhua yam hauv kev txiav txim.
nkag
Txhua yam pib thaum kuv tau rub tawm ib yam dab tsi rau hauv kuv lub computer ua haujlwm Linux Mint. Ntau tus neeg yuav paub tias Pidgin nrog Sipe plugin yog qhov hloov pauv zoo heev rau Microsoft Lync (tam sim no hu ua Skype rau kev lag luam) rau Linux cov kab ke. Vim yog qhov xwm txheej ntawm kuv txoj haujlwm, kuv feem ntau yuav tsum koom nrog SIP cov rooj sib tham, thiab thaum kuv yog tus neeg siv Windows, kev koom nrog cov rooj sib tham yooj yim heev: peb tau txais daim ntawv caw los ntawm email, nyem qhov txuas koom nrog, thiab peb tau nkag mus.
Thaum mus rau sab tsaus ntuj Linux Tej yam tau dhau los ua qhov nyuaj me ntsis: koj tuaj yeem koom nrog cov rooj sib tham hauv Pidgin, tau kawg, tab sis koj yuav tsum mus rau koj tus account SIP cov khoom, xaiv "Koom nrog Lub Rooj Sib Tham" los ntawm cov ntawv qhia zaub mov, thiab tom qab ntawd muab qhov txuas ntawm lub rooj sib tham lossis nkag mus rau lub npe ntawm tus neeg teeb tsa thiab tus lej ID hauv lub qhov rai uas qhib. Tom qab ib pliag, kuv pib xav tias, "Puas muaj txoj hauv kev los ua qhov no yooj yim dua?" Yog lawm, koj yuav hais tias, vim li cas koj thiaj xav tau qhov ntawd? Koj yuav tsum siv Windows thiab tsis txhob txhawj.
Kauj Ruam 1: Tshawb nrhiav
"Yog tias koj tau txais qee qhov kev xav hauv koj lub taub hau, koj tsis tuaj yeem tsoo nws nrog ceg txheem ntseeg," Nekrasov tau hais hauv nws txoj haujlwm "Leej twg Nyob Zoo hauv Rus".
Yog li, ib zaug qhov kev xav nkag rau hauv kuv lub taub hau, tom qab qee lub sij hawm thawj lub tswv yim rau kev siv tau tshwm sim. Txhua yam zoo li yooj yim - koj yuav tsum cuam tshuam kev nkag mus rau kev sib txuas - nruab cov txheej txheem kev thov hauv lub vev xaib ntawm koj lub tsheb ntawm 127.0.0.1 thiab hauv /etc/hosts ntxiv qhov kev nkag zoo li qub rau lub tuam txhab sau npe uas koj nkag mus rau lub rooj sib tham, taw rau localhost. Tom ntej no, lub vev xaib no yuav tsum ua cov ntawv txuas uas tuaj rau nws thiab hloov pauv mus rau hauv Pidgin (Kuv mam li hais tam sim ntawd tias nyob rau theem no kuv tseem tsis tau muaj lub tswv yim yuav muab rau nws li cas). Kev daws, tau kawg, tsw zoo li tus ntoo khaub lig, tab sis peb yog cov programmers, crutches tsis ntshai peb (shit).
Tom qab ntawd, los ntawm lub sijhawm, kuv qhib qhov txuas caw hauv Google Chrome (thiab feem ntau kuv ib txwm siv Mozilla Firefox). Thiab ua rau kuv xav tsis thoob, nplooj ntawv web saib txawv kiag li - tsis muaj daim ntawv nkag mus rau cov neeg siv cov ntaub ntawv thiab tam sim ntawd tom qab nkag mus rau nplooj ntawv muaj kev thov qhib ib yam dab tsi los ntawm xdg-qhib. Tsuas yog kev lom zem, kuv nyem "yog" thiab cov lus yuam kev tshwm - qhov txuas lync15: confjoin?url=https://meet.company.com/user/confid qhib tsis tau. Hmo. Dab tsi ntawm xdg-qhib yog qhov no thiab nws xav tau dab tsi txhawm rau txhawm rau qhib qhov txuas? Kev nyeem ntawv tom qab ntawm cov ntaub ntawv tau tshaj tawm tias nws yog tus tuav GUI uas pab khiav cov ntawv thov cuam tshuam nrog cov txheej txheem rau uri scheme lossis nrog cov ntaub ntawv tshwj xeeb. Cov koom haum raug teeb tsa los ntawm mime-type mapping. Yog li peb pom tias peb tab tom khiav kev tshawb nrhiav rau daim ntawv thov sib tw rau uri scheme npe lync 15 thiab qhov txuas tau dhau mus rau xdg-qhib, uas tom qab ntawd, hauv txoj kev xav, yuav tsum dhau mus rau qee daim ntawv thov uas yog lub luag haujlwm rau hom kev txuas no. Qhov twg, tau kawg, peb tsis muaj nyob hauv peb lub cev. Yog tsis yog, lawv yuav ua li cas hauv lub ntiaj teb qhib? Yog lawm, peb mam li sau nws tus kheej.
Kev nkag mus rau hauv lub ntiaj teb ntxiv Linux thiab tshwj xeeb tshaj yog hauv kev kawm txog seb lub plhaub graphical (desktop ib puag ncig, DE) ua haujlwm li cas, los ntawm txoj kev, rau kuv nws yog Xfce Linux Mint tau qhia tias cov ntawv thov thiab lawv cov hom mime feem ntau yog sau ncaj qha rau hauv cov ntaub ntawv luv luv nrog .desktop extension. Zoo, vim li cas ho tsis? Kuv yuav tsim ib daim ntawv thov luv luv yooj yim uas tsuas yog khiav Bash script thiab luam tawm cov lus sib cav xa mus rau lub console. Kuv tsuas yog yuav suav nrog cov ntaub ntawv luv luv nws tus kheej:
[Desktop Entry]
Name=Lync
Exec=/usr/local/bin/lync.sh %u
Type=Application
Terminal=false
Categories=Network;InstantMessaging;
MimeType=x-scheme-handler/lync15;
Kuv tso xdg-qhib los ntawm lub console, hla tib qhov txuas uas los ntawm qhov browser thiab ... bummer. Ib zaug ntxiv nws hais tias nws tsis tuaj yeem ua qhov txuas.
Raws li nws hloov tawm, kuv tsis tau hloov kho cov npe ntawm cov mime-hom nrog kuv daim ntawv thov. Qhov no yog ua tiav nrog cov lus txib yooj yim:
xdg-mime default lync.desktop x-scheme-handler/lync15
uas yooj yim kho cov ntaub ntawv ~/.config/mimeapps.list.
Sim tus lej 2 nrog xdg-qhib hu - thiab ua tsis tiav. Tsis muaj dab tsi, kev nyuaj siab tsis ua rau peb ntshai, tab sis tsuas yog ua rau peb nyiam. Thiab armed nrog tag nrho cov hwj chim ntawm bash (piv txwv li tracing), peb dhia taub hau ua ntej rau kev debugging. Nws tseem ceeb heev uas yuav tsum nco ntsoov ntawm no tias xdg-qhib tsuas yog daim ntawv plhaub xwb.
bash -x xdg-open $url
Ntsuam xyuas cov zis tom qab tracing nws dhau los ua me ntsis meej tias kev tswj yog ces pauv mus rau exo qhib. Thiab qhov no twb yog ib cov ntaub ntawv binary thiab nws nyuaj rau nkag siab tias vim li cas nws rov qab ua tsis tiav cov lej xa rov qab thaum dhau qhov txuas rau nws hauv kev sib cav.
Tau saib los ntawm cov sab hauv ntawm xdg-qhib, Kuv pom tias nws txheeb xyuas ntau yam kev ntsuas ib puag ncig thiab hla kev tswj xyuas ntxiv mus rau qee cov cuab yeej qhib cov ntaub ntawv txuas tshwj xeeb rau ib qho tshwj xeeb DE, lossis nws muaj qhov cuam tshuam rov qab. qhib_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
}
Kuv yuav sai sai embed ntawm no me me hack nrog kev tsom xam ntawm qhov kev sib cav dhau los thiab yog tias peb cov substring tshwj xeeb nyob ntawd lus 15:, ces peb tam sim hloov kev tswj mus rau qhov muaj nuj nqi qhib_generic.
Sim tus lej 3 thiab koj puas xav tias nws ua haujlwm? Yog, tam sim no, tau kawg. Tab sis cov lus yuam kev twb tau hloov lawm, qhov no twb tau ua tiav - tam sim no nws tau qhia kuv tias cov ntaub ntawv tsis pom thiab hauv daim ntawv ntawm cov ntaub ntawv nws tau sau kuv tib qhov txuas dhau los ua kev sib cav.
Lub sijhawm no nws tau los ua haujlwm yog_file_url_or_path, uas txheeb xyuas cov ntaub ntawv txuas mus rau cov tswv yim: file:// lossis txoj hauv kev rau cov ntaub ntawv lossis lwm yam. Thiab daim tshev tsis ua haujlwm raug vim qhov tseeb tias peb cov lus ua ntej (url scheme) muaj cov lej, thiab cov lus qhia tsis tu ncua tsuas yog xyuas cov cim teeb uas muaj xws li :alpha: dots thiab dashes. Tom qab sab laj tus qauv rfc3986 rau uniform peev xwm identifier Nws tau pom tseeb tias lub sijhawm no Microsoft tsis ua txhaum dab tsi (txawm tias kuv muaj ib qho version). Tsuas yog cov cim hauv chav kawm :alpha: tsuas muaj cov tsiaj ntawv ntawm cov tsiaj ntawv Latin xwb. Kuv hloov daim tshev tsis tu ncua mus rau alphanumeric. Ua tiav, koj yog amazing, txhua yam thaum kawg pib, tswj tom qab tag nrho cov tshev tau muab rau peb tsab ntawv thov, peb qhov txuas tau tso tawm rau ntawm lub console, txhua yam yog raws li nws yuav tsum tau ua. Tom qab no, kuv pib xav tias tag nrho cov teeb meem nrog exo-qhib kuj yog vim qhov tseeb ntawm cov ntawv txuas vim yog cov lej hauv cov tswv yim. Txhawm rau ntsuas qhov kev xav, kuv hloov pauv mime-hom sau npe ntawm daim ntawv thov mus rau ib lub tswv yim xwb lync ua thiab voila - txhua yam ua haujlwm yam tsis muaj overriding lub open_xfce muaj nuj nqi. Tab sis qhov no yuav tsis pab peb nyob rau hauv ib txoj kev, vim hais tias lub vev xaib rau nkag mus rau lub rooj sib tham tsim ib qhov txuas nrog lync15.
Yog li ntawd, thawj feem ntawm kev taug kev tau ua tiav. Peb paub yuav ua li cas cuam tshuam qhov txuas hu thiab tom qab ntawd nws yuav tsum tau ua qee yam thiab dhau mus hauv Pidgin. Txhawm rau nkag siab tias nws ua haujlwm sab hauv li cas thaum nkag mus rau cov ntaub ntawv los ntawm qhov txuas hauv "sib koom nrog lub rooj sib tham" ntawv qhia zaub mov, kuv cloned Git repository ntawm Sipe project thiab npaj txhij mus dhia rau hauv cov cai dua. Tab sis tom qab ntawd, hmoov zoo, kuv tau nyiam los ntawm cov ntawv sau hauv phau ntawv teev npe contrib/dbus/:
- sipe-join-conference-with-uri.pl
- sipe-join-conference-with-organizer-and-id.pl
- sipe-hu-phone-number.pl
- SibHelper.pm
Nws hloov tawm tias Sipe plugin muaj rau kev sib cuam tshuam ntawm dbus (desktop bus) thiab hauv cov ntawv sau muaj cov piv txwv ntawm kev koom nrog lub rooj sib tham los ntawm kev sib txuas, los ntawm lub koom haum lub npe thiab conf-id, lossis koj tuaj yeem pib hu ntawm sip . Qhov no yog qhov peb tau ploj lawm.
Kauj Ruam 2. Ua raws li tus neeg tuav autojoin
Txij li thaum muaj cov qauv npaj ua hauv Pearl, kuv txiav txim siab siv xwb sipe-join-conference-with-uri.pl thiab hloov nws me ntsis kom haum koj tus kheej. Kuv tuaj yeem sau hauv Pearl, yog li nws tsis ua rau muaj teeb meem tshwj xeeb.
Tom qab kuaj cov ntawv cais, kuv sau nws hu rau hauv cov ntaub ntawv lync.desktop. Thiab nws yog ib tug yeej! Thaum nkag mus rau lub rooj sib tham koom nrog nplooj ntawv thiab tso cai rau xdg-qhib los khiav, lub rooj sib tham popup qhov rai los ntawm Pidgin yuav qhib tau. Kuv zoo siab npaum li cas.
Kev txhawb nqa los ntawm kev ua tiav, Kuv txiav txim siab ua ib yam rau kuv qhov browser tseem ceeb, Mozilla Firefox. Thaum koj nkag mus rau hauv tus hma liab, ib nplooj ntawv rau kev tso cai qhib thiab nyob rau hauv qab kawg yog ib lub pob koom nrog siv chaw ua haujlwm sib txuas lus. Nws yog tus uas tau txais kuv lub siab. Thaum koj nyem rau ntawm nws hauv browser, nws mus rau qhov chaw nyob:
conf:sip:{user};gruu;opaque=app:conf:focus:id:{conf-id}%3Frequired-media=audio
uas nws ua siab zoo qhia kuv tias nws tsis paub yuav ua li cas qhib nws thiab, tej zaum, kuv tsis muaj daim ntawv thov cuam tshuam rau cov txheej txheem zoo li no. Zoo, peb twb tau dhau qhov no.
Kuv sau npe sai sai rau kuv daim ntawv thov ntawv kuj rau uri scheme conf thiab ... tsis muaj dab tsi tshwm sim. Tus browser pheej yws yws tias tsis muaj daim ntawv thov uas tswj kuv qhov txuas. Hauv qhov no, hu xdg-qhib los ntawm lub console nrog cov tsis ua haujlwm zoo kawg nkaus.
"Teem kev cai raws tu qauv tuav hauv firefox" - Kuv tau mus online nrog cov lus nug no. Tom qab mus dhau ntau qhov kev sib tham ntawm stackoverflow (thiab qhov twg peb yuav tsis muaj nws), nws zoo li cov lus teb tau pom. Koj yuav tsum tau tsim ib tug tshwj xeeb parameter nyob rau hauv txog: config (ntawm chav kawm hloov foo nrog conf):
network.protocol-handler.expose.foo = false
Peb tsim nws, qhib qhov txuas thiab ... tsis muaj hmoo. Lub browser, zoo li tsis muaj dab tsi tshwm sim, hais tias nws tsis paub peb daim ntawv thov.
Kuv tab tom nyeem cov ntaub ntawv raug cai ntawm kev tso npe cov txheej txheem los ntawm Mozilla, muaj kev xaiv rau npe koom nrog hauv gnome desktop nws tus kheej (hloov foo nrog conf, tau kawg):
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
Kuv sau npe, qhib qhov browser ... thiab dua cov hwj txwv.
Ntawm no ib kab los ntawm cov ntaub ntawv catches kuv lub qhov muag:
Lwm zaus koj nyem qhov txuas ntawm txoj cai-hom foo koj yuav raug nug seb daim ntawv thov twg qhib nws nrog.
— Semyon Semenych
-Ahh
Peb tsis nyem rau ntawm qhov txuas, tab sis lub vev xaib tsuas yog hloov pauv window.location ntawm javascript. Kuv sau cov ntaub ntawv html yooj yim nrog qhov txuas mus rau conf raws tu qauv, qhib nws hauv browser, nyem rau ntawm qhov txuas - Yos! Lub qhov rais qhib nug hauv daim ntawv thov twg peb yuav tsum qhib peb qhov txuas, thiab qhov ntawd peb twb muaj peb daim ntawv thov Lync hauv daim ntawv teev npe - peb ua siab ncaj rau nws txhua txoj hauv kev. Nyob rau hauv lub qhov rais muaj ib tug checkbox "Nco ntsoov qhov kev xaiv thiab ib txwm qhib kev txuas nyob rau hauv peb daim ntawv thov", kos nws, nias ok. Thiab qhov no yog qhov thib ob yeej - lub rooj sib tham qhov rais qhib. Nyob rau tib lub sijhawm, qhib lub rooj sib tham ua haujlwm tsis yog thaum koj nyem rau ntawm qhov txuas, tab sis kuj thaum tsiv los ntawm nplooj ntawv koom peb xav tau rau lub rooj sib tham.
Tom qab ntawd kuv txheeb xyuas, tshem tawm cov kev txwv network.protocol-handler.expose.conf tsis muaj kev cuam tshuam rau kev ua haujlwm ntawm cov txheej txheem hauv Fox. Cov kev txuas txuas ntxiv mus ua haujlwm.
xaus
Kuv tau xa tag nrho kuv cov haujlwm mus rau GitHub repository; txuas mus rau txhua qhov kev pabcuam yuav nyob rau qhov kawg ntawm tsab xov xwm.
Kuv xav tau txais cov lus taw qhia los ntawm txhua tus neeg uas xav siv kuv txoj haujlwm. Kuv xav taw qhia tias kuv tau tsim txhua yam rau kuv tus kheej lub kaw lus. Linux Mint, yog li qee qhov kev faib tawm lossis desktops yuav tsis ua haujlwm nrog qhov version ntawd. Qhov tseeb, kuv yuav luag paub tseeb txog qhov no, vim kuv tsuas yog kho ib qho haujlwm hauv xdg-qhib, uas yog tshwj xeeb rau kuv DE. Yog tias koj xav ntxiv kev txhawb nqa rau lwm lub tshuab lossis desktops, thov xa kuv daim ntawv thov rub ntawm GitHub.
Tag nrho qhov project siv 1 yav tsaus ntuj kom tiav.
Links:
Tau qhov twg los: www.hab.com
