J'utilise irssi depuis 2001. Vingt-quatre ans. J'ai essaye tous les autres clients — WeeChat, HexChat, Konversation, mIRC, et meme le client telnet brut. Je reviens toujours a irssi. Pas parce qu'il est le meilleur objectivement — WeeChat est probablement plus fonctionnel. Mais irssi fait exactement ce que je veux, ne fait rien que je ne veux pas, et tient dans un terminal. Quand votre workflow est ssh + tmux + irssi, rien ne le remplace.
Pourquoi irssi
irssi est un client IRC en mode texte, ecrit en C, avec un systeme de scripts en Perl. Il tourne dans un terminal, ce qui signifie qu'il fonctionne sur n'importe quel serveur accessible par SSH. Lancez-le dans un screen ou tmux, deconnectez-vous, revenez le lendemain — il est toujours la, connecte.
Les avantages d'irssi :
- Leger : Quelques Mo de RAM. Tourne sur des machines avec 64 Mo sans probleme.
- Stable : Des uptimes de mois sans crash. Le code est mature et les bugs sont rares.
- Terminal : Pas besoin de serveur graphique. Ideal pour les serveurs headless.
- Scriptable : Perl complet integre. Pas un sous-ensemble — le Perl complet avec CPAN.
- Personnalisable : Themes, layouts, keybindings — tout est configurable.
Les inconvenients : l'interface est Spartan. Pas de liste de nicks visible par defaut (il faut un script). Pas de mise en forme riche. La courbe d'apprentissage initiale est raide si vous venez d'un client graphique.
Configuration de base
# Fichier de config : ~/.irssi/config
# Ne l'editez pas directement — utilisez /SET et /SAVE
# Configuration d'un serveur :
/network add -nick VotreNick -user VotreUser Libera
/server add -auto -tls -tls_verify \
-network Libera irc.libera.chat 6697
/channel add -auto #canal1 Libera
/channel add -auto #canal2 Libera
# Identification automatique :
/network add -autosendcmd "/msg NickServ IDENTIFY motdepasse ;wait 2000" Libera
# Ou mieux, avec SASL :
/network add -sasl_username VotreNick \
-sasl_password motdepasse \
-sasl_mechanism PLAIN Libera
# Parametres d'affichage :
/SET theme votre_theme
/SET timestamps ON
/SET timestamp_format %H:%M:%S
/SET show_nickmode_empty OFF
/SET autocomplete_command ON
/SET scroll_page_count /2 # Scroll demi-page
# Fenetres :
/SET use_status_window ON
/SET autocreate_own_query ON
/SET autoclose_query 0 # Pas de fermeture auto
# Logging :
/SET autolog ON
/SET autolog_path ~/irclogs/%Y/$tag/$0.%m-%d.log
/SAVE
La configuration d'irssi est stockee dans ~/.irssi/config. C'est un fichier texte structure, mais il est fortement recommande de ne le modifier que via les commandes /SET et /SAVE. L'edition manuelle risque de casser la syntaxe.
autosendcmd pour l'identification. Avec SASL, l'identification se fait pendant la connexion, avant de rejoindre les canaux. Avec autosendcmd, il y a une fenetre de temps ou vous etes connecte mais pas identifie — et votre hostname reel est visible avant que le cloak ne s'applique.Themes
Le theme controle l'apparence de tout ce qu'irssi affiche : messages, notices, joins, parts, modes, barres de statut.
# Installer un theme :
# Telecharger le .theme dans ~/.irssi/
cd ~/.irssi/
wget https://irssi-import.github.io/themes/weed.theme
# Activer :
/SET theme weed
/SAVE
# Themes populaires :
# - weed : propre, lisible, couleurs discretes
# - xchat : imite l'apparence de XChat/HexChat
# - solarized : pour les adeptes du theme Solarized
# - fear : minimaliste, peu de couleurs
# Modifier un theme :
# Les themes sont des fichiers texte avec un format specifique.
# Chaque element d'interface est une ligne :
# "element" = "format";
# Exemples de personnalisation :
# Dans votre .theme :
abstracts = {
# Timestamp :
timestamp = "%K$*%n";
# Nicknames dans les messages :
msgnick = "%K<%n$0$1-%K>%n %|";
# Action (/me) :
action_core = "%W * $*%n";
};
# Format des couleurs irssi :
# %K = gris fonce %k = noir
# %R = rouge clair %r = rouge
# %G = vert clair %g = vert
# %Y = jaune %y = brun
# %B = bleu clair %b = bleu
# %M = magenta clair %m = magenta
# %C = cyan clair %c = cyan
# %W = blanc %w = gris
# %n = reset
Scripts Perl
Les scripts Perl sont la force d'irssi. Le depot officiel (scripts.irssi.org) contient des centaines de scripts maintenus par la communaute.
# Installer un script :
mkdir -p ~/.irssi/scripts/autorun
cd ~/.irssi/scripts
# Telecharger le script :
wget https://scripts.irssi.org/scripts/nickcolor.pl
# Autorun (charge au demarrage) :
ln -s ../nickcolor.pl autorun/nickcolor.pl
# Charger manuellement :
/SCRIPT LOAD nickcolor.pl
# Scripts essentiels :
# nickcolor.pl : couleur differente par nick
# -> Indispensable pour distinguer les interlocuteurs
# trackbar.pl : barre de separation des nouveaux messages
# -> Montre ou vous avez arrete de lire
# adv_windowlist.pl : liste de fenetres amelioree
# -> Compacte, avec indicateurs d'activite
# nicklist.pl : liste des nicks a droite
# -> Affiche la liste des utilisateurs (necessite un
# terminal large ou screen/tmux en split)
# usercount.pl : compteur d'utilisateurs dans la statusbar
# go.pl : navigation rapide entre fenetres
# -> /GO #canal au lieu de /WINDOW GOTO numero
# hilightwin.pl : fenetre separee pour les highlights
# -> Tous les messages qui vous mentionnent dans
# une fenetre dediee
# Charger tous les scripts autorun :
/SCRIPT LOAD autorun/nickcolor.pl
/SCRIPT LOAD autorun/trackbar.pl
/SCRIPT LOAD autorun/adv_windowlist.pl
Ecrire un script irssi en Perl :
# ~/.irssi/scripts/monscript.pl
use strict;
use warnings;
use Irssi;
our $VERSION = '1.0';
our %IRSSI = (
name => 'monscript',
description => 'Description du script',
authors => 'Votre Nom',
license => 'MIT',
);
# Reagir a un message public :
sub on_public_message {
my ($server, $msg, $nick, $address, $target) = @_;
if ($msg =~ /^!uptime$/i) {
my $uptime = `uptime`;
chomp $uptime;
$server->command("MSG $target $uptime");
}
}
Irssi::signal_add('message public', 'on_public_message');
# Ajouter une commande /monscript :
sub cmd_monscript {
my ($data, $server, $witem) = @_;
Irssi::print("Mon script fonctionne ! Argument : $data");
}
Irssi::command_bind('monscript', 'cmd_monscript');
Multi-serveur
# Configurer plusieurs reseaux :
/network add Libera
/server add -auto -tls -network Libera irc.libera.chat 6697
/network add -sasl_username nick -sasl_password pass \
-sasl_mechanism PLAIN Libera
/channel add -auto #canal1 Libera
/network add OFTC
/server add -auto -tls -network OFTC irc.oftc.net 6697
/channel add -auto #debian OFTC
/network add MonReseau
/server add -auto -tls -network MonReseau \
irc.mondomaine.com 6697
/channel add -auto #general MonReseau
# Navigation entre reseaux :
/WINDOW GOTO #canal1 # Aller au canal (peu importe le reseau)
Alt+1, Alt+2, ... # Aller a la fenetre par numero
# Envoyer une commande sur un reseau specifique :
/MSG -Libera NickServ INFO pseudo
/MSG -OFTC NickServ INFO pseudo
# Deconnecter/reconnecter un reseau :
/DISCONNECT Libera
/CONNECT Libera
# Organiser les fenetres par reseau :
/LAYOUT SAVE # Sauvegarder l'arrangement des fenetres
Le proxy integre
irssi a un module proxy integre. Il permet d'utiliser irssi comme un bouncer : d'autres clients IRC se connectent a irssi, qui relaie les messages. C'est une alternative legere a ZNC.
# Activer le proxy :
/LOAD proxy
/SET irssiproxy_password votremotdepasse
/SET irssiproxy_ports Libera=2777 OFTC=2778
/SET irssiproxy_bind 0.0.0.0
# Chaque reseau a son propre port.
# Le client se connecte sur le port correspondant.
# Depuis un autre client :
# Serveur : votre.serveur.irssi
# Port : 2777 (pour Libera)
# Mot de passe : votremotdepasse
# Le proxy relaie les messages des deux cotes.
# Les messages recus par irssi apparaissent
# aussi dans le client connecte au proxy.
# Avantage sur ZNC : pas de logiciel supplementaire.
# Inconvenient : pas de buffer replay complet.
# Le proxy relaie en temps reel mais ne stocke pas
# l'historique des messages pour les rejouer.
Notifications
# Notifications par script :
# fnotify.pl : ecrit les highlights dans un fichier
# Combiné avec un script local qui surveille le fichier
# via SSH, vous recevez des notifications desktop.
# Methode SSH + inotify :
# Sur le serveur (irssi), fnotify.pl ecrit dans ~/.irssi/fnotify
# Sur votre machine locale :
ssh user@serveur "tail -f ~/.irssi/fnotify" | \
while read line; do
notify-send "irssi" "$line"
done
# notify_send.pl : envoie des notifications via libnotify
# (fonctionne seulement si irssi tourne en local)
# Methode moderne avec screen/tmux :
# tmux peut afficher des alertes quand une fenetre a
# de l'activite. Combinez avec les flags d'activite d'irssi
# pour savoir quand un canal a de nouveaux messages.
# Dans tmux.conf :
# setw -g monitor-activity on
# set -g visual-activity on
# Highlight (mentions) :
/HILIGHT -regexp votrenick
/HILIGHT -regexp votre_autre_nick
/HILIGHT -regexp motcle_important
# Son sur highlight (terminal bell) :
/SET bell_beeps ON
/SET beep_msg_level HILIGHT
Questions frequentes
irssi ou WeeChat en 2025 ?
WeeChat est objectivement plus moderne : support natif des plugins Python, interface TUI plus riche, relay protocol integre. irssi est plus stable, plus leger, et plus simple si vous n'avez pas besoin des fonctionnalites avancees. Si vous debutez, WeeChat est le meilleur choix. Si vous utilisez irssi depuis 15 ans et que tout fonctionne, il n'y a aucune raison de migrer.
Comment afficher la liste des nicks ?
Chargez le script nicklist.pl. Il affiche la liste des nicks dans un panneau lateral. Necessite un terminal suffisamment large (120+ colonnes) ou un split screen dans tmux. Alternative : /NAMES pour voir la liste ponctuellement.
Peut-on utiliser irssi avec Matrix ou Discord ?
Pas directement. irssi est un client IRC pur. Pour Matrix, vous pouvez passer par un bridge IRC (comme le bridge Libera.Chat/Matrix) et vous connecter au cote IRC du bridge. Pour Discord, le bridge bitlbee permet d'acceder a Discord via un protocole IRC. L'experience est limitee dans les deux cas.