Exploring the roots and future of Internet Relay Chat

HexChat, KVIrc, Konversation : le point sur les clients IRC graphiques

J'ai passé mes premières années sur IRC avec mIRC sous Windows 98, puis BitchX dans un terminal Slackware. En 1997, les clients graphiques sous Linux étaient rares et instables. Vingt-sept ans plus tard, la situation a changé : vous avez le choix entre plusieurs clients GUI matures, chacun avec sa philosophie. Cet article fait le tri.

Pourquoi un client graphique en 2024

Les clients en terminal comme WeeChat ou Irssi restent excellents, mais un client graphique apporte des avantages concrets pour certains usages. La gestion multi-réseaux avec onglets visuels, le copier-coller riche, l'affichage inline d'URLs et la configuration par menus rendent l'accès à IRC moins austère pour les nouveaux venus.

Si vous administrez un réseau IRC et que vous voulez recommander un client à vos utilisateurs non-techniques, un GUI est souvent la meilleure option. J'ai vu des dizaines de gens abandonner IRC après trois minutes dans un terminal. Ce n'est pas une question de compétence — c'est une question de friction initiale.

L'autre cas d'usage, c'est le multitâche de bureau. Quand vous jonglez entre un IDE, un navigateur et IRC, un client graphique qui s'intègre aux notifications système de votre DE (Desktop Environment) devient un vrai gain de temps. Les clients modernes supportent les notifications natives via D-Bus sous Linux ou le centre de notifications sous Windows.

HexChat : le successeur de XChat

HexChat est né en 2009 comme fork de XChat quand celui-ci a adopté un modèle shareware sous Windows. Le code est en C, l'interface repose sur GTK. C'est probablement le client GUI le plus utilisé sur Linux aujourd'hui, même si le projet est en maintenance minimale depuis 2021.

L'installation est directe sur la plupart des distributions :

# Debian / Ubuntu
sudo apt install hexchat

# Fedora
sudo dnf install hexchat

# Arch
sudo pacman -S hexchat

# Windows — installeur disponible sur hexchat.github.io

Au premier lancement, HexChat propose une liste de réseaux préconfigurés. Vous pouvez en ajouter via HexChat → Network List → Add. La configuration d'un réseau type ressemble à ceci :

Servers:     irc.example.net/6697
SSL:         ✓ (coché)
Login method: SASL (username + password)
Charset:     UTF-8
Connect cmd: /join #canal1, /join #canal2

HexChat supporte les scripts en Python, Perl et Lua via des plugins. Un exemple classique — auto-identifier auprès de NickServ avec un script Python :

import hexchat

__module_name__ = "AutoAuth"
__module_version__ = "1.0"

def on_connect(word, word_eol, userdata):
    if hexchat.get_info("network") == "MonReseau":
        hexchat.command("msg NickServ IDENTIFY monpass")
    return hexchat.EAT_NONE

hexchat.hook_print("Connected", on_connect)
print("AutoAuth chargé")

Le fichier se place dans ~/.config/hexchat/addons/. HexChat le charge automatiquement au démarrage.

Conseil : Si vous migrez depuis XChat, vos fichiers de configuration dans ~/.xchat2/ sont en grande partie compatibles. Copiez-les dans ~/.config/hexchat/ et HexChat les reprendra sans modifications majeures.

Points forts de HexChat : léger (~15 Mo en RAM), interface familière, scripting Python mature, bonne gestion multi-réseau. Points faibles : développement quasi-arrêté, pas de support IRCv3 complet (manque message-tags, labeled-response), interface GTK2 qui vieillit.

KVIrc : le couteau suisse scriptable

KVIrc existe depuis 1998. J'ai utilisé la version 2.x sur un Pentium II et je me souviens d'avoir été impressionné par la quantité de fonctionnalités comparé à ce qu'offraient les autres clients de l'époque. Le projet est toujours actif, basé sur Qt, et disponible sur les trois plateformes majeures.

# Debian / Ubuntu
sudo apt install kvirc

# Fedora (RPM Fusion)
sudo dnf install kvirc

