diff --git a/clients_icons/clients.py b/clients_icons/clients.py index 49ad628..a55d37f 100644 --- a/clients_icons/clients.py +++ b/clients_icons/clients.py @@ -1,168 +1,178 @@ -CLIENTS = { - 'http://www.adium.im/': ['adium.png', 'Adium'], - 'http://www.adiumx.com/caps': ['adium.png', 'Adium'], - 'http://www.adiumx.com': ['adium.png', 'Adium'], - 'http://aqq.eu/': ['aqq.png', 'Aqq'], - 'http://www.asterisk.org/xmpp/client/caps': ['asterisk.png', 'Asterisk'], - 'http://ayttm.souceforge.net/caps': ['ayttm.png', 'Ayttm'], - 'http://www.barobin.com/caps': ['bayanicq.png', 'Bayanicq'], - 'http://bitlbee.org/xmpp/caps': ['bitlbee.png', 'BitlBee'], - 'http://simpleapps.ru/caps#blacksmith': ['bot.png', 'Blacksmith'], - 'http://blacksmith-2.googlecode.com/svn/': ['bot.png', 'Blacksmith-2'], - 'http://jabber.pdg.pl/caps': ['bombus-klub.png', 'Bombus-klub'], - 'http://klub54.wen.ru': ['bombus-klub.png', 'Bombus-klub'], - 'http://bombus-im.org/java': ['bombus.png', 'Bombus'], - 'http://bombusmod.net.ru/caps': ['bombusmod.png', 'Bombusmod'], - 'http://bombusng-md.googlecode.com': ['bombusng.png', 'Bombus-NG'], - 'http://bombus-im.org/ng': ['bombusng.png', 'Bombus-NG'], - 'http://voffk.org.ru/bombus': ['bombusplus.png', 'Bombus+'], - 'http://bombusng-qd.googlecode.com': ['bombusqd.png', 'Bombus-NG'], - 'http://bombusmod-qd.wen.ru/caps': ['bombusqd.png', 'BombusQD'], - 'http://bombusmod.net.ru': ['bombusmod.png', 'Bombusmod'], - 'http://ex-im.name/caps': ['bombusmod.png', 'Bombusmod'], - 'http://bombusmod.eu,http://bombus.pl': ['bombuspl.png', 'Bombusmod'], - 'ChatSecure': ['chatsecure.png', 'ChatSecure'], - 'http://coccinella.sourceforge.net/protocol/caps': \ - ['coccinella.png', 'Coccinella'], - 'http://conversations.im': ['conversations.png', 'Conversations'], - 'Conversations Legacy': ['conversations-legacy.png', 'Conversations Legacy'], - 'https://conversejs.org': ['conversejs.png', 'Converse'], - 'http://digsby.com/caps': ['digsby.png', 'Digsby'], - 'https://dino.im': ['dino.png', 'Dino'], - 'http://emacs-jabber.sourceforge.net': ['emacs.png', 'Emacs Jabber client'], - 'http://emess.eqx.su/caps': ['emess.png', 'Emess'], - 'http://live.gnome.org/empathy/caps': \ - ['telepathy.freedesktop.org.png', 'Empathy'], - 'http://eqo.com/': ['libpurple.png', 'Eqo'], - 'http://exodus.jabberstudio.org/caps': ['exodus.png', 'Exodus'], - 'http://fatal-bot.spb.ru/caps': ['bot.png', 'Fatal-bot'], - 'http://svn.posix.ru/fatal-bot/trunk': ['bot.png', 'Fatal-bot'], - 'http://isida.googlecode.com': ['isida-bot.png', 'Isida'], - 'http://isida-bot.com': ['isida-bot.png', 'Isida'], - 'facebook.com': ['facebook.png', 'Facebook'], - 'http://jabga.ru': ['fin.png', 'Fin jabber'], - 'http://chat.freize.org/caps': ['freize.png', 'Freize'], - 'http://gabber.sourceforge.net': ['gabber.png', 'Gabber'], - 'http://gaim.sf.net/caps': ['gaim.png', 'Gaim'], - 'http://gajim.org': ['gajim.png', 'Gajim'], - 'http://gajim.org/caps': ['gajim.png', 'Gajim'], - 'http://glu.net/': ['glu.png', 'Glu'], - 'http://mail.google.com/xmpp/client/caps': ['google.com.png', 'GMail'], - 'http://www.android.com/gtalk/client/caps': \ - ['talk.google.com.png', 'GTalk'], - 'talk.google.com': ['talk.google.com.png', 'GTalk'], - 'http://talkgadget.google.com/client/caps': ['google.png', 'GTalk'], - 'http://talk.google.com/xmpp/bot/caps': ['google.png', 'GTalk'], - 'http://aspro.users.ru/historian-bot/': ['bot.png', 'Historian-bot'], - 'http://www.apple.com/ichat/caps': ['ichat.png', 'IChat'], - 'http://instantbird.com/': ['instantbird.png', 'Instantbird'], - 'http://j-tmb.ru/caps': ['bot.png', 'J-tmb'], - 'http://jabbroid.akuz.de': ['android.png', 'Jabbroid'], - 'http://jabbroid.akuz.de/caps': ['android.png', 'Jabbroid'], - 'http://dev.jabbim.cz/jabbim/caps': ['jabbim.png', 'Jabbim'], - 'http://jabbrik.ru/caps': ['bot.png', 'Jabbrik'], - 'http://jabrvista.net.ru': ['bot.png', 'Jabvista'], - 'http://jajc.jrudevels.org/caps': ['jajc.png', 'JAJC'], - 'http://qabber.ru/jame-bot': ['bot.png', 'Jame-bot'], - 'https://www.jappix.com/': ['jappix.png', 'Jappix'], - 'http://japyt.googlecode.com': ['japyt.png', 'Japyt'], - 'http://jasmineicq.ru/caps': ['jasmine.png', 'Jasmine'], - 'http://jimm.net.ru/caps': ['jimm-aspro.png', 'Jimm'], - 'http://jitsi.org' :['jitsi.png', 'Jitsi'], - 'http://jtalk.ustyugov.net/caps': ['jtalk.png', 'Jtalk'], - 'http://pjc.googlecode.com/caps': ['jubo.png', 'Jubo'], - 'http://juick.com/caps': ['juick.png', 'Juick'], - 'http://kopete.kde.org/jabber/caps': ['kopete.png', 'Kopete'], - 'http://bluendo.com/protocol/caps': ['lampiro.png', 'Lampiro'], - 'libpurple': ['libpurple.png', 'Libpurple'], - 'http://lytgeygen.ru/caps': ['bot.png', 'Lytgeygen'], - 'http://agent.mail.ru/caps': ['mailruagent.png', 'Mailruagent'], - 'http://agent.mail.ru/': ['mailruagent.png', 'Mailruagent'], - 'http://tomclaw.com/mandarin_im/caps': ['mandarin.png', 'Mandarin'], - 'http://mcabber.lilotux.net/caps': ['mcabber.png', 'MCabber'], - 'http://mcabber.com/caps': ['mcabber.png', 'MCabber'], - 'http://mchat.mgslab.com/': ['mchat.png', 'Mchat'], - 'https://www.meebo.com/': ['meebo.png', 'Meebo'], - 'http://megafonvolga.ru/': ['megafon.png', 'Megafon'], - 'http://miranda-im.org/caps': ['miranda.png', 'Miranda'], - 'http://miranda-ng.org/caps' :['miranda_ng.png', 'Miranda NG'], - 'http://moxl.movim.eu/': ['movim.png', 'Movim'], - 'nimbuzz:caps': ['nimbuzz.png', 'Nimbuzz'], - 'http://nimbuzz.com/caps': ['nimbuzz.png', 'Nimbuzz'], - 'http://home.gna.org/': ['omnipresence.png', 'Omnipresence'], - 'http://oneteam.im/caps': ['oneteamiphone.png', 'OneTeam'], - 'http://www.process-one.net/en/solutions/oneteam_iphone/': \ - ['oneteamiphone.png', 'OneTeam-iphone'], - 'rss@isida-bot.com': ['osiris.png', 'Osiris'], - 'http://chat.ovi.com/caps': ['ovi-chat.png', 'Ovi-chat'], - 'http://opensource.palm.com/packages.html': ['palm.png', 'Palm'], - 'http://palringo.com/caps': ['palringo.png', 'Palringo'], - 'http://pandion.im/': ['pandion.png', 'Pandion'], - 'http://pidgin.im/': ['pidgin.png', 'Pidgin'], - 'http://pidgin.im/caps': ['pidgin.png', 'Pidgin'], - 'http://pigeon.vpro.ru/caps': ['pigeon.png', 'Pigeon'], - 'Pix-Art Messenger': ['pixart.png', 'Pix-Art Messenger'], - 'http://jabber.pix-art.de': ['pixart.png', 'Pix-Art Messenger'], - 'httр://sleekxmpp.com/ver/1.1.11': ['poezio.png', 'Poezio'], - 'https://poez.io': ['poezio.png', 'Poezio'], - 'http://www.profanity.im': ['profanity.png', 'Profanity'], - 'http://psi-im.org/caps': ['psi.png', 'Psi'], - 'http://psi-plus.com': ['psiplus.png', 'Psi+'], - 'http://psi-dev.googlecode.com/caps': ['psiplus.png', 'Psi+'], - 'psto@psto.net': ['psto.png', 'Psto'], - 'http://pyaim': ['pyaim-t.png', 'PyAIM-t'], - 'http://pyicq': ['pyicq-t.png', 'PyICQ-t'], - 'http://spectrum.im/transport': ['pyicq-t.png', 'PyICQ-t'], - 'http://qq-im.com/caps': ['qq.png', 'QQ'], - 'http://qq.com/caps': ['qq.png', 'QQ'], - 'http://2010.qip.ru/caps': ['qip.png', 'Qip'], - 'http://qip.ru/caps': ['qip.png', 'Qip'], - 'http://qip.ru/caps?QIP': ['qip.png', 'Qip'], - 'http://pda.qip.ru/caps': ['qippda.png', 'Qip-PDA'], - 'http://qutim.org': ['qutim.png', 'QutIM'], - 'http://qutim.org/': ['qutim.png', 'QutIM'], - 'http://apps.radio-t.com/caps': ['radio-t.png', 'Radio-t'], - 'Siemens': ['siejc.png', 'Siemens'], # Siemens Native Jabber Client - 'http://sim-im.org/caps': ['sim.png', 'Sim'], - 'http://www.lonelycatgames.com/slick/caps': ['slick.png', 'Slick'], - 'http://slixmpp.com/ver/1.2.4': ['bot.png', 'Slixmpp'], - 'http://slixmpp.com/ver/1.3.0': ['bot.png', 'Slixmpp'], - 'http://snapi-bot.googlecode.com/caps': ['bot.png', 'Snapi-bot'], - 'http://www.igniterealtime.org/project/spark/caps': ['spark.png', 'Spark'], - 'http://spectrum.im/': ['spectrum.png', 'Spectrum'], - 'http://storm-bot.googlecode.com/svn/trunk': ['bot.png', 'Storm-bot'], - 'http://swift.im': ['swift.png', 'Swift'], - 'http://jabber-net.ru/caps/talisman-bot': ['bot.png', 'Talisman-bot'], - 'http://jabber-net.ru/talisman-bot/caps': ['bot.png', 'Talisman-bot'], - 'http://www.google.com/xmpp/client/caps': ['talkonaut.png', 'Talkonaut'], - 'telepathy.': ['telepathy.freedesktop.org.png', 'Telepathy'], - 'http://telepathy.freedesktop.org/caps': \ - ['telepathy.freedesktop.org.png', 'Telepathy'], - 'http://tigase.org/messenger': ['tigase.png', 'Tigase'], - 'http://tkabber.jabber.ru/': ['tkabber.png', 'Tkabber'], - 'http://trillian.im/caps': ['trillian.png', 'Trillian'], - 'http://vacuum-im.googlecode.com': ['vacuum.png', 'Vacuum'], - 'http://code.google.com/p/vacuum-im/': ['vacuum.png', 'Vacuum'], - 'vk.com': ['vkontakte.png', 'Vkontakte'], - 'http://pyvk-t.googlecode.com/caps': ['vkontakte.png', 'Vkontakte'], - 'http://pyvk': ['vkontakte.png', 'Vkontakte'], - 'http://witcher-team.ucoz.ru/': ['bot.png', 'Witcher'], - 'http://online.yandex.ru/caps': ['yaonline.png', 'Yaonline'], - 'http://www.igniterealtime.org/projects/smack/': ['xabber.png', 'Xabber'], - 'https://www.xabber.com/': ['xabber.png', 'Xabber'], - 'http://www.xfire.com/': ['xfire.png', 'Xfire'], - 'http://www.xfire.com/caps': ['xfire.png', 'Xfire'], - 'https://www.yaxim.org/': ['yaxim.png', 'Yaxim'], - 'http://xu-6.jabbrik.ru/caps': ['bot.png', 'XU-6'], -} -LIBPURPLE_CLIENTS = { - 'adium': 'http://www.adium.im/', - 'eqo': 'http://eqo.com/', - 'finch': 'http://pidgin.im/', - 'instantbird': 'http://instantbird.com/', - 'meebo': 'https://www.meebo.com/', - 'palm': 'http://opensource.palm.com/packages.html', - 'pidgin': 'http://pidgin.im/', - 'spectrum': 'http://spectrum.im/', - 'telepathy-haze': 'http://pidgin.im/' -} \ No newline at end of file +from collections import UserDict +from collections import namedtuple + +from gajim.plugins.plugins_i18n import _ + +ClientData = namedtuple('ClientData', ['default', 'variations']) +ClientData.__new__.__defaults__ = (None,) + + +def get_variations(client_name): + # get_variations('Conversation Legacy 1.2.3') + # + # Returns List: + # [Conversation Legacy 1.2.3, + # Conversation Legacy + # Conversation] + if client_name is None: + return [] + alts = client_name.split() + alts = [" ".join(alts[:(i + 1)]) for i in range(len(alts))] + alts.reverse() + return alts + + +class ClientsDict(UserDict): + def get_client_data(self, name, node): + client_data = self.get(node) + if client_data is None: + return _('Unknown'), 'xmpp-client-unknown' + + if client_data.variations is None: + client_name, icon_name = client_data.default + return client_name, 'xmpp-client-%s' % icon_name + + variations = get_variations(name) + for var in variations: + try: + return var, 'xmpp-client-%s' % client_data.variations[var] + except KeyError: + pass + client_name, icon_name = client_data.default + return client_name, 'xmpp-client-%s' % icon_name + + +# ClientData( +# default=(Shown name, icon name) +# variations={Shown name, icon name} +# ) + +CLIENTS = ClientsDict({ + 'http://gajim.org': ClientData(('Gajim', 'gajim')), + 'http://conversations.im': ClientData( + default=('Conversations', 'conversations'), + variations={'Conversations Legacy': 'conversations-legacy'} + ), + 'http://pidgin.im/': ClientData(('Pidgin', 'pidgin')), + 'https://poez.io': ClientData(('Poezio', 'poezio')), + 'https://yaxim.org/': ClientData(('yaxim', 'yaxim')), + 'https://yaxim.org/bruno/': ClientData(('Bruno', 'bruno')), + 'http://jabber.pix-art.de': ClientData(('Pix-Art Messenger', 'pixart')), + 'http://mcabber.com/caps': ClientData(('MCabber', 'mcabber')), + 'http://psi-plus.com': ClientData(('Psi+', 'psiplus')), + 'https://dino.im': ClientData(('Dino', 'dino')), + 'http://slixmpp.com/ver/1.2.4': ClientData(('Bot', 'bot')), + 'http://slixmpp.com/ver/1.3.0': ClientData(('Bot', 'bot')), + 'https://www.xabber.com/': ClientData(('Xabber', 'xabber')), + 'http://www.profanity.im': ClientData(('Profanity', 'profanity')), + 'http://swift.im': ClientData(('Swift', 'swift')), + 'https://salut-a-toi.org': ClientData(('Salut à Toi', 'sat')), + 'https://conversejs.org': ClientData(('Converse', 'conversejs')), + 'http://bitlbee.org/xmpp/caps': ClientData(('BitlBee', 'bitlbee')), + 'http://tkabber.jabber.ru/': ClientData(('Tkabber', 'tkabber')), + 'http://miranda-ng.org/caps': ClientData(('Miranda NG', 'miranda_ng')), + 'http://www.adium.im/': ClientData(('Adium', 'adium')), + 'http://www.adiumx.com/caps': ClientData(('Adium', 'adium')), + 'http://www.adiumx.com': ClientData(('Adium', 'adium')), + 'http://aqq.eu/': ClientData(('Aqq', 'aqq')), + 'http://www.asterisk.org/xmpp/client/caps': ClientData(('Asterisk', 'asterisk')), + 'http://ayttm.souceforge.net/caps': ClientData(('Ayttm', 'ayttm')), + 'http://www.barobin.com/caps': ClientData(('Bayanicq', 'bayanicq')), + 'http://simpleapps.ru/caps#blacksmith': ClientData(('Blacksmith', 'bot')), + 'http://blacksmith-2.googlecode.com/svn/': ClientData(('Blacksmith-2', 'bot')), + 'http://coccinella.sourceforge.net/protocol/caps': ClientData(('Coccinella', 'coccinella')), + 'http://digsby.com/caps': ClientData(('Digsby', 'digsby')), + 'http://emacs-jabber.sourceforge.net': ClientData(('Emacs Jabber Client', 'emacs')), + 'http://emess.eqx.su/caps': ClientData(('Emess', 'emess')), + 'http://live.gnome.org/empathy/caps': ClientData(('Empathy', 'telepathy.freedesktop.org')), + 'http://eqo.com/': ClientData(('Eqo', 'libpurple')), + 'http://exodus.jabberstudio.org/caps': ClientData(('Exodus', 'exodus')), + 'http://fatal-bot.spb.ru/caps': ClientData(('Fatal-bot', 'bot')), + 'http://svn.posix.ru/fatal-bot/trunk': ClientData(('Fatal-bot', 'bot')), + 'http://isida.googlecode.com': ClientData(('Isida', 'isida-bot')), + 'http://isida-bot.com': ClientData(('Isida', 'isida-bot')), + 'http://jabga.ru': ClientData(('Fin jabber', 'fin')), + 'http://chat.freize.org/caps': ClientData(('Freize', 'freize')), + 'http://gabber.sourceforge.net': ClientData(('Gabber', 'gabber')), + 'http://glu.net/': ClientData(('Glu', 'glu')), + 'http://mail.google.com/xmpp/client/caps': ClientData(('GMail', 'google.com')), + 'http://www.android.com/gtalk/client/caps': ClientData(('GTalk', 'talk.google.com')), + 'talk.google.com': ClientData(('GTalk', 'talk.google.com')), + 'http://talkgadget.google.com/client/caps': ClientData(('GTalk', 'google')), + 'http://talk.google.com/xmpp/bot/caps': ClientData(('GTalk', 'google')), + 'http://aspro.users.ru/historian-bot/': ClientData(('Historian-bot', 'bot')), + 'http://www.apple.com/ichat/caps': ClientData(('IChat', 'ichat')), + 'http://instantbird.com/': ClientData(('Instantbird', 'instantbird')), + 'http://j-tmb.ru/caps': ClientData(('J-tmb', 'bot')), + 'http://jabbroid.akuz.de': ClientData(('Jabbroid', 'android')), + 'http://jabbroid.akuz.de/caps': ClientData(('Jabbroid', 'android')), + 'http://dev.jabbim.cz/jabbim/caps': ClientData(('Jabbim', 'jabbim')), + 'http://jabbrik.ru/caps': ClientData(('Jabbrik', 'bot')), + 'http://jabrvista.net.ru': ClientData(('Jabvista', 'bot')), + 'http://jajc.jrudevels.org/caps': ClientData(('JAJC', 'jajc')), + 'http://qabber.ru/jame-bot': ClientData(('Jame-bot', 'bot')), + 'https://www.jappix.com/': ClientData(('Jappix', 'jappix')), + 'http://japyt.googlecode.com': ClientData(('Japyt', 'japyt')), + 'http://jasmineicq.ru/caps': ClientData(('Jasmine', 'jasmine')), + 'http://jimm.net.ru/caps': ClientData(('Jimm', 'jimm-aspro')), + 'http://jitsi.org': ClientData(('Jitsi', 'jitsi')), + 'http://jtalk.ustyugov.net/caps': ClientData(('Jtalk', 'jtalk')), + 'http://pjc.googlecode.com/caps': ClientData(('Jubo', 'jubo')), + 'http://juick.com/caps': ClientData(('Juick', 'juick')), + 'http://kopete.kde.org/jabber/caps': ClientData(('Kopete', 'kopete')), + 'http://bluendo.com/protocol/caps': ClientData(('Lampiro', 'lampiro')), + 'http://lytgeygen.ru/caps': ClientData(('Lytgeygen', 'bot')), + 'http://agent.mail.ru/caps': ClientData(('Mailruagent', 'mailruagent')), + 'http://agent.mail.ru/': ClientData(('Mailruagent', 'mailruagent')), + 'http://tomclaw.com/mandarin_im/caps': ClientData(('Mandarin', 'mandarin')), + 'http://mchat.mgslab.com/': ClientData(('Mchat', 'mchat')), + 'https://www.meebo.com/': ClientData(('Meebo', 'meebo')), + 'http://megafonvolga.ru/': ClientData(('Megafon', 'megafon')), + 'http://miranda-im.org/caps': ClientData(('Miranda', 'miranda')), + 'http://moxl.movim.eu/': ClientData(('Movim', 'movim')), + 'nimbuzz:caps': ClientData(('Nimbuzz', 'nimbuzz')), + 'http://nimbuzz.com/caps': ClientData(('Nimbuzz', 'nimbuzz')), + 'http://home.gna.org/': ClientData(('Omnipresence', 'omnipresence')), + 'http://oneteam.im/caps': ClientData(('OneTeam', 'oneteamiphone')), + 'http://www.process-one.net/en/solutions/oneteam_iphone/': ClientData(('OneTeam-IPhone', 'oneteamiphone')), + 'rss@isida-bot.com': ClientData(('Osiris', 'osiris')), + 'http://chat.ovi.com/caps': ClientData(('Ovi-chat', 'ovi-chat')), + 'http://opensource.palm.com/packages.html': ClientData(('Palm', 'palm')), + 'http://palringo.com/caps': ClientData(('Palringo', 'palringo')), + 'http://pandion.im/': ClientData(('Pandion', 'pandion')), + 'http://pigeon.vpro.ru/caps': ClientData(('Pigeon', 'pigeon')), + 'psto@psto.net': ClientData(('Psto', 'psto')), + 'http://qq-im.com/caps': ClientData(('QQ', 'qq')), + 'http://qq.com/caps': ClientData(('QQ', 'qq')), + 'http://2010.qip.ru/caps': ClientData(('Qip', 'qip')), + 'http://qip.ru/caps': ClientData(('Qip', 'qip')), + 'http://qip.ru/caps?QIP': ClientData(('Qip', 'qip')), + 'http://pda.qip.ru/caps': ClientData(('Qip-PDA', 'qippda')), + 'http://qutim.org': ClientData(('QutIM', 'qutim')), + 'http://qutim.org/': ClientData(('QutIM', 'qutim')), + 'http://apps.radio-t.com/caps': ClientData(('Radio-t', 'radio-t')), + 'http://sim-im.org/caps': ClientData(('Sim', 'sim')), + 'http://www.lonelycatgames.com/slick/caps': ClientData(('Slick', 'slick')), + 'http://snapi-bot.googlecode.com/caps': ClientData(('Snapi-bot', 'bot')), + 'http://www.igniterealtime.org/project/spark/caps': ClientData(('Spark', 'spark')), + 'http://spectrum.im/': ClientData(('Spectrum', 'spectrum')), + 'http://storm-bot.googlecode.com/svn/trunk': ClientData(('Storm-bot', 'bot')), + 'http://jabber-net.ru/caps/talisman-bot': ClientData(('Talisman-bot', 'bot')), + 'http://jabber-net.ru/talisman-bot/caps': ClientData(('Talisman-bot', 'bot')), + 'http://www.google.com/xmpp/client/caps': ClientData(('Talkonaut', 'talkonaut')), + 'http://telepathy.freedesktop.org/caps': ClientData(('SlicTelepathyk', 'telepathy.freedesktop.org')), + 'http://tigase.org/messenger': ClientData(('Tigase', 'tigase')), + 'http://trillian.im/caps': ClientData(('Trillian', 'trillian')), + 'http://vacuum-im.googlecode.com': ClientData(('Vacuum', 'vacuum')), + 'http://code.google.com/p/vacuum-im/': ClientData(('Vacuum', 'vacuum')), + 'http://witcher-team.ucoz.ru/': ClientData(('Witcher', 'bot')), + 'http://online.yandex.ru/caps': ClientData(('Yaonline', 'yaonline')), + 'http://www.igniterealtime.org/projects/smack/': ClientData(('Xabber', 'xabber')), + 'http://www.xfire.com/': ClientData(('Xfire', 'xfire')), + 'http://www.xfire.com/caps': ClientData(('Xfire', 'xfire')), + 'http://xu-6.jabbrik.ru/caps': ClientData(('XU-6', 'bot')), +}) + + +def get_data(*args): + return CLIENTS.get_client_data(*args) diff --git a/clients_icons/clients_icons.py b/clients_icons/clients_icons.py index 38dc4b6..80f9124 100644 --- a/clients_icons/clients_icons.py +++ b/clients_icons/clients_icons.py @@ -1,41 +1,36 @@ -import os import logging +from pathlib import Path from gi.repository import Gtk -from gi.repository import GdkPixbuf +from nbxmpp import JID -from clients_icons.clients import CLIENTS, LIBPURPLE_CLIENTS +from clients_icons import clients + +from gajim.roster_window import Column -from gajim.plugins.gui import GajimPluginConfigDialog from gajim.plugins import GajimPlugin -from gajim.plugins.helpers import log_calls +from gajim.plugins.gui import GajimPluginConfigDialog +from gajim.plugins.plugins_i18n import _ + from gajim.common import ged from gajim.common import app from gajim.common import caps_cache -# Since Gajim 1.1.0 _() has to be imported -try: - from gajim.common.i18n import _ -except ImportError: - pass -log = logging.getLogger('gajim.plugin_system.clients_icons') +from gajim.gtk.util import load_icon + + +log = logging.getLogger('gajim.plugin_system.client_icons') class ClientsIconsPlugin(GajimPlugin): - - @log_calls('ClientsIconsPlugin') def init(self): self.description = _('Shows client icons in roster' ' and in groupchats.') self.pos_list = [_('after statusicon'), _('before avatar')] self.events_handlers = { - 'caps-presence-received': (ged.POSTGUI, - self.caps_presence_received), - 'gc-presence-received': (ged.POSTGUI, - self.gc_presence_received), - 'caps-disco-received': (ged.POSTGUI, - self.caps_disco_received), } + 'caps-update': (ged.POSTGUI, self._on_caps_update), + } self.gui_extension_points = { 'groupchat_control': (self.connect_with_groupchat_control, self.disconnect_from_groupchat_control), @@ -44,42 +39,28 @@ class ClientsIconsPlugin(GajimPlugin): 'gc_tooltip_populate': (self.connect_with_gc_tooltip_populate, None), } self.config_default_values = { - 'show_in_roster': (True, ''), - 'show_in_groupchats': (True, ''), - 'show_in_tooltip': (True, ''), - 'show_unknown_icon': (True, ''), - 'pos_in_list': (0, ''), - 'show_facebook': (True, ''),} + 'show_in_roster': (True, ''), + 'show_in_groupchats': (True, ''), + 'show_in_tooltip': (True, ''), + 'show_unknown_icon': (True, ''), + 'pos_in_list': (0, ''), + 'show_facebook': (True, ''), + } + + _icon_theme = Gtk.IconTheme.get_default() + if _icon_theme is not None: + _icon_theme.append_search_path(str(Path(__file__).parent)) self.config_dialog = ClientsIconsPluginConfigDialog(self) - icon_path = os.path.join(self.local_file_path('icons'), 'unknown.png') - self.default_pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size( - icon_path, 16, 16) - self.icon_cache = {} - @log_calls('ClientsIconsPlugin') - def get_client_name(self, contact, client_name): + @staticmethod + def get_client_identity_name(contact): identities = contact.client_caps.get_cache_lookup_strategy()( caps_cache.capscache).identities if identities: - log.debug('get_client_name, identities: %s', str(identities)) for entry in identities: if entry['category'] == 'client': - client_name = entry.get('name', client_name) - break - return client_name - - def get_client_icon_by_name(self, client_name): - client_icon = None - name_splits = client_name.split() - name_splits = reversed([" ".join(name_splits[:(i+1)]) for i in range(len(name_splits))]) - for name in name_splits: - if not client_icon: - log.debug("get_client_icon_by_name, searching for name fragment '%s'..." % name) - client_icon = CLIENTS.get(name, (None,))[0] - if client_icon: - break - return client_icon + return entry.get('name') @staticmethod def is_groupchat(contact): @@ -87,14 +68,10 @@ class ClientsIconsPlugin(GajimPlugin): return contact.is_groupchat() return False - @log_calls('ClientsIconsPlugin') def add_tooltip_row(self, tooltip, contact, tooltip_grid): caps = contact.client_caps._node - log.debug('connect_with_gc_tooltip_populate, caps: %s', caps) - caps_image, client_name = self.get_icon(caps, contact) - client_name = self.get_client_name(contact, client_name) + caps_image, client_name = self.get_icon(caps, contact, tooltip_grid) caps_image.set_halign(Gtk.PositionType.RIGHT) - log.debug('connect_with_gc_tooltip_populate, client_name: %s', client_name) # fill clients table self.table = Gtk.Grid() @@ -122,27 +99,25 @@ class ClientsIconsPlugin(GajimPlugin): tooltip_grid.attach_next_to(self.table, label, Gtk.PositionType.RIGHT, 1, 1) - @log_calls('ClientsIconsPlugin') def connect_with_gc_tooltip_populate(self, tooltip, contact, tooltip_grid): if not self.config['show_in_tooltip']: return # Check if clients info already attached to tooltip - has_attached = False - for child in tooltip_grid.get_children(): - if child.get_name() == 'client_icons_grid': - caps = contact.client_caps._node - caps_image, client_name = self.get_icon(caps, contact) - child.remove(child.get_child_at(1, 1)) - child.attach(caps_image, 1, 1, 1, 1) - child.get_child_at(2, 1).set_markup(client_name) - child.show_all() - if child.get_name() == 'client_icons_label': - child.show() - has_attached = True - if not has_attached: - self.add_tooltip_row(tooltip, contact, tooltip_grid) - @log_calls('ClientsIconsPlugin') + node = contact.client_caps._node + image, client_name = self.get_icon(node, contact, tooltip_grid) + label = Gtk.Label(label=client_name) + + box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) + box.add(image) + box.add(label) + box.show_all() + + tooltip_grid.insert_next_to(tooltip._ui.affiliation, + Gtk.PositionType.BOTTOM) + tooltip_grid.attach_next_to(box, tooltip._ui.affiliation, + Gtk.PositionType.BOTTOM, 1, 1) + def connect_with_roster_tooltip_populate(self, tooltip, contacts, tooltip_grid): if not self.config['show_in_tooltip']: return @@ -155,6 +130,8 @@ class ClientsIconsPlugin(GajimPlugin): num_resources = 0 contacts_dict = {} for contact in contacts: + if contact.show == 'offline': + return if contact.resource: num_resources += 1 if int(contact.priority) in contacts_dict: @@ -165,97 +142,50 @@ class ClientsIconsPlugin(GajimPlugin): contact_keys.reverse() # fill clients table - self.table = Gtk.Grid() - self.table.insert_row(0) - self.table.insert_row(0) - self.table.insert_column(0) - self.table.set_property('column-spacing', 2) + table = Gtk.Grid() + table.insert_row(0) + table.insert_row(0) + table.insert_column(0) + table.set_property('column-spacing', 2) vcard_current_row = 0 for priority in contact_keys: for acontact in contacts_dict[priority]: caps = acontact.client_caps._node - caps_image, client_name = self.get_icon(caps, acontact) - client_name = self.get_client_name(acontact, client_name) - caps_image.set_alignment(0, 0) - self.table.attach(caps_image, 1, vcard_current_row, 1, 1) - label = Gtk.Label() - label.set_alignment(0, 0) - label.set_markup(client_name) - self.table.attach(label, 2, vcard_current_row, 1, 1) + caps_image, client_name = self.get_icon(caps, acontact, tooltip_grid) + caps_image.set_valign(Gtk.Align.START) + table.attach(caps_image, 1, vcard_current_row, 1, 1) + label = Gtk.Label(label=client_name) + label.set_valign(Gtk.Align.START) + label.set_xalign(0) + table.attach(label, 2, vcard_current_row, 1, 1) vcard_current_row += 1 - self.table.show_all() + table.show_all() + table.set_valign(Gtk.Align.START) # set label label = Gtk.Label() - label.set_alignment(0, 0) + label.set_halign(Gtk.Align.END) + label.set_valign(Gtk.Align.START) if num_resources > 1: - label.set_markup(_('Clients:')) + label.set_text(_('Clients:')) else: - if contact.show == 'offline': - return - label.set_markup(_('Client:')) + label.set_text(_('Client:')) label.show() # set clients table to tooltip - tooltip_grid.insert_next_to(tooltip.resource_label, + tooltip_grid.insert_next_to(tooltip._ui.resource_label, Gtk.PositionType.BOTTOM) - tooltip_grid.attach_next_to(label, tooltip.resource_label, + tooltip_grid.attach_next_to(label, tooltip._ui.resource_label, Gtk.PositionType.BOTTOM, 1, 1) - tooltip_grid.attach_next_to(self.table, label, + tooltip_grid.attach_next_to(table, label, Gtk.PositionType.RIGHT, 1, 1) - def get_icon(self, caps, contact): - client_name = _('Unknown') - caps_ = None - if caps: - # libpurple returns pidgin.im/ only, we have to look for resource name - if 'pidgin.im/' in caps: - caps = 'libpurple' - for client in LIBPURPLE_CLIENTS: - if client in contact.resource.lower(): - caps = LIBPURPLE_CLIENTS[client] + def get_icon(self, node, contact, widget): + identity_name = self.get_client_identity_name(contact) + client_name, icon_name = clients.get_data(identity_name, node) + surface = load_icon(icon_name, widget=widget) + return Gtk.Image.new_from_surface(surface), client_name - if 'sleekxmpp.com'in caps: - caps = 'httр://sleekxmpp.com/ver/1.1.11' - caps_from_jid = self.check_jid(contact.jid) - if caps_from_jid: - caps = caps_from_jid - caps_ = caps.split('#')[0].split() - - client_name = self.get_client_name(contact, client_name) - client_icon = self.get_client_icon_by_name(client_name) - - if caps_ and not client_icon: - client_icon = CLIENTS.get(caps_[0].split()[0], (None,))[0] - client_name = CLIENTS.get(caps_[0].split()[0], ('', _('Unknown')))[1] - - if not client_icon: - return Gtk.Image.new_from_pixbuf(self.default_pixbuf), _('Unknown') - else: - icon_path = os.path.join(self.local_file_path('icons'), client_icon) - if icon_path in self.icon_cache: - return Gtk.Image.new_from_pixbuf(self.icon_cache[icon_path]), \ - client_name - else: - pb = GdkPixbuf.Pixbuf.new_from_file_at_size(icon_path, 16, 16) - self.icon_cache[icon_path] = pb - return Gtk.Image.new_from_pixbuf(pb), client_name - - def check_jid(self, jid): - caps = None - if 'facebook.com' in jid and self.config['show_facebook']: - caps = 'facebook.com' - elif '@vk.com' in jid and self.config['show_facebook']: - caps = 'vk.com' - elif jid == 'juick@juick.com': - caps = 'http://juick.com/caps' - elif jid == 'psto@psto.net': - caps = 'psto@psto.net' - elif jid == 'rss@isida-bot.com': - caps = 'rss@isida-bot.com' - return caps - - @log_calls('ClientsIconsPlugin') def connect_with_roster_draw_contact(self, roster, jid, account, contact): if not self.active: return @@ -268,22 +198,19 @@ class ClientsIconsPlugin(GajimPlugin): return for iter_ in child_iters: if roster.model[iter_][self.renderer_num] is None: - caps = contact.client_caps._node - if not caps: - caps = self.check_jid(jid) - self.set_icon(roster.model, iter_, self.renderer_num, caps, contact) + node = contact.client_caps._node + self.set_icon(roster.model, iter_, self.renderer_num, node, contact) - @log_calls('ClientsIconsPlugin') def connect_with_groupchat_control(self, chat_control): chat_control.nb_ext_renderers += 1 - chat_control.columns += [GdkPixbuf.Pixbuf] + chat_control.columns += [str] self.groupchats_tree_is_transformed = True self.chat_control = chat_control col = Gtk.TreeViewColumn() self.muc_renderer_num = 4 + chat_control.nb_ext_renderers client_icon_rend = ( 'client_icon', Gtk.CellRendererPixbuf(), False, - 'pixbuf', self.muc_renderer_num, + 'icon_name', self.muc_renderer_num, self.tree_cell_data_func, chat_control) # remove old column chat_control.list_treeview.remove_column( @@ -310,14 +237,10 @@ class ClientsIconsPlugin(GajimPlugin): chat_control.account, chat_control.room_jid): gc_contact = app.contacts.get_gc_contact( chat_control.account, chat_control.room_jid, nick) - iter_ = chat_control.add_contact_to_roster( - nick, gc_contact.show, gc_contact.role, - gc_contact.affiliation, gc_contact.status, gc_contact.jid) + iter_ = chat_control.add_contact_to_roster(nick) if not self.config['show_in_groupchats']: - log.debug("not showing in groupchats...") continue caps = gc_contact.client_caps._node - log.debug("caps: %s" % str(caps)) self.set_icon( chat_control.model, iter_, self.muc_renderer_num, caps, gc_contact) @@ -325,7 +248,6 @@ class ClientsIconsPlugin(GajimPlugin): # Recalculate column width for ellipsizin chat_control.list_treeview.columns_autosize() - @log_calls('ClientsIconsPlugin') def disconnect_from_groupchat_control(self, gc_control): gc_control.nb_ext_renderers -= 1 col = gc_control.list_treeview.get_column(0) @@ -345,7 +267,6 @@ class ClientsIconsPlugin(GajimPlugin): gc_control.list_treeview.set_model(gc_control.model) gc_control.draw_roster() - @log_calls('ClientsIconsPlugin') def activate(self): self.active = None roster = app.interface.roster @@ -355,8 +276,8 @@ class ClientsIconsPlugin(GajimPlugin): self.renderer = Gtk.CellRendererPixbuf() client_icon_rend = ( 'client_icon', self.renderer, False, - 'pixbuf', self.renderer_num, - roster._fill_pep_pixbuf_renderer, self.renderer_num) + 'icon_name', self.renderer_num, + self._roster_icon_renderer, self.renderer_num) # remove old column roster.tree.remove_column(roster.tree.get_column(0)) # add new renderer in renderers list @@ -371,11 +292,33 @@ class ClientsIconsPlugin(GajimPlugin): roster.fill_column(col) roster.tree.insert_column(col, 0) # redraw roster - roster.columns += [GdkPixbuf.Pixbuf] + roster.columns += [str] self.active = True roster.setup_and_draw_roster() - @log_calls('ClientsIconsPlugin') + def _roster_icon_renderer(self, column, renderer, model, titer, data=None): + try: + type_ = model[titer][Column.TYPE] + except TypeError: + return + + # allocate space for the icon only if needed + if model[titer][data] is None: + renderer.set_property('visible', False) + else: + renderer.set_property('visible', True) + + if type_ == 'account': + app.interface.roster._set_account_row_background_color(renderer) + renderer.set_property('xalign', 1) + elif type_: + if not model[titer][Column.JID] or not model[titer][Column.ACCOUNT]: + # This can append at the moment we add the row + return + jid = model[titer][Column.JID] + account = model[titer][Column.ACCOUNT] + app.interface.roster._set_contact_row_background_color(renderer, jid, account) + def deactivate(self): self.active = None roster = app.interface.roster @@ -393,139 +336,86 @@ class ClientsIconsPlugin(GajimPlugin): self.renderer_num + 1:] roster.setup_and_draw_roster() - def caps_disco_received(self, iq_obj): - log.debug("caps disco received...") - if not self.config['show_in_roster']: - return - roster = app.interface.roster - contact = app.contacts.get_contact_from_full_jid( - iq_obj.conn.name, iq_obj.jid) - if self.is_groupchat(contact): - return - if contact is None: - room_jid, nick = app.get_room_and_nick_from_fjid(iq_obj.fjid) - contact = app.contacts.get_gc_contact(iq_obj.conn.name, room_jid, nick) - if contact: - gc_control = app.interface.msg_win_mgr.get_gc_control( - iq_obj.jid, iq_obj.conn.name) - iter_ = gc_control.get_contact_iter(nick) - self.set_icon(gc_control.model, iter_, - self.muc_renderer_num, None, contact) - return - if not contact: - return - child_iters = roster._get_contact_iter( - iq_obj.jid, iq_obj.conn.name, contact, roster.model) - if not child_iters: - return - for iter_ in child_iters: - caps = contact.client_caps._node - caps_ = self.check_jid(iq_obj.jid) - if caps_: - caps = caps_ - self.set_icon(roster.model, iter_, self.renderer_num, caps, contact) - - def caps_presence_received(self, iq_obj): - log.debug("caps presence received...") - if not self.config['show_in_roster']: - return - roster = app.interface.roster - contact = app.contacts.get_contact_with_highest_priority( - iq_obj.conn.name, iq_obj.jid) - if not contact or self.is_groupchat(contact): - return - - if iq_obj.resource == 'local': + def _on_caps_update(self, event): + if event.conn.name == 'Local': # zeroconf return - iters = roster._get_contact_iter(iq_obj.jid, iq_obj.conn.name, contact, + contact = self._get_contact_or_gc_contact_for_jid(event.conn.name, event.fjid) + if contact is None: + return + + if contact.is_gc_contact: + self._draw_gc_contact(event, contact) + else: + self._draw_roster_contact(event, contact) + + def _draw_roster_contact(self, event, contact): + if not self.config['show_in_roster']: + return + + if contact.is_groupchat(): + return + roster = app.interface.roster + iters = roster._get_contact_iter(event.jid, event.conn.name, contact, roster.model) iter_ = iters[0] - if contact.show == 'error': - self.set_icon(roster.model, iter_, self.renderer_num, None, contact) + # highest contact changed + caps = contact.client_caps._node + if not caps: return - # highest contact changed if roster.model[iter_][self.renderer_num] is not None: - caps = contact.client_caps._node - if caps: - log.debug('caps_presence_received, caps: %s', caps) - self.set_icon(roster.model, iter_, self.renderer_num, caps, contact) - return - - caps = None - tag = iq_obj.stanza.getTags('c') - if tag: - caps = tag[0].getAttr('node') - if caps: - if 'pidgin.im/' in caps: - caps = 'libpurple' - for client in LIBPURPLE_CLIENTS: - if client in contact.resource.lower(): - caps = LIBPURPLE_CLIENTS[client] - if 'sleekxmpp.com'in caps: - caps = 'httр://sleekxmpp.com/ver/1.1.11' - - caps_from_jid = self.check_jid(iq_obj.jid) - if caps_from_jid: - caps = caps_from_jid + self.set_icon(roster.model, iter_, self.renderer_num, caps, contact) + return for iter_ in iters: self.set_icon(roster.model, iter_, self.renderer_num, caps, contact) - def gc_presence_received(self, iq_obj): - log.debug("gc presence received...") + def _draw_gc_contact(self, event, contact): if not self.config['show_in_groupchats']: return - contact = app.contacts.get_gc_contact( - iq_obj.conn.name, iq_obj.presence_obj.jid, iq_obj.nick) - if not contact: + + control = app.interface.msg_win_mgr.get_gc_control(contact.room_jid, + event.conn.name) + if control is None: return - caps = None - tag = iq_obj.stanza.getTags('c') - if tag: - caps = tag[0].getAttr('node') - if caps: - log.debug('gc_presence_received, caps: %s', caps) - if 'pidgin.im/' in caps: - caps = 'libpurple' - if 'sleekxmpp.com' in caps: - caps = 'httр://sleekxmpp.com/ver/1.1.11' - iter_ = iq_obj.gc_control.get_contact_iter(iq_obj.nick) - model = iq_obj.gc_control.model - if model[iter_][self.muc_renderer_num] is not None: + iter_ = control.get_contact_iter(contact.name) + if control.model[iter_][self.muc_renderer_num] is not None: return - self.set_icon(model, iter_, self.muc_renderer_num, caps, contact) + caps = contact.client_caps._node + if not caps: + return + self.set_icon(control.model, iter_, self.muc_renderer_num, caps, contact) - def set_icon(self, model, iter_, pos, caps, contact): - client_icon = self.get_client_icon_by_name( - self.get_client_name(contact, _('Unknown'))) + def _get_contact_or_gc_contact_for_jid(self, account, fjid): + contact = app.contacts.get_contact_from_full_jid(account, fjid) - if caps and not client_icon: - caps_ = caps.split('#')[0].split() - if caps_: - log.debug('set_icon, caps_: %s', caps_) - client_icon = CLIENTS.get(caps_[0].split()[0], (None,))[0] + if contact is None: + fjid = JID(fjid) + room_jid, resource = fjid.getStripped(), fjid.getResource() + contact = app.contacts.get_gc_contact(account, room_jid, resource) + return contact - if not client_icon: - if self.config['show_unknown_icon']: - model[iter_][pos] = self.default_pixbuf - else: - icon_path = os.path.join(self.local_file_path('icons'), client_icon) - if icon_path in self.icon_cache: - model[iter_][pos] = self.icon_cache[icon_path] - else: - pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(icon_path, 16, 16) - model[iter_][pos] = pixbuf - self.icon_cache[icon_path] = pixbuf + def set_icon(self, model, iter_, pos, node, contact): + identity_name = self.get_client_identity_name(contact) + _client_name, icon_name = clients.get_data(identity_name, node) + if 'unknown' in icon_name: + if node is not None: + log.warning('Unknown client: %s %s', identity_name, node) + if not self.config['show_unknown_icon']: + model[iter_][pos] = None + return + + model[iter_][pos] = icon_name def tree_cell_data_func(self, column, renderer, model, iter_, control): if not model.iter_parent(iter_): renderer.set_property('visible', False) return - elif model[iter_][self.muc_renderer_num]: + + if model[iter_][self.muc_renderer_num]: renderer.set_property('visible', True) contact = app.contacts.get_gc_contact( diff --git a/clients_icons/icons/jitsi.png b/clients_icons/hicolor/16x16/apps/xmpp-client-jitsi.png similarity index 100% rename from clients_icons/icons/jitsi.png rename to clients_icons/hicolor/16x16/apps/xmpp-client-jitsi.png diff --git a/clients_icons/icons/libpurple.png b/clients_icons/hicolor/16x16/apps/xmpp-client-libpurple.png similarity index 100% rename from clients_icons/icons/libpurple.png rename to clients_icons/hicolor/16x16/apps/xmpp-client-libpurple.png diff --git a/clients_icons/icons/miranda_ng.png b/clients_icons/hicolor/16x16/apps/xmpp-client-miranda_ng.png similarity index 100% rename from clients_icons/icons/miranda_ng.png rename to clients_icons/hicolor/16x16/apps/xmpp-client-miranda_ng.png diff --git a/clients_icons/icons/nimbuzz.png b/clients_icons/hicolor/16x16/apps/xmpp-client-nimbuzz.png similarity index 100% rename from clients_icons/icons/nimbuzz.png rename to clients_icons/hicolor/16x16/apps/xmpp-client-nimbuzz.png diff --git a/clients_icons/icons/poezio.png b/clients_icons/hicolor/16x16/apps/xmpp-client-poezio.png similarity index 100% rename from clients_icons/icons/poezio.png rename to clients_icons/hicolor/16x16/apps/xmpp-client-poezio.png diff --git a/clients_icons/icons/psto.png b/clients_icons/hicolor/16x16/apps/xmpp-client-psto.png similarity index 100% rename from clients_icons/icons/psto.png rename to clients_icons/hicolor/16x16/apps/xmpp-client-psto.png diff --git a/clients_icons/icons/tigase.png b/clients_icons/hicolor/16x16/apps/xmpp-client-tigase.png similarity index 100% rename from clients_icons/icons/tigase.png rename to clients_icons/hicolor/16x16/apps/xmpp-client-tigase.png diff --git a/clients_icons/icons/unknown.png b/clients_icons/hicolor/16x16/apps/xmpp-client-unknown.png similarity index 100% rename from clients_icons/icons/unknown.png rename to clients_icons/hicolor/16x16/apps/xmpp-client-unknown.png diff --git a/clients_icons/icons/1end1.png b/clients_icons/hicolor/22x22/apps/xmpp-client-1end1.png similarity index 100% rename from clients_icons/icons/1end1.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-1end1.png diff --git a/clients_icons/icons/adium.png b/clients_icons/hicolor/22x22/apps/xmpp-client-adium.png similarity index 100% rename from clients_icons/icons/adium.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-adium.png diff --git a/clients_icons/icons/agilemessenger.png b/clients_icons/hicolor/22x22/apps/xmpp-client-agilemessenger.png similarity index 100% rename from clients_icons/icons/agilemessenger.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-agilemessenger.png diff --git a/clients_icons/icons/aim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-aim.png similarity index 100% rename from clients_icons/icons/aim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-aim.png diff --git a/clients_icons/icons/akeni.png b/clients_icons/hicolor/22x22/apps/xmpp-client-akeni.png similarity index 100% rename from clients_icons/icons/akeni.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-akeni.png diff --git a/clients_icons/icons/anastasiya.png b/clients_icons/hicolor/22x22/apps/xmpp-client-anastasiya.png similarity index 100% rename from clients_icons/icons/anastasiya.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-anastasiya.png diff --git a/clients_icons/icons/android.png b/clients_icons/hicolor/22x22/apps/xmpp-client-android.png similarity index 100% rename from clients_icons/icons/android.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-android.png diff --git a/clients_icons/icons/apple.png b/clients_icons/hicolor/22x22/apps/xmpp-client-apple.png similarity index 100% rename from clients_icons/icons/apple.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-apple.png diff --git a/clients_icons/icons/aqq.png b/clients_icons/hicolor/22x22/apps/xmpp-client-aqq.png similarity index 100% rename from clients_icons/icons/aqq.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-aqq.png diff --git a/clients_icons/icons/asterisk.png b/clients_icons/hicolor/22x22/apps/xmpp-client-asterisk.png similarity index 100% rename from clients_icons/icons/asterisk.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-asterisk.png diff --git a/clients_icons/icons/ayttm.png b/clients_icons/hicolor/22x22/apps/xmpp-client-ayttm.png similarity index 100% rename from clients_icons/icons/ayttm.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-ayttm.png diff --git a/clients_icons/icons/barracuda-im.png b/clients_icons/hicolor/22x22/apps/xmpp-client-barracuda-im.png similarity index 100% rename from clients_icons/icons/barracuda-im.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-barracuda-im.png diff --git a/clients_icons/icons/bayanicq.png b/clients_icons/hicolor/22x22/apps/xmpp-client-bayanicq.png similarity index 100% rename from clients_icons/icons/bayanicq.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-bayanicq.png diff --git a/clients_icons/icons/beejive.png b/clients_icons/hicolor/22x22/apps/xmpp-client-beejive.png similarity index 100% rename from clients_icons/icons/beejive.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-beejive.png diff --git a/clients_icons/icons/bitlbee.png b/clients_icons/hicolor/22x22/apps/xmpp-client-bitlbee.png similarity index 100% rename from clients_icons/icons/bitlbee.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-bitlbee.png diff --git a/clients_icons/icons/bot.png b/clients_icons/hicolor/22x22/apps/xmpp-client-bot.png similarity index 100% rename from clients_icons/icons/bot.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-bot.png diff --git a/clients_icons/icons/buddydroid.png b/clients_icons/hicolor/22x22/apps/xmpp-client-buddydroid.png similarity index 100% rename from clients_icons/icons/buddydroid.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-buddydroid.png diff --git a/clients_icons/icons/centericq.png b/clients_icons/hicolor/22x22/apps/xmpp-client-centericq.png similarity index 100% rename from clients_icons/icons/centericq.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-centericq.png diff --git a/clients_icons/icons/centerim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-centerim.png similarity index 100% rename from clients_icons/icons/centerim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-centerim.png diff --git a/clients_icons/icons/chatsecure.png b/clients_icons/hicolor/22x22/apps/xmpp-client-chatsecure.png similarity index 100% rename from clients_icons/icons/chatsecure.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-chatsecure.png diff --git a/clients_icons/icons/coccinella.png b/clients_icons/hicolor/22x22/apps/xmpp-client-coccinella.png similarity index 100% rename from clients_icons/icons/coccinella.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-coccinella.png diff --git a/clients_icons/icons/colibry.png b/clients_icons/hicolor/22x22/apps/xmpp-client-colibry.png similarity index 100% rename from clients_icons/icons/colibry.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-colibry.png diff --git a/clients_icons/icons/conversejs.png b/clients_icons/hicolor/22x22/apps/xmpp-client-conversejs.png similarity index 100% rename from clients_icons/icons/conversejs.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-conversejs.png diff --git a/clients_icons/icons/corepager.png b/clients_icons/hicolor/22x22/apps/xmpp-client-corepager.png similarity index 100% rename from clients_icons/icons/corepager.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-corepager.png diff --git a/clients_icons/icons/digsby.png b/clients_icons/hicolor/22x22/apps/xmpp-client-digsby.png similarity index 100% rename from clients_icons/icons/digsby.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-digsby.png diff --git a/clients_icons/icons/ebuddy.png b/clients_icons/hicolor/22x22/apps/xmpp-client-ebuddy.png similarity index 100% rename from clients_icons/icons/ebuddy.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-ebuddy.png diff --git a/clients_icons/icons/emacs.png b/clients_icons/hicolor/22x22/apps/xmpp-client-emacs.png similarity index 100% rename from clients_icons/icons/emacs.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-emacs.png diff --git a/clients_icons/icons/emess.png b/clients_icons/hicolor/22x22/apps/xmpp-client-emess.png similarity index 100% rename from clients_icons/icons/emess.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-emess.png diff --git a/clients_icons/icons/exodus.png b/clients_icons/hicolor/22x22/apps/xmpp-client-exodus.png similarity index 100% rename from clients_icons/icons/exodus.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-exodus.png diff --git a/clients_icons/icons/facebook.png b/clients_icons/hicolor/22x22/apps/xmpp-client-facebook.png similarity index 100% rename from clients_icons/icons/facebook.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-facebook.png diff --git a/clients_icons/icons/fin.png b/clients_icons/hicolor/22x22/apps/xmpp-client-fin.png similarity index 100% rename from clients_icons/icons/fin.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-fin.png diff --git a/clients_icons/icons/freqbot.png b/clients_icons/hicolor/22x22/apps/xmpp-client-freqbot.png similarity index 100% rename from clients_icons/icons/freqbot.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-freqbot.png diff --git a/clients_icons/icons/fring.png b/clients_icons/hicolor/22x22/apps/xmpp-client-fring.png similarity index 100% rename from clients_icons/icons/fring.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-fring.png diff --git a/clients_icons/icons/gabber.png b/clients_icons/hicolor/22x22/apps/xmpp-client-gabber.png similarity index 100% rename from clients_icons/icons/gabber.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-gabber.png diff --git a/clients_icons/icons/gadugadu.png b/clients_icons/hicolor/22x22/apps/xmpp-client-gadugadu.png similarity index 100% rename from clients_icons/icons/gadugadu.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-gadugadu.png diff --git a/clients_icons/icons/gaim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-gaim.png similarity index 100% rename from clients_icons/icons/gaim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-gaim.png diff --git a/clients_icons/icons/gismeteo.png b/clients_icons/hicolor/22x22/apps/xmpp-client-gismeteo.png similarity index 100% rename from clients_icons/icons/gismeteo.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-gismeteo.png diff --git a/clients_icons/icons/gizmo.png b/clients_icons/hicolor/22x22/apps/xmpp-client-gizmo.png similarity index 100% rename from clients_icons/icons/gizmo.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-gizmo.png diff --git a/clients_icons/icons/glu.png b/clients_icons/hicolor/22x22/apps/xmpp-client-glu.png similarity index 100% rename from clients_icons/icons/glu.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-glu.png diff --git a/clients_icons/icons/gluxibot.png b/clients_icons/hicolor/22x22/apps/xmpp-client-gluxibot.png similarity index 100% rename from clients_icons/icons/gluxibot.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-gluxibot.png diff --git a/clients_icons/icons/goim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-goim.png similarity index 100% rename from clients_icons/icons/goim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-goim.png diff --git a/clients_icons/icons/google.com.png b/clients_icons/hicolor/22x22/apps/xmpp-client-google.com.png similarity index 100% rename from clients_icons/icons/google.com.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-google.com.png diff --git a/clients_icons/icons/gossip.png b/clients_icons/hicolor/22x22/apps/xmpp-client-gossip.png similarity index 100% rename from clients_icons/icons/gossip.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-gossip.png diff --git a/clients_icons/icons/gush.png b/clients_icons/hicolor/22x22/apps/xmpp-client-gush.png similarity index 100% rename from clients_icons/icons/gush.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-gush.png diff --git a/clients_icons/icons/ichabber.png b/clients_icons/hicolor/22x22/apps/xmpp-client-ichabber.png similarity index 100% rename from clients_icons/icons/ichabber.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-ichabber.png diff --git a/clients_icons/icons/ichat.png b/clients_icons/hicolor/22x22/apps/xmpp-client-ichat.png similarity index 100% rename from clients_icons/icons/ichat.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-ichat.png diff --git a/clients_icons/icons/imov.png b/clients_icons/hicolor/22x22/apps/xmpp-client-imov.png similarity index 100% rename from clients_icons/icons/imov.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-imov.png diff --git a/clients_icons/icons/implus.png b/clients_icons/hicolor/22x22/apps/xmpp-client-implus.png similarity index 100% rename from clients_icons/icons/implus.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-implus.png diff --git a/clients_icons/icons/inluxmessenger.png b/clients_icons/hicolor/22x22/apps/xmpp-client-inluxmessenger.png similarity index 100% rename from clients_icons/icons/inluxmessenger.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-inluxmessenger.png diff --git a/clients_icons/icons/instango.png b/clients_icons/hicolor/22x22/apps/xmpp-client-instango.png similarity index 100% rename from clients_icons/icons/instango.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-instango.png diff --git a/clients_icons/icons/instantbird.png b/clients_icons/hicolor/22x22/apps/xmpp-client-instantbird.png similarity index 100% rename from clients_icons/icons/instantbird.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-instantbird.png diff --git a/clients_icons/icons/isida-bot.png b/clients_icons/hicolor/22x22/apps/xmpp-client-isida-bot.png similarity index 100% rename from clients_icons/icons/isida-bot.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-isida-bot.png diff --git a/clients_icons/icons/jabber.el.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jabber.el.png similarity index 100% rename from clients_icons/icons/jabber.el.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jabber.el.png diff --git a/clients_icons/icons/jabbim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jabbim.png similarity index 100% rename from clients_icons/icons/jabbim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jabbim.png diff --git a/clients_icons/icons/jabbin.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jabbin.png similarity index 100% rename from clients_icons/icons/jabbin.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jabbin.png diff --git a/clients_icons/icons/jabbroid.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jabbroid.png similarity index 100% rename from clients_icons/icons/jabbroid.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jabbroid.png diff --git a/clients_icons/icons/jabiru.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jabiru.png similarity index 100% rename from clients_icons/icons/jabiru.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jabiru.png diff --git a/clients_icons/icons/jajc.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jajc.png similarity index 100% rename from clients_icons/icons/jajc.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jajc.png diff --git a/clients_icons/icons/jappix.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jappix.png similarity index 100% rename from clients_icons/icons/jappix.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jappix.png diff --git a/clients_icons/icons/japyt.png b/clients_icons/hicolor/22x22/apps/xmpp-client-japyt.png similarity index 100% rename from clients_icons/icons/japyt.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-japyt.png diff --git a/clients_icons/icons/jasmine.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jasmine.png similarity index 100% rename from clients_icons/icons/jasmine.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jasmine.png diff --git a/clients_icons/icons/jbother.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jbother.png similarity index 100% rename from clients_icons/icons/jbother.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jbother.png diff --git a/clients_icons/icons/jeti.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jeti.png similarity index 100% rename from clients_icons/icons/jeti.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jeti.png diff --git a/clients_icons/icons/jicq.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jicq.png similarity index 100% rename from clients_icons/icons/jicq.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jicq.png diff --git a/clients_icons/icons/jimm-aspro.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jimm-aspro.png similarity index 100% rename from clients_icons/icons/jimm-aspro.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jimm-aspro.png diff --git a/clients_icons/icons/jimm.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jimm.png similarity index 100% rename from clients_icons/icons/jimm.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jimm.png diff --git a/clients_icons/icons/jit.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jit.png similarity index 100% rename from clients_icons/icons/jit.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jit.png diff --git a/clients_icons/icons/jmiranda.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jmiranda.png similarity index 100% rename from clients_icons/icons/jmiranda.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jmiranda.png diff --git a/clients_icons/icons/jtalk.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jtalk.png similarity index 100% rename from clients_icons/icons/jtalk.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jtalk.png diff --git a/clients_icons/icons/jubo.png b/clients_icons/hicolor/22x22/apps/xmpp-client-jubo.png similarity index 100% rename from clients_icons/icons/jubo.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-jubo.png diff --git a/clients_icons/icons/juick.png b/clients_icons/hicolor/22x22/apps/xmpp-client-juick.png similarity index 100% rename from clients_icons/icons/juick.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-juick.png diff --git a/clients_icons/icons/koolim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-koolim.png similarity index 100% rename from clients_icons/icons/koolim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-koolim.png diff --git a/clients_icons/icons/kopete.png b/clients_icons/hicolor/22x22/apps/xmpp-client-kopete.png similarity index 100% rename from clients_icons/icons/kopete.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-kopete.png diff --git a/clients_icons/icons/lampiro.png b/clients_icons/hicolor/22x22/apps/xmpp-client-lampiro.png similarity index 100% rename from clients_icons/icons/lampiro.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-lampiro.png diff --git a/clients_icons/icons/mabber.png b/clients_icons/hicolor/22x22/apps/xmpp-client-mabber.png similarity index 100% rename from clients_icons/icons/mabber.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-mabber.png diff --git a/clients_icons/icons/mail.google.com.png b/clients_icons/hicolor/22x22/apps/xmpp-client-mail.google.com.png similarity index 100% rename from clients_icons/icons/mail.google.com.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-mail.google.com.png diff --git a/clients_icons/icons/mailruagent.png b/clients_icons/hicolor/22x22/apps/xmpp-client-mailruagent.png similarity index 100% rename from clients_icons/icons/mailruagent.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-mailruagent.png diff --git a/clients_icons/icons/mailruagent.sis.png b/clients_icons/hicolor/22x22/apps/xmpp-client-mailruagent.sis.png similarity index 100% rename from clients_icons/icons/mailruagent.sis.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-mailruagent.sis.png diff --git a/clients_icons/icons/mandarin.png b/clients_icons/hicolor/22x22/apps/xmpp-client-mandarin.png similarity index 100% rename from clients_icons/icons/mandarin.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-mandarin.png diff --git a/clients_icons/icons/mcabber.png b/clients_icons/hicolor/22x22/apps/xmpp-client-mcabber.png similarity index 100% rename from clients_icons/icons/mcabber.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-mcabber.png diff --git a/clients_icons/icons/mchat.png b/clients_icons/hicolor/22x22/apps/xmpp-client-mchat.png similarity index 100% rename from clients_icons/icons/mchat.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-mchat.png diff --git a/clients_icons/icons/meebo.png b/clients_icons/hicolor/22x22/apps/xmpp-client-meebo.png similarity index 100% rename from clients_icons/icons/meebo.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-meebo.png diff --git a/clients_icons/icons/meetro.png b/clients_icons/hicolor/22x22/apps/xmpp-client-meetro.png similarity index 100% rename from clients_icons/icons/meetro.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-meetro.png diff --git a/clients_icons/icons/megafon.png b/clients_icons/hicolor/22x22/apps/xmpp-client-megafon.png similarity index 100% rename from clients_icons/icons/megafon.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-megafon.png diff --git a/clients_icons/icons/mig33.png b/clients_icons/hicolor/22x22/apps/xmpp-client-mig33.png similarity index 100% rename from clients_icons/icons/mig33.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-mig33.png diff --git a/clients_icons/icons/miranda.png b/clients_icons/hicolor/22x22/apps/xmpp-client-miranda.png similarity index 100% rename from clients_icons/icons/miranda.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-miranda.png diff --git a/clients_icons/icons/mirandahotcoffee.png b/clients_icons/hicolor/22x22/apps/xmpp-client-mirandahotcoffee.png similarity index 100% rename from clients_icons/icons/mirandahotcoffee.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-mirandahotcoffee.png diff --git a/clients_icons/icons/morange.png b/clients_icons/hicolor/22x22/apps/xmpp-client-morange.png similarity index 100% rename from clients_icons/icons/morange.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-morange.png diff --git a/clients_icons/icons/msnmessenger.png b/clients_icons/hicolor/22x22/apps/xmpp-client-msnmessenger.png similarity index 100% rename from clients_icons/icons/msnmessenger.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-msnmessenger.png diff --git a/clients_icons/icons/msnwebmessenger.png b/clients_icons/hicolor/22x22/apps/xmpp-client-msnwebmessenger.png similarity index 100% rename from clients_icons/icons/msnwebmessenger.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-msnwebmessenger.png diff --git a/clients_icons/icons/nicq.png b/clients_icons/hicolor/22x22/apps/xmpp-client-nicq.png similarity index 100% rename from clients_icons/icons/nicq.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-nicq.png diff --git a/clients_icons/icons/om.beeonline.ru.png b/clients_icons/hicolor/22x22/apps/xmpp-client-om.beeonline.ru.png similarity index 100% rename from clients_icons/icons/om.beeonline.ru.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-om.beeonline.ru.png diff --git a/clients_icons/icons/omnipresence.png b/clients_icons/hicolor/22x22/apps/xmpp-client-omnipresence.png similarity index 100% rename from clients_icons/icons/omnipresence.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-omnipresence.png diff --git a/clients_icons/icons/oneteamiphone.png b/clients_icons/hicolor/22x22/apps/xmpp-client-oneteamiphone.png similarity index 100% rename from clients_icons/icons/oneteamiphone.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-oneteamiphone.png diff --git a/clients_icons/icons/osiris.png b/clients_icons/hicolor/22x22/apps/xmpp-client-osiris.png similarity index 100% rename from clients_icons/icons/osiris.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-osiris.png diff --git a/clients_icons/icons/ovi-chat.png b/clients_icons/hicolor/22x22/apps/xmpp-client-ovi-chat.png similarity index 100% rename from clients_icons/icons/ovi-chat.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-ovi-chat.png diff --git a/clients_icons/icons/palm.png b/clients_icons/hicolor/22x22/apps/xmpp-client-palm.png similarity index 100% rename from clients_icons/icons/palm.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-palm.png diff --git a/clients_icons/icons/palringo.png b/clients_icons/hicolor/22x22/apps/xmpp-client-palringo.png similarity index 100% rename from clients_icons/icons/palringo.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-palringo.png diff --git a/clients_icons/icons/pandion.png b/clients_icons/hicolor/22x22/apps/xmpp-client-pandion.png similarity index 100% rename from clients_icons/icons/pandion.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-pandion.png diff --git a/clients_icons/icons/papla.png b/clients_icons/hicolor/22x22/apps/xmpp-client-papla.png similarity index 100% rename from clients_icons/icons/papla.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-papla.png diff --git a/clients_icons/icons/phpicq.png b/clients_icons/hicolor/22x22/apps/xmpp-client-phpicq.png similarity index 100% rename from clients_icons/icons/phpicq.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-phpicq.png diff --git a/clients_icons/icons/pidgin.png b/clients_icons/hicolor/22x22/apps/xmpp-client-pidgin.png similarity index 100% rename from clients_icons/icons/pidgin.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-pidgin.png diff --git a/clients_icons/icons/pigeon.png b/clients_icons/hicolor/22x22/apps/xmpp-client-pigeon.png similarity index 100% rename from clients_icons/icons/pigeon.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-pigeon.png diff --git a/clients_icons/icons/profanity.png b/clients_icons/hicolor/22x22/apps/xmpp-client-profanity.png similarity index 100% rename from clients_icons/icons/profanity.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-profanity.png diff --git a/clients_icons/icons/psi.png b/clients_icons/hicolor/22x22/apps/xmpp-client-psi.png similarity index 100% rename from clients_icons/icons/psi.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-psi.png diff --git a/clients_icons/icons/psiplus.png b/clients_icons/hicolor/22x22/apps/xmpp-client-psiplus.png similarity index 100% rename from clients_icons/icons/psiplus.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-psiplus.png diff --git a/clients_icons/icons/pyaim-t.png b/clients_icons/hicolor/22x22/apps/xmpp-client-pyaim-t.png similarity index 100% rename from clients_icons/icons/pyaim-t.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-pyaim-t.png diff --git a/clients_icons/icons/pyicq-t.png b/clients_icons/hicolor/22x22/apps/xmpp-client-pyicq-t.png similarity index 100% rename from clients_icons/icons/pyicq-t.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-pyicq-t.png diff --git a/clients_icons/icons/qip.png b/clients_icons/hicolor/22x22/apps/xmpp-client-qip.png similarity index 100% rename from clients_icons/icons/qip.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-qip.png diff --git a/clients_icons/icons/qippda.png b/clients_icons/hicolor/22x22/apps/xmpp-client-qippda.png similarity index 100% rename from clients_icons/icons/qippda.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-qippda.png diff --git a/clients_icons/icons/qnext.png b/clients_icons/hicolor/22x22/apps/xmpp-client-qnext.png similarity index 100% rename from clients_icons/icons/qnext.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-qnext.png diff --git a/clients_icons/icons/qq.png b/clients_icons/hicolor/22x22/apps/xmpp-client-qq.png similarity index 100% rename from clients_icons/icons/qq.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-qq.png diff --git a/clients_icons/icons/qutim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-qutim.png similarity index 100% rename from clients_icons/icons/qutim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-qutim.png diff --git a/clients_icons/icons/radio-t.png b/clients_icons/hicolor/22x22/apps/xmpp-client-radio-t.png similarity index 100% rename from clients_icons/icons/radio-t.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-radio-t.png diff --git a/clients_icons/icons/rnq.png b/clients_icons/hicolor/22x22/apps/xmpp-client-rnq.png similarity index 100% rename from clients_icons/icons/rnq.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-rnq.png diff --git a/clients_icons/icons/rss.png b/clients_icons/hicolor/22x22/apps/xmpp-client-rss.png similarity index 100% rename from clients_icons/icons/rss.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-rss.png diff --git a/clients_icons/icons/sameplace.png b/clients_icons/hicolor/22x22/apps/xmpp-client-sameplace.png similarity index 100% rename from clients_icons/icons/sameplace.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-sameplace.png diff --git a/clients_icons/icons/sapo.png b/clients_icons/hicolor/22x22/apps/xmpp-client-sapo.png similarity index 100% rename from clients_icons/icons/sapo.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-sapo.png diff --git a/clients_icons/icons/siejc.png b/clients_icons/hicolor/22x22/apps/xmpp-client-siejc.png similarity index 100% rename from clients_icons/icons/siejc.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-siejc.png diff --git a/clients_icons/icons/sim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-sim.png similarity index 100% rename from clients_icons/icons/sim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-sim.png diff --git a/clients_icons/icons/slick.png b/clients_icons/hicolor/22x22/apps/xmpp-client-slick.png similarity index 100% rename from clients_icons/icons/slick.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-slick.png diff --git a/clients_icons/icons/smack.png b/clients_icons/hicolor/22x22/apps/xmpp-client-smack.png similarity index 100% rename from clients_icons/icons/smack.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-smack.png diff --git a/clients_icons/icons/spark.png b/clients_icons/hicolor/22x22/apps/xmpp-client-spark.png similarity index 100% rename from clients_icons/icons/spark.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-spark.png diff --git a/clients_icons/icons/spectrum.png b/clients_icons/hicolor/22x22/apps/xmpp-client-spectrum.png similarity index 100% rename from clients_icons/icons/spectrum.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-spectrum.png diff --git a/clients_icons/icons/swift.png b/clients_icons/hicolor/22x22/apps/xmpp-client-swift.png similarity index 100% rename from clients_icons/icons/swift.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-swift.png diff --git a/clients_icons/icons/talk.google.com.png b/clients_icons/hicolor/22x22/apps/xmpp-client-talk.google.com.png similarity index 100% rename from clients_icons/icons/talk.google.com.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-talk.google.com.png diff --git a/clients_icons/icons/talkgadget.google.com.png b/clients_icons/hicolor/22x22/apps/xmpp-client-talkgadget.google.com.png similarity index 100% rename from clients_icons/icons/talkgadget.google.com.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-talkgadget.google.com.png diff --git a/clients_icons/icons/talkonaut.png b/clients_icons/hicolor/22x22/apps/xmpp-client-talkonaut.png similarity index 100% rename from clients_icons/icons/talkonaut.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-talkonaut.png diff --git a/clients_icons/icons/telepathy.freedesktop.org.png b/clients_icons/hicolor/22x22/apps/xmpp-client-telepathy.freedesktop.org.png similarity index 100% rename from clients_icons/icons/telepathy.freedesktop.org.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-telepathy.freedesktop.org.png diff --git a/clients_icons/icons/tipicim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-tipicim.png similarity index 100% rename from clients_icons/icons/tipicim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-tipicim.png diff --git a/clients_icons/icons/tkabber.png b/clients_icons/hicolor/22x22/apps/xmpp-client-tkabber.png similarity index 100% rename from clients_icons/icons/tkabber.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-tkabber.png diff --git a/clients_icons/icons/trillian.png b/clients_icons/hicolor/22x22/apps/xmpp-client-trillian.png similarity index 100% rename from clients_icons/icons/trillian.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-trillian.png diff --git a/clients_icons/icons/trillianbasic.png b/clients_icons/hicolor/22x22/apps/xmpp-client-trillianbasic.png similarity index 100% rename from clients_icons/icons/trillianbasic.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-trillianbasic.png diff --git a/clients_icons/icons/twitter.png b/clients_icons/hicolor/22x22/apps/xmpp-client-twitter.png similarity index 100% rename from clients_icons/icons/twitter.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-twitter.png diff --git a/clients_icons/icons/uim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-uim.png similarity index 100% rename from clients_icons/icons/uim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-uim.png diff --git a/clients_icons/icons/vacuum.png b/clients_icons/hicolor/22x22/apps/xmpp-client-vacuum.png similarity index 100% rename from clients_icons/icons/vacuum.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-vacuum.png diff --git a/clients_icons/icons/virtus.png b/clients_icons/hicolor/22x22/apps/xmpp-client-virtus.png similarity index 100% rename from clients_icons/icons/virtus.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-virtus.png diff --git a/clients_icons/icons/vkontakte.png b/clients_icons/hicolor/22x22/apps/xmpp-client-vkontakte.png similarity index 100% rename from clients_icons/icons/vkontakte.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-vkontakte.png diff --git a/clients_icons/icons/wannachat.png b/clients_icons/hicolor/22x22/apps/xmpp-client-wannachat.png similarity index 100% rename from clients_icons/icons/wannachat.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-wannachat.png diff --git a/clients_icons/icons/weather.com.png b/clients_icons/hicolor/22x22/apps/xmpp-client-weather.com.png similarity index 100% rename from clients_icons/icons/weather.com.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-weather.com.png diff --git a/clients_icons/icons/webicq.png b/clients_icons/hicolor/22x22/apps/xmpp-client-webicq.png similarity index 100% rename from clients_icons/icons/webicq.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-webicq.png diff --git a/clients_icons/icons/xeus.png b/clients_icons/hicolor/22x22/apps/xmpp-client-xeus.png similarity index 100% rename from clients_icons/icons/xeus.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-xeus.png diff --git a/clients_icons/icons/xfire.png b/clients_icons/hicolor/22x22/apps/xmpp-client-xfire.png similarity index 100% rename from clients_icons/icons/xfire.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-xfire.png diff --git a/clients_icons/icons/yabber.png b/clients_icons/hicolor/22x22/apps/xmpp-client-yabber.png similarity index 100% rename from clients_icons/icons/yabber.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-yabber.png diff --git a/clients_icons/icons/yahoo.png b/clients_icons/hicolor/22x22/apps/xmpp-client-yahoo.png similarity index 100% rename from clients_icons/icons/yahoo.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-yahoo.png diff --git a/clients_icons/icons/yaonline.png b/clients_icons/hicolor/22x22/apps/xmpp-client-yaonline.png similarity index 100% rename from clients_icons/icons/yaonline.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-yaonline.png diff --git a/clients_icons/icons/yaonlinej2me.png b/clients_icons/hicolor/22x22/apps/xmpp-client-yaonlinej2me.png similarity index 100% rename from clients_icons/icons/yaonlinej2me.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-yaonlinej2me.png diff --git a/clients_icons/icons/yaonlinesymbian.png b/clients_icons/hicolor/22x22/apps/xmpp-client-yaonlinesymbian.png similarity index 100% rename from clients_icons/icons/yaonlinesymbian.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-yaonlinesymbian.png diff --git a/clients_icons/icons/yaxim.png b/clients_icons/hicolor/22x22/apps/xmpp-client-yaxim.png similarity index 100% rename from clients_icons/icons/yaxim.png rename to clients_icons/hicolor/22x22/apps/xmpp-client-yaxim.png diff --git a/clients_icons/hicolor/32x32/apps/xmpp-client-bruno.png b/clients_icons/hicolor/32x32/apps/xmpp-client-bruno.png new file mode 100644 index 0000000..038cfb7 Binary files /dev/null and b/clients_icons/hicolor/32x32/apps/xmpp-client-bruno.png differ diff --git a/clients_icons/icons/conversations-legacy.png b/clients_icons/hicolor/32x32/apps/xmpp-client-conversations-legacy.png similarity index 100% rename from clients_icons/icons/conversations-legacy.png rename to clients_icons/hicolor/32x32/apps/xmpp-client-conversations-legacy.png diff --git a/clients_icons/icons/conversations.png b/clients_icons/hicolor/32x32/apps/xmpp-client-conversations.png similarity index 100% rename from clients_icons/icons/conversations.png rename to clients_icons/hicolor/32x32/apps/xmpp-client-conversations.png diff --git a/clients_icons/icons/dino.png b/clients_icons/hicolor/32x32/apps/xmpp-client-dino.png similarity index 100% rename from clients_icons/icons/dino.png rename to clients_icons/hicolor/32x32/apps/xmpp-client-dino.png diff --git a/clients_icons/icons/freize.png b/clients_icons/hicolor/32x32/apps/xmpp-client-freize.png similarity index 100% rename from clients_icons/icons/freize.png rename to clients_icons/hicolor/32x32/apps/xmpp-client-freize.png diff --git a/clients_icons/icons/google.png b/clients_icons/hicolor/32x32/apps/xmpp-client-google.png similarity index 100% rename from clients_icons/icons/google.png rename to clients_icons/hicolor/32x32/apps/xmpp-client-google.png diff --git a/clients_icons/icons/movim.png b/clients_icons/hicolor/32x32/apps/xmpp-client-movim.png similarity index 100% rename from clients_icons/icons/movim.png rename to clients_icons/hicolor/32x32/apps/xmpp-client-movim.png diff --git a/clients_icons/icons/pixart.png b/clients_icons/hicolor/32x32/apps/xmpp-client-pixart.png similarity index 100% rename from clients_icons/icons/pixart.png rename to clients_icons/hicolor/32x32/apps/xmpp-client-pixart.png diff --git a/clients_icons/icons/xabber.png b/clients_icons/hicolor/32x32/apps/xmpp-client-xabber.png similarity index 100% rename from clients_icons/icons/xabber.png rename to clients_icons/hicolor/32x32/apps/xmpp-client-xabber.png diff --git a/clients_icons/hicolor/icon-theme.cache b/clients_icons/hicolor/icon-theme.cache new file mode 100644 index 0000000..30af092 Binary files /dev/null and b/clients_icons/hicolor/icon-theme.cache differ diff --git a/clients_icons/hicolor/index.theme b/clients_icons/hicolor/index.theme new file mode 100644 index 0000000..2230716 --- /dev/null +++ b/clients_icons/hicolor/index.theme @@ -0,0 +1,28 @@ +[Icon Theme] +Name=hicolor +Comment=Icons for XMPP Clients + +# Directory list +Directories=16x16/apps,22x22/apps,32x32/apps,scalable/apps + +[16x16/apps] +Context=Applications +Size=16 +Type=Fixed + +[22x22/apps] +Context=Applications +Size=22 +Type=Fixed + +[32x32/apps] +Context=Applications +Size=32 +Type=Fixed + +[scalable/apps] +Context=Applications +Size=16 +MinSize=8 +MaxSize=512 +Type=Scalable \ No newline at end of file diff --git a/clients_icons/hicolor/scalable/apps/xmpp-client-gajim.svg b/clients_icons/hicolor/scalable/apps/xmpp-client-gajim.svg new file mode 100644 index 0000000..44c440f --- /dev/null +++ b/clients_icons/hicolor/scalable/apps/xmpp-client-gajim.svg @@ -0,0 +1,449 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Gajim + 28.10.2006 + + + Josef Vybíral + + + + + + + + + + + + + http://cornelius.gimp.cz + + + gajim + jabber + im + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/clients_icons/hicolor/scalable/apps/xmpp-client-sat.svg b/clients_icons/hicolor/scalable/apps/xmpp-client-sat.svg new file mode 100644 index 0000000..52e8d9a --- /dev/null +++ b/clients_icons/hicolor/scalable/apps/xmpp-client-sat.svg @@ -0,0 +1,727 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/clients_icons/icons/bombus-avalon.png b/clients_icons/icons/bombus-avalon.png deleted file mode 100644 index 0e967e0..0000000 Binary files a/clients_icons/icons/bombus-avalon.png and /dev/null differ diff --git a/clients_icons/icons/bombus-klub.png b/clients_icons/icons/bombus-klub.png deleted file mode 100644 index 4593b4c..0000000 Binary files a/clients_icons/icons/bombus-klub.png and /dev/null differ diff --git a/clients_icons/icons/bombus.png b/clients_icons/icons/bombus.png deleted file mode 100644 index f85843f..0000000 Binary files a/clients_icons/icons/bombus.png and /dev/null differ diff --git a/clients_icons/icons/bombusmod.png b/clients_icons/icons/bombusmod.png deleted file mode 100644 index 3c61539..0000000 Binary files a/clients_icons/icons/bombusmod.png and /dev/null differ diff --git a/clients_icons/icons/bombusng.png b/clients_icons/icons/bombusng.png deleted file mode 100644 index 7d333a5..0000000 Binary files a/clients_icons/icons/bombusng.png and /dev/null differ diff --git a/clients_icons/icons/bombuspl.png b/clients_icons/icons/bombuspl.png deleted file mode 100644 index bccece5..0000000 Binary files a/clients_icons/icons/bombuspl.png and /dev/null differ diff --git a/clients_icons/icons/bombusplus.png b/clients_icons/icons/bombusplus.png deleted file mode 100644 index 1e5a485..0000000 Binary files a/clients_icons/icons/bombusplus.png and /dev/null differ diff --git a/clients_icons/icons/bombusqd.png b/clients_icons/icons/bombusqd.png deleted file mode 100644 index 49ed15d..0000000 Binary files a/clients_icons/icons/bombusqd.png and /dev/null differ diff --git a/clients_icons/icons/gajim.png b/clients_icons/icons/gajim.png deleted file mode 100644 index 8c60bfc..0000000 Binary files a/clients_icons/icons/gajim.png and /dev/null differ