Howto Irssi

Howto irssi

Installation

# apt install irssi

Utilisation de base

/connect irc.example.com
/connect -4 irc.example.com
/connect -tls irc.example.com
/connect irc.example.com 6667 passwd nick

/join #channel
/part

/query <nick>
/query

/load
/save

/RMRECONNS

/quit

racourcis clavier

Echap + a = Se déplacer vers le dernier message le plus important
Ctrl + n = Se déplacer au salon suivant
Ctrl + p = Se déplacer au précédent salon

Syntaxe Vim irssilog

$ mkdir -p ~/.vim/syntax
$ wget 'http://www.vim.org/scripts/download_script.php?src_id=10584' -O ~/.vim/syntax/irssilog.vim

vim 2016-08.log
:syntax on
:set syntax=irssilog

Gérer le layout des windows

/WINDOW show x # créer une vue splité sur la fenêtre x
/WINDOW close # fermer la fenêtre courante
/WINDOW shrink|grow # rétrécir ou agrandir la fenêtre courante
/WINDOW balance # taille des fenêtres visible à l'identique
/WINDOW move x # déplace la fenêtre actuelle sur le numéro x
/WINDOW move UP # déplace la fenêtre sur celle du dessus
/WINDOW number x # change le numéro de la fenêtre active
/WINDOW show x # séparer la frame en deux avec la fenêtre x affiché : il faut que le mode 'sticky' soit désactivé pour cette fenêtre /WINDOW stick off
/WINDOW log ON <file> #activer les logs pour cette fenêtre <- afin de faire une surveillance sur le fichier ou autre possibilité

Ne pas hésiter à sauvegarder sa session actuelle (thème) :

/save

Action selon touche pressée

/BIND ^[OP key F1
/BIND ^[11~ key F1
/BIND F1 /me a besoin d'aide !

Envoyer une commande CTCP à un utilisateur

/CTCP user (PING|VERSION|USERINFO|CLIENTINFO|TIME)

Loguer toutes les conversations

Log les channels mais aussi les conversations privés :

/SET autolog_path ~/irclogs/irssi-%Y-%m-%d
/SET autolog ON

Ne pas loguer certaines fenêtres

Lorsqu’on se connecte et que le logging est activé, son mot de passe sera écrit dans les logs :

--- Log opened Mon Feb 09 15:07:36 2026
[…]
15:07 -!- Irssi: Starting query in localhost with NickServ
15:07 <foo> IDENTIFY PASSWORD
15:07 -NickServ(services@services.irc.example.com)- Password accepted - you are now recognized.

Une astuce est de ne pas loguer ce qui est dit dans la fenêtre dans laquelle on échange avec NickServ :

/SET autolog_ignore_targets example/NickServ

Enregistrer son pseudo

Remplacer PASSWORD et l’e-mail.

/msg NickServ REGISTER PASSWORD foo@example.com

Références :

Se connecter

Remplacer foo, le pseudo, et PASSWORD.

/msg NickServ IDENTIFY foo PASSWORD

Highlight de son pseudo

/highlight mon-pseudo

Pour lister les highlights :

/highlight

Pour être notifié à chaque message dans le canal #foo :

/highlight -regexp -channels #foo ^

Pour désactiver tout highlight personnalisé:

/dehighlight 1

Le chiffre 1 représente l’ordre à laquelle on ajoute les filtres.

Levels

Des “levels” sont attribués aux messages en fonction de leur type. On peut en obtenir la liste avec la commande :

/help levels

Ignorer des messages

La commande ignore permet de ne pas afficher certains messages. On peut les ignorer en fonction d’un mask, d’un channel et d’un level. Attention, les messages ne seront plus affichés (à l’exception du level NO_ACT) !

/ignore $mask|$channel $LEVEL

La commande prend plusieurs options pour affiner son comportement (pour les découvrir : /help ignore)

Exemples simples :

# Ignorer tous les messages du level NICKS (changement de pseudo) :
/ignore * NICKS
# De manière plus large, ignorer tous les messages d'information des niveaux suivants :
/ignore * JOINS PARTS QUITS NICKS
# Ou, pour seulement les ignorer dans la zone d'activité de la barre de statut, on a le level spécial NO_ACT (attention, le level NO_ACT est buggé dans les vieilles versions d'Irssi !) :
/ignore * NO_ACT -JOINS -PARTS -QUITS -NICKS

# Lister ce qui est ignoré :
/ignore
# Retirer une entrée de la liste ("désignorer") :
/unignore $i

Les options suivantes permettent aussi de gérer ce qui s’affiche dans la barre d’activité :

# Pour que certains niveaux ne déclenchent pas d'activité :
/set activity_hide_level QUITS JOINS PARTS NICKS
# Pour certains channels ne déclenchent pas d'activité :
/set activity_hide_targets #channel1 #channel2

Scripts sur irssi

Créer ou copier les scripts dans ~/.irssi/scripts/

/SCRIPT load <chemin>
/SCRIPT unload <nom script>

Notifications

Pour avoir les notifications basiques de son terminal avec le caractère bell lorsqu’il y a un highlight ou qu’on reçoit un message privé : /set beep_msg_level MSGS HILIGHT.

Pour avoir des notifications plus poussée, on pourra utiliser le plugin fnotify qui va écrire tous les messages nous étant destinés dans ~/.irrsi/fnotify. On peut aussi le limiter à seulement une fenêtre (/WINDOW log), et le combiner aussi au plugin highlite.

On pourra ensuite parser ce fichier et envoyer des notifications. Voici un exemple de script avec irssi qui tourne dans un screen sur un serveur distant :

#!/bin/bash

if [ -n "$IRSSI_SCREEN_SRV" ]; then
        ssh -q $IRSSI_SCREEN_SRV ": > .irssi/fnotify;tail -f .irssi/fnotify" > >(\
        while read heading message; do
                notify-send "${heading}" "${message}" -t 5000
        done) & \
        FNOTIFY_PID=$!
        x-terminal-emulator -e "ssh -t $IRSSI_SCREEN_SRV screen -r -D"
        kill $FNOTIFY_PID 2&> /dev/null
else
        notify-send 'Error' 'You must set IRSSI_SCREEN_SRV !' -t 10000
fi

Recherche :

/lastlog <pattern>
/lastlog -hilight
/lastlog -clear
/lastlog -new foo
/lastlog -hilight -new

Rejoindre des canaux par défaut

/channel add -auto #canal1 nom_serveur
/channel add -auto #canal2 nom_serveur

.irssi/config

serveurs :

Exemple avec OFTC forcé en IPv4, et Liberachat en starttls :

servers = (
  {
    address = "irc.oftc.net";
    chatnet = "oftc";
    port = "6667";
    autoconnect = "yes";
    family = "inet";
  },
  {
    address = "irc.libera.chat";
    chatnet = "liberachat";
    port = "6667";
    use_tls = "no";
    tls_verify = "yes";
    autoconnect = "yes";
    starttls = "yes";
  }
);

Canaux :

channels = (
  { name = "#irssi"; chatnet = "ircnet"; autojoin = "No"; },
  { name = "#debian-devel-fr"; chatnet = "oftc"; autojoin = "yes"; },
  { name = "#debian"; chatnet = "oftc"; autojoin = "no"; },
  { name = "#plugfr"; chatnet = "liberachat"; autojoin = "yes"; },

Fenêtres :

windows = { 
  1 = { immortal = "yes"; name = "(status)"; level = "ALL"; };
  2 = {
    items = (
      {
        type = "CHANNEL";
        chat_type = "IRC";
        name = "#evolix";
        tag = "liberachat";
      }
    );
  };