# Compilation depuis les sources
git clone https://github.com/kvirc/KVIrc.git
cd KVIrc
mkdir build && cd build
cmake .. -DWANT_KDE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

La particularité de KVIrc, c'est son langage de script intégré : KVS (KVIrc Script). C'est un langage complet avec variables, fonctions, conditions, boucles, et une API qui expose chaque aspect du client. Exemple d'un alias personnalisé :

# Alias /bk — ban+kick en une commande
alias(bk)
{
    if($0 == "")
    {
        echo "Usage: /bk nick [raison]"
        return
    }
    %host = $address($0, 2)
    if(%host != "")
    {
        mode $target +b *!*@%host
        kick $target $0 $1-
    }
}

KVIrc se distingue aussi par ses thèmes visuels poussés : vous pouvez personnaliser chaque pixel de l'interface, des bordures de fenêtre aux icônes de status. C'est à la fois un avantage (si vous aimez bidouiller) et un piège (certains thèmes communautaires sont illisibles).

Le support IRC est le plus complet des trois clients comparés ici : DCC, CTCP étendu, IPv6, SSL/TLS natif, support partiel d'IRCv3. KVIrc gère aussi les connexions via proxy SOCKS et HTTP.

Konversation : l'option KDE

Si votre bureau est KDE Plasma, Konversation est le choix naturel. Il s'intègre au système de notifications KDE, utilise KWallet pour stocker les mots de passe, et respecte les thèmes Breeze ou personnalisés.

# Installation
sudo apt install konversation   # Debian/Ubuntu
sudo dnf install konversation   # Fedora
sudo pacman -S konversation      # Arch

Konversation adopte une approche minimaliste : pas de langage de script custom, pas de thèmes extravagants, mais une interface propre et prévisible. La configuration se fait entièrement via les menus. Le stockage des identités et serveurs passe par les fichiers KDE standards dans ~/.local/share/konversation/.

Ce qui m'a toujours plu avec Konversation, c'est la gestion des logs. Chaque canal génère un fichier de log propre, horodaté, dans un format lisible. Vous pouvez configurer la rotation et le chemin de stockage dans Settings → Configure Konversation → Logging.

Le client supporte les fonctionnalités IRC standard : multi-serveur, DCC, CTCP, SSL. Il manque le support SASL natif dans les anciennes versions — vérifiez que vous avez au moins la version 22.12 si vous en avez besoin.

Attention : Konversation tire de nombreuses dépendances KDE/Qt. Sur un bureau GNOME ou XFCE, l'installation peut ajouter 200-400 Mo de paquets KDE. Ce n'est pas un problème technique, mais pesez le pour et le contre si l'espace disque ou la cohérence du DE comptent pour vous.

Autres clients à connaître

Srain — Client GTK moderne, écrit en C, avec une interface inspirée de Slack. Le projet est jeune mais prometteur, avec support IRCv3 et une UX pensée pour les utilisateurs habitués aux messageries modernes. Disponible en Flatpak.

Quassel — Architecture client/serveur : le "core" tourne sur un serveur et vous vous y connectez depuis le client Qt. Similaire à ZNC + client, mais intégré. Utile si vous voulez un bouncer sans installer ZNC séparément.

Pidgin + plugin IRC — Pidgin gère IRC via libpurple. Fonctionnel pour du basique, mais le support IRC est limité : pas de DCC, pas de CTCP avancé, pas de scripts. Je ne le recommande que si vous utilisez déjà Pidgin pour d'autres protocoles.

mIRC — Toujours vivant sous Windows, toujours shareware après 30 jours. Son langage de script MSL reste un écosystème à part entière. Si vous êtes exclusivement sous Windows et que les scripts mIRC sont votre quotidien, rien ne le remplace vraiment.

Tableau comparatif

Voici un résumé des caractéristiques principales :

