Iconsety do Gajimu!

Obrázek uživatele kamahl@jabbim.cz
Vložil kamahl@jabbim.cz, Čt, 2007-07-12 10:37 ::

Myslíte si že iconsety pro transporty jsou jen výsadou Psi? Mýlíte se! Do Gajimu jdou vyrobit velice snadno, ale má to několik menších háčků. Nebudou to bohužel regexpy, ale opravdu pro každý transport jiný. Navíc si je můžete sami snadno upravit/vyrobit v jakémkoliv grafickém editoru který umí png.

Gajim s iconsety

Nádhera že? Ale teď jak na to.
Nejdřív trochu teorie.
Otevřeme XML konzoli a na vstup zkuste poslat toto:

<iq to="rss.netlab.cz" type="get" id="127">
<query xmlns="http://jabber.org/protocol/disco#info" />
</iq>

To je žádost o zobrazení služeb transportu který běží na serveru rss.netlab.cz.
Odpověď serveru by měla vypadat nějak takto:

<iq from='rss.netlab.cz' to='kamahl@jabbim.cz/Gajim-Doma' id='127' type='result'>
<query xmlns='http://jabber.org/protocol/disco#info'>
<feature var='http://jabber.org/protocol/disco#info'/>
<feature var='http://jabber.org/protocol/disco#items'/>
<feature var='jabber:iq:agents'/>
<feature var='jabber:iq:browse'/>
<feature var='jabber:iq:register'/>
<feature var='vcard-temp'/>
<identity category='headline' name='RSS Transport' type='rss'/>:
</query>
</iq>

Podstatný je teď ten řádek s elementem <identity/> konkrétně type='rss', podle toho Gajim určuje jaký iconset pro transport použije. Iconsety jsou uložené v adresáři složka_kde_je _nainstalovný_Gajim/data/iconsets/tranports A vyrobit iconset je jednoduché jako facka. Prostě vyrobíte složku se stejnou strukturou jako mají ostatní transporty akorát do ní dáte jiné obrázky a pojmenujete jí podle type, tedy "rss". Stačí restartovat gajim a máte krásné rss ikonky. Potom jsem si vyrobil pro smtp transpot. Složka se jmenovala "smtp" a všechno bylo ok.

Ale potom jsem narazil na ten problém. Samozřejmě mi to nestačilo a chtěl jsem si udělat ještě pro jdisk a slovníky. Ale nefungovalo to. Server pošle pro disk transport následující identity:

<identity name='Filestore - Jabber Disk' category='store' type='file'/>

Takže adresář s iconsetem se musí jmenovat file. To jsem udělal a nic. Dost dlouho jsem se na to snažil přijít, až jsem se obrátil na podporu Gajimu. (conference gajim@conference.gajim.org ) Tam se mě ujal správce s nickem Asterix a jsem mu vděčný, protože tento článek bych bez něj nemohl napsat. Chvíli jsme to řešili, sám to také z hlavy nevěděl a chvíli to nechápal ale pak to ze zdroje přece jen vyhrabal. Jde o to, že Gajim přidává iconsety jen k transportům, které mají u identity nastavené category="gateway" nebo category="headline". A sami vidíte že Gajim tam má "store". Takže jdeme mírně poupravit zdroják. Eye-wink Je to soubor (opět ve složce kde je nainstalovaný Gajim) src/common/connection_handlers.py Pokud si nevěříte, určitě ho zálohujte! Najdeme definici funkce _DiscoverInfoCB (Nevadí že neumíte python, stačí to dát do vyhledáván vašeho editoru.) A tam je zhruba takovýto řádek: (U mě to byl řádek č 781, takže někde poblíž.)

if attr.has_key('category') and \
attr['category'] in ('gateway', 'headline') and \
attr.has_key('type'):

A teď už je to jednoduché, přeměňte ('gateway', 'headline') na ('gateway', 'headline', 'store', 'service')

Skrýnšot editace ve vimu

Uložte, vyrobte iconset a restartujte Gajim. Jednoduché ne?

Samozřejmě si můžete stáhnout a později klidně upravit moje iconsety. Instalace je jednoduchá: Provedete výše uvedenou editaci a rozbalíte archiv do složky složka_kde_je _nainstalovný_Gajim/data/iconsets/tranports a restartujete Gajim.
Iconset pro SMTP transport
Iconset pro dict transport
Iconset pro RSS transport
Iconset pro disk tranport

Pokud najdete nějakou chybu, nebo něco nechápete, klidně mi napište na kamahl@jabbim.cz