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 @@
+
+
+
+
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 @@
+
+
+
+
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