┌─────────────┬──────────┬───────┬───────────────┬────────┬────────┐
│ Client      │ Toolkit  │ OS    │ Script        │ IRCv3  │ Actif  │
├─────────────┼──────────┼───────┼───────────────┼────────┼────────┤
│ HexChat     │ GTK      │ L/W/M │ Python/Perl   │ Partiel│ Maint. │
│ KVIrc       │ Qt       │ L/W/M │ KVS (natif)   │ Partiel│ Oui    │
│ Konversation│ Qt/KDE   │ L     │ Non           │ Basique│ Oui    │
│ Srain       │ GTK      │ L     │ Non           │ Oui    │ Oui    │
│ Quassel     │ Qt       │ L/W/M │ Non           │ Partiel│ Oui    │
│ mIRC        │ Win32    │ W     │ MSL (natif)   │ Partiel│ Oui    │
└─────────────┴──────────┴───────┴───────────────┴────────┴────────┘
L=Linux  W=Windows  M=macOS

Configuration commune et astuces

Quel que soit le client, certains réglages sont universels et méritent votre attention dès la première connexion.

Encodage UTF-8. Assurez-vous que votre client envoie et reçoit en UTF-8. Les problèmes d'accents tronqués sont presque toujours liés à un mauvais encodage. Sur HexChat : Settings → Preferences → Interface → Input box → Default character set → UTF-8. Sur KVIrc : Settings → Configure KVIrc → IRC → Default Encoding.

SASL pour l'authentification. Si le réseau le supporte, préférez SASL à l'identification manuelle via NickServ. SASL authentifie avant la jointure des canaux, ce qui évite de vous retrouver sous un nick non-identifié pendant une seconde. Configuration HexChat :

Network List → votre réseau → Edit
Login method: SASL (username + password)
User name: votre_compte
Password: votre_mot_de_passe

SSL/TLS obligatoire. Connectez-vous toujours sur le port TLS (généralement 6697). Vérifiez que l'option "Accept invalid certificates" est désactivée, sauf si vous savez exactement pourquoi vous la cochez.

Logs. Activez les logs avec horodatage. Vous me remercierez le jour où vous chercherez une information partagée il y a trois mois dans un canal. Format recommandé : un fichier par canal, par jour.

# Exemple de chemin de log structuré
~/.config/hexchat/logs/
├── MonReseau/
│   ├── #canal1/
│   │   ├── 2024-01-15.log
│   │   └── 2024-01-16.log
│   └── #canal2/
│       └── ...

Notifications. Configurez les notifications pour les highlights (mentions de votre nick) et les messages privés. Désactivez les notifications pour les joins/parts/quits — sauf si vous opérez un canal et que vous avez besoin de surveiller l'activité.

Conseil : Sur KVIrc, l'option "Minimize to tray on close" est activée par défaut. Si vous pensez avoir fermé KVIrc mais qu'il tourne encore, regardez la zone de notification système.

Pour les connexions multi-réseaux, tous ces clients supportent la configuration de plusieurs identités. Utilisez-en une par réseau si vos pseudos diffèrent. Cela évite les confusions d'identification SASL.

Questions fréquentes

HexChat est-il abandonné ?

Pas officiellement, mais le développement est quasi-arrêté depuis 2021. Le dépôt GitHub accepte encore des pull requests de maintenance, et les distributions continuent de le packager. Il reste fonctionnel pour un usage quotidien, mais ne comptez pas sur de nouvelles fonctionnalités ou un support IRCv3 complet.

Quel client choisir si je débute sur IRC ?

HexChat si vous êtes sous GNOME/XFCE/autre, Konversation si vous êtes sous KDE. Les deux sont simples à configurer et fonctionnent sans surprise. Si vous voulez un look plus moderne, essayez Srain en Flatpak.

Peut-on utiliser un client graphique avec un bouncer ZNC ?

Oui, tous les clients listés ici se connectent à ZNC comme à un serveur IRC classique. Configurez l'adresse de votre ZNC comme serveur, avec le port et le mot de passe au format user/network:password. HexChat et KVIrc gèrent particulièrement bien les connexions ZNC multi-réseaux.

KVIrc consomme-t-il beaucoup de ressources ?

Plus que HexChat, moins que vous ne le pensez. Sur une machine moderne, comptez 40-80 Mo de RAM avec 5-10 canaux ouverts. La consommation CPU est négligeable en dehors du chargement de thèmes lourds. Si vous compilez depuis les sources, désactivez les modules dont vous n'avez pas besoin pour réduire l'empreinte.