J'ai resiste a WeeChat pendant des annees. J'etais un irssiste convaincu. Puis un collegue m'a montre le relay protocol — se connecter a WeeChat depuis un navigateur web, depuis un telephone, depuis n'importe ou. J'ai installe WeeChat le soir meme. Pas pour remplacer irssi partout — mais pour les situations ou un client web est la seule option. Depuis, j'utilise les deux. WeeChat quand je veux de la flexibilite, irssi quand je veux de la simplicite.
Pourquoi WeeChat
WeeChat (Wee Enhanced Environment for Chat) est un client IRC en mode texte, comme irssi, mais avec une architecture plus moderne. Ecrit en C avec un systeme de plugins extensible, il supporte nativement Python, Perl, Ruby, Lua, et d'autres langages pour les scripts.
Ce qui distingue WeeChat :
- Relay protocol : Un protocole binaire qui permet a des clients distants de se connecter a WeeChat et de l'utiliser comme un bouncer avec une interface riche. C'est la killer feature.
- Plugins multi-langage : Python, Perl, Ruby, Lua, PHP, Javascript, Guile. Vous ecrivez dans le langage que vous connaissez.
- Triggers : Un systeme de regles conditions/actions integre qui remplace beaucoup de scripts simples.
- Configuration granulaire : Tout est configurable via
/set. Plus de 500 options. C'est a la fois une force et un obstacle — la decouverte prend du temps. - Interface riche : Barres personnalisables, couleurs 256, freeform windows, mouse support.
Configuration avancee
# Serveur avec SASL :
/server add libera irc.libera.chat/6697 -ssl
/set irc.server.libera.nicks "VotreNick,VotreNick_"
/set irc.server.libera.sasl_username "VotreNick"
/set irc.server.libera.sasl_password "votrepassword"
/set irc.server.libera.sasl_mechanism plain
/set irc.server.libera.autoconnect on
/set irc.server.libera.autojoin "#canal1,#canal2,#canal3"
# Apparence :
/set weechat.look.buffer_time_format "%H:%M:%S"
/set weechat.look.prefix_align_max 15
/set weechat.look.nick_color_force ""
/set buflist.format.buffer "${format_number}${indent}${format_nick_prefix}${color_hotlist}${format_name}"
# Barre de buffers a gauche :
/set weechat.bar.buflist.position left
/set weechat.bar.buflist.size_max 25
# Barre de nicks a droite :
/set weechat.bar.nicklist.position right
/set weechat.bar.nicklist.size_max 20
# Raccourcis clavier :
/key bind meta-n /buffer +1 # Alt+n = buffer suivant
/key bind meta-p /buffer -1 # Alt+p = buffer precedent
/key bind meta-g /go # Alt+g = recherche buffer
# Filtres (cacher les joins/parts) :
/filter add irc_smart * irc_smart_filter *
/set irc.look.smart_filter on
/set irc.look.smart_filter_delay 5
# Les joins/parts sont caches sauf si la personne
# a parle dans les 5 dernieres minutes
# Securiser les mots de passe :
/secure passphrase VotrePassphraseSecure
/secure set libera_password votrepassword
/set irc.server.libera.sasl_password "${sec.data.libera_password}"
/save
/secure pour stocker les mots de passe. Les donnees securisees sont chiffrees avec votre passphrase dans ~/.config/weechat/sec.conf. Sans ca, les mots de passe sont en clair dans irc.conf.Systeme de plugins
# Gestionnaire de scripts integre :
/script install go.py # Navigation rapide
/script install colorize_nicks.py # Couleurs par nick
/script install buffer_autoclose.py # Ferme les buffers inactifs
/script install urlgrab.py # Collecte les URLs
/script install spell.py # Correcteur orthographique
# Lister les scripts installes :
/script list -i
# Rechercher un script :
/script search notification
# Les plugins natifs (compiles en C) :
# irc -> Protocole IRC
# relay -> Relay protocol
# trigger -> Systeme de triggers
# exec -> Execution de commandes shell
# fifo -> Controle par pipe Unix
# logger -> Logging des messages
# spell -> Correction orthographique (aspell/enchant)
# script -> Gestionnaire de scripts
# Voir les plugins charges :
/plugin list
# Les langages de script disponibles :
# python, perl, ruby, lua, php, javascript, guile
# Chacun est un plugin qui charge les scripts
# de son langage.
Scripts Python
# Ecrire un script WeeChat en Python :
# ~/.config/weechat/python/monscript.py
import weechat
SCRIPT_NAME = "monscript"
SCRIPT_AUTHOR = "VotreNom"
SCRIPT_VERSION = "1.0"
SCRIPT_LICENSE = "MIT"
SCRIPT_DESC = "Description du script"
def mon_callback(data, buffer, args):
"""Callback pour la commande /monscript"""
weechat.prnt(buffer, "Mon script fonctionne !")
return weechat.WEECHAT_RC_OK
def on_message(data, signal, signal_data):
"""Callback pour les messages publics"""
parsed = weechat.info_get_hashtable(
"irc_message_parse", {"message": signal_data})
nick = parsed["nick"]
channel = parsed["channel"]
text = parsed["text"]
if text.startswith("!ping"):
server = signal.split(",")[0]
weechat.command("",
f"/msg -server {server} {channel} pong, {nick}")
return weechat.WEECHAT_RC_OK
if __name__ == "__main__":
weechat.register(
SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION,
SCRIPT_LICENSE, SCRIPT_DESC, "", "")
# Enregistrer une commande :
weechat.hook_command(
"monscript", # Nom de la commande
"Description", # Description
"[args]", # Arguments
"Details", # Details
"", # Completion
"mon_callback", # Callback
"" # Data
)
# Ecouter les messages IRC :
weechat.hook_signal(
"*,irc_in2_privmsg",
"on_message",
""
)
# Charger le script :
# /python load monscript.py
# Autoload :
# ln -s ../monscript.py ~/.config/weechat/python/autoload/
L'API WeeChat est coherente entre tous les langages. Les noms de fonctions sont les memes en Python, Perl, Ruby. Si vous connaissez l'API en Python, vous pouvez lire un script Perl sans difficulte.
Relay et Glowing Bear
Le relay protocol est la fonctionnalite qui rend WeeChat unique parmi les clients IRC terminal. Il transforme WeeChat en serveur auquel des clients riches peuvent se connecter.
# Activer le relay :
/relay add ssl.weechat 9001
# (port 9001 en TLS)
# Configurer le mot de passe :
/set relay.network.password "votremotdepasse"
# Ou avec hash (plus sur) :
/set relay.network.password_hash_algo "pbkdf2+sha512"
/secure set relay_password "votremotdepasse"
/set relay.network.password "${sec.data.relay_password}"
# TLS : WeeChat utilise le meme certificat
# que pour les connexions IRC. Ou configurez :
/set relay.network.tls_cert_key \
"/home/user/.config/weechat/relay.pem"
# Generer un certificat auto-signe :
# openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 \
# -nodes -keyout relay.pem -out relay.crt \
# -subj "/CN=weechat-relay"
# cat relay.crt >> relay.pem
# Verifier les connexions :
/relay list
# Clients relay compatibles :
# - Glowing Bear (web) : https://www.glowing-bear.org/
# - weechat-android (Android)
# - WeeChatRN (React Native / iOS + Android)
# - wee-slack (passerelle Slack)
Glowing Bear est l'interface web de reference pour le relay WeeChat. C'est une application web qui se connecte a votre WeeChat et affiche tous vos buffers avec une interface moderne. Vous pouvez l'heberger vous-meme ou utiliser l'instance publique sur glowing-bear.org (la connexion est directe entre votre navigateur et votre WeeChat — le site ne voit pas vos messages).
Triggers
Les triggers sont un systeme de regles integre qui execute des actions en reponse a des evenements. C'est comme un mini-langage de scripting sans ecrire de code.
# Syntaxe : /trigger add NOM HOOK ARGUMENTS CONDITIONS REGEX COMMANDE
# Exemple 1 : Remplacer les URLs YouTube par le titre
/trigger add youtube modifier weechat_print \
"${tg_tag_nick}" \
"/https:\/\/www\.youtube\.com\/watch\?v=([a-zA-Z0-9_-]+)/https://youtu.be/${re:1}/"
# Exemple 2 : Notification sonore sur highlight
/trigger add beep_on_highlight print ""
"${tg_highlight}" "" "/exec -norc -bg aplay /usr/share/sounds/notification.wav"
# Exemple 3 : Masquer les messages de join/part
# (alternative au smart filter)
/trigger add hide_joinpart modifier weechat_print \
"${tg_tag_irc_command} =~ ^(JOIN|PART|QUIT)$" \
"" "/print -stdout \x1b[0m"
# Lister les triggers actifs :
/trigger list
# Monitorer les triggers (debug) :
/trigger monitor on
# Desactiver un trigger temporairement :
/trigger disable nom_trigger
/trigger enable nom_trigger
Les triggers remplacent beaucoup de scripts simples. Avant d'ecrire un script pour une tache simple (filtrage, remplacement, notification), verifiez si un trigger peut faire le travail. C'est plus leger et plus facile a maintenir.
Multi-protocole
# WeeChat peut se connecter a IRC, mais aussi a :
# Matrix (via le plugin weechat-matrix) :
# Installation :
# git clone https://github.com/poljar/weechat-matrix.git
# pip install -r requirements.txt
# Copier main.py et matrix/ dans ~/.config/weechat/python/
/python load matrix/main.py
/matrix server add monserveur matrix.org
/set matrix.server.monserveur.username "@user:matrix.org"
/set matrix.server.monserveur.password "motdepasse"
/matrix connect monserveur
# Slack (via wee-slack) :
# pip install websocket-client
# Copier wee_slack.py dans ~/.config/weechat/python/
/python load wee_slack.py
# Suivre les instructions pour obtenir un token Slack
# XMPP (via le plugin jabber.py ou biboumi)
# Biboumi est un bridge XMPP <-> IRC
# qui s'integre bien avec WeeChat via le plugin IRC standard
# Le resultat : tous vos chats (IRC, Matrix, Slack)
# dans une seule interface WeeChat.
# Navigation avec /go, triggers communs, logging unifie.
Questions frequentes
WeeChat ou ZNC + client ?
WeeChat avec relay remplace ZNC pour beaucoup d'usages. Vous avez le bouncer (WeeChat reste connecte) et l'interface riche (Glowing Bear ou weechat-android) dans un seul outil. ZNC reste utile si vous voulez utiliser des clients IRC differents (irssi sur le serveur, HexChat sur le desktop) qui se connectent au meme bouncer.
WeeChat consomme combien de memoire ?
WeeChat de base : 30-50 Mo. Avec des scripts Python et le relay : 50-100 Mo. Avec le plugin Matrix et plusieurs serveurs : 100-200 Mo. Plus gourmand qu'irssi (5-15 Mo) mais raisonnable. La consommation augmente avec le nombre de buffers ouverts et la longueur des backlogs.
Comment migrer d'irssi a WeeChat ?
Il n'y a pas d'outil de migration automatique. Reconfigurez vos serveurs, canaux, et scripts manuellement. Pour les scripts Perl, certains fonctionnent dans les deux avec des modifications mineures. Le plus long est de retrouver les equivalents de vos scripts irssi favoris dans l'ecosysteme WeeChat — mais la plupart existent.