Irssi

Un article de Gentoo Linux Wiki.

Cet article est une ébauche. Vous pouvez l'aider à s'enrichir en le complétant.

Cet article fait partie des HOWTOs.
Méthodes d'installation CD Live Noyau et matériel Portables et Notebooks Portage Système Réseaux et Services Serveur X Logiciels fréquemment utilisés Autres
thème angelic
thème angelic

thème madcow
thème madcow

Sommaire

[modifier] Introduction

Irssi est un client IRC/Silc en mode console très modulaire dans sa configuration et son utilisation, qui utilise des plug-in très sympa en perl (on ne regardera que la partie irc, la partie silc étant trop différente en terme de configuration). L'objectif de ce Howto est de vous montrer les fonctionnalités les plus intéressantes de ce client pour démontrer que finalement, il n'est pas plus dur à configurer et à utiliser que xchat.

Les options étant très nombreuses on passera en revue les principales en vous invitant à visiter la documentation irssi et scripts irssi pour un complément d'informations.

[modifier] Installation

Il est intéressant de noter que les USE flags de l'ebuild irssi-text sont plutôt explicites. Pour la suite de ce Howto, les uses flags suivants sont nécessaires pour le bon fonctionnement des plug-in et de la connectivité ssl.

ssl perl

Le use ipv6 est sympa si vous avez la chance d'avoir un accès à un tunnelbroker ou que vous soyiez nativement en ipv6

Pour l'installation de irssi installation taper :

emerge -av irssi

Pour pouvoir apprécier pleinement un client console, screen est indispensable

emerge -av screen

[modifier] Configuration de démarrage

Au lancement d'irssi, un fichier est lu depuis $HOME/.irssi/config , s'il n'est pas présent, un fichier de configuration par défaut est généré. La syntaxe de ce fichier est modulaire et classée comme pour un xml.

[modifier] La section server

Cette section permet de classer et d'identifier les différents serveurs utilisés par irssi pour l'irc, identifiés par l'option chatnet. Par exemple pour deux serveurs irc :

servers = (
 {
   address = "irc6.geeknode.org";
   chatnet = "Geek";
   port = "6697";
   use_ssl = "yes";
   ssl_verify = "no";
   autoconnect = "yes";
 },
 {
   address = "ipv6.chat.freenode.net";
   chatnet = "freenode";
   port = "6667";
   autoconnect = "yes";
 }
};

On peut ainsi configurer autant de serveurs que l'on veut et les récupérer par la suite dans le fichier de configuration par leur chatnet pour les identifier précisément.

Pour se connecter à un chatnet particulier par exemple :

/connect Geek

À noter que si plusieurs connexions via un même chatnet sont identifiées par un suffixe numérique, on peut naviguer dans les chatnet depuis la première window de irssi, le status en faisant :

ctrl + X

Pour enregistrer un serveur directement depuis irssi :

/NETWORK ADD [-kicks <count>] [-msgs <count>] [-modes <count>]
    [-whois <count>] [-cmdspeed <ms>] [-cmdmax <count>]
    [-nick <nick>] [-user <user>] [-realname <name>]
    [-host <host>] [-autosendcmd <cmd>] <name>

Ce qui aura pour effet de créer un serveur et son chatnet en plus.

[modifier] La section chatnet

Avoir ses chatnets c'est un plus mais on aimerait bien pouvoir passer des commandes au lancement de la connexion comme une identification sur nickserv par exemple, utiliser un nick ( pseudo ) spécifique par serveur ou simplement qualifier le type de connexion ( silc ou irc ).

De suite un exemple :

chatnets = {
 freenode = {
   type = "IRC";
   nick = "Savory";
   max_kicks = "4";
   max_msgs = "1";
   max_modes = "4";
   max_whois = "1";
   autosendcmd = "/^msg nickserv identify monpassultrasecret";
 };
 Geek = {
   type = "IRC";
   nick = "Godspeed";
   autosendcmd = "/^msg nickserv identify monpass;wait -Geek 2000;msg chanserv invite #salon Godspeed";
 }; 
};

Là encore la syntaxe est plutôt claire, pour les options supplémentaires je vous invite à aller voir la documentation officielle qui détaille en profondeur les différentes options de cette section.

Les options les plus importantes sont :

  • Le type pour dire au chatnet d'utiliser le protocole IRC
  • Le nick à utiliser pour forcer l'utilisation d'un nick particulier au lieu de celui par défaut
  • La portion autosendcmd qui contiendra des commandes à envoyer au démarrage ( les commandes sont en fait des alias section traitée dans la suite de ce howto )

Pour ajouter une option depuis irssi sur un chatnet :

/NETWORK ADD -autosendcmd "/msg NickServ identify secret" freenode 

[modifier] La section channel

Cette section regroupe toute la configuration pour les channels irc, ici rien d'exceptionnel mais on en aura besoin par la suite pour fixer les channels sur des window particulier de irssi.

channels = (
{ name = "#zaurusfr"; chatnet = "freenode"; autojoin = "yes"; },
{ name = "#tribugentoo"; chatnet = "Geek"; autojoin = "yes"; } 
};

Nous pouvons quand même ajouter que l'on peut ajouter un channel automatiquement depuis irssi avec la commande :

/CHANNEL ADD [-auto | -noauto] [-bots <masks>] [-botcmd <command>] <channel> <network> [<password>]

NB : Les directives bots et botcmd sont utilisées pour envoyer une chaîne d'identification au bot d'hostmask bots avec la commande botcmd

/CHANNEL ADD -auto -bots "*!bot@bothost.org bot*!*@host2.org" -botcmd "msg $0 op mypass" #zaurusfr freenode passsecret

[modifier] La section aliases

Cette section est la plus importante de notre fichier de configuration, elle contient toutes les commandes que l'on peut faire dans irssi, on pourra "surcharger" les alias natifs comme /connect ou /quit par exemple (notez que //connect appellera la fonction native /connect dans tout les cas)

Quelques exemples d'alias :

aliases={
J = "join";
g = "window goto $0";
cleanup = "/foreach window /unquery; /foreach window /window next";
b64 = "exec - echo -e '$0  : '\\;  echo '$0' | base64 -d ";
}

Devant l'immense collection d'alias je ne peux pas détailler plus, je fournirai un fichier de config à la fin de ce howto pour vous donner quelques exemples, mais je vous invite à aller consulter le manuel.

Pour ajouter un alias depuis irssi :

/ALIAS [[-]<alias> [<command>]]

/ALIAS send echo Sending file $1 to $0;dcc send $0- 

Pour l'enlever :

/ALIAS -send
/UNALIAS send

[modifier] La section settings

Cette section traite de la configuration de base de irssi.

settings = {

Nous avons plusieurs modules, je vais en donner ici quelques uns qui me paraissent importants

[modifier] core

 "core" = { 
   real_name = "François Pignon";
   user_name = "blak";
   nick = "PinPin";
 };

[modifier] irc/core

"irc/core" = {
   alternate_nick = "PinPinPin";
   lag_check_time = "60s";
   ctcp_version_reply = "mIRC v16.64 Khaled Mardam-Bey";
};

[modifier] irc/dcc

 "irc/dcc" = {
   dcc_download_path = "~/Desktop";
   dcc_autoget = "yes";
   dcc_autoget_masks = "*@*";
   dcc_own_ip = "82.195.54.54";
 };
};

[modifier] La section highlights

Cette section permet de notifier irssi sur un mot-clef trouvé sur un channel pour colorier différemment la window

hilights = (
 { text = "PinPin"; nick = "yes"; word = "yes"; fullword = "no"; },
 { text = "sex"; word = "yes"; fullword = "yes"; }
);

[modifier] La section window

Cette section sert à configurer l'ordre des fenêtres sous irssi, pour forcer une fenêtre à rester ouverte ou toujours avoir les mêmes numéros par channels. Par exemple :

windows = {
 1 = { immortal = "yes"; name = "(status)"; level = "ALL"; };
 2 = {
   items = (
     {
       type = "CHANNEL";
       chat_type = "IRC";
       name = "#tribugentoo";
       tag = "Geek";
     }
   );
 };
 3 = {
   items = (
     {
       type = "CHANNEL";
       chat_type = "IRC";
       name = "#zaurusfr";
       tag = "freenode";
     }
   );
 };
}; 

L'attribut immortal sert à rendre la fenêtre imutable, ce qui DOIT être le cas pour la window de status.


Pour conclure cette partie il est nécessaire de savoir que nous pouvons afficher, créer et modifier toutes les variables de configuration via /set.

Elles sont ordonnées par sections comme on l'a vu via des modules.

Généralement chaque plug-in ajoute son groupe de settings.

Par exemple pour le plugin recode :

conversions = {
  "#tribugentoo" = "utf-8";
  darla = "iso8859-15";
  "#zaurusfr" = "iso8859-15";
};

Nous pouvons afficher tous les paramètres dans la window status juste en tapant /set et pour les modifier :

/SET [-clear | -default] [<key> [<value>]]
/set ctcp_version_reply BitchX

Une fois les settings finis depuis irssi, taper :

/save
/reload

Si vous avez fait les modifications depuis un éditeur, il suffira juste de faire:

/reload

[modifier] Les scripts

Il existe de nombreux plug-in perl pour irssi, les officiels peuvent être trouvés ici Nous allons nous pencher sur deux en particulier, nicklist qui permet d'avoir une liste des utilisateurs sur la droite dans un screen et recode qui permet d'encoder et de décoder dynamiquement tous les charsets gérés par iconv ( ce qui enlève tous les problèmes d'encoding sur irc).

[modifier] recode

Tout d'abord le mettre dans ~/.irssi/scripts

mkdir -p ~/.irssi/scripts/autorun && wget -O ~/.irssi/scripts/recode.pl http://www.irssi.org/scripts/scripts/recode.pl 

Pour le lancer au démarrage de irssi faire :

ln -s ~/.irssi/scripts/recode.pl ~/.irssi/scripts/autorun/recode.pl

Si vous l'avez fait quand irssi était démarré pas de problème un simple :

/script load recode.pl

suffira à faire le travail.

À présent, nous avons plusieurs options, une section supplémentaire ajoutée à la configuration et la commande recode en plus dans irssi.

Par exemple, si on veut parler en utf-8 sur #tribugentoo et en iso à darla :

/recode add #tribugentoo utf-8
/recode add darla iso-8859-15 

Ensuite pour vérifier que le salon a été pris en compte :

/recode
Target                         Character set
#tribugentoo                   utf-8
darla                          iso-8859-15

et pour être sûr de garder sa configuration un :

/save
  • NB : il me semble que maintenant recode est mis par défaut sur le client à voir

[modifier] nicklist

On effectuera la même manipulation :

mkdir -p ~/.irssi/scripts/autorun && wget -O ~/.irssi/scripts/nicklist.pl http://www.irssi.org/scripts/scripts/nicklist.pl 
ln -s ~/.irssi/scripts/nicklist.pl ~/.irssi/scripts/autorun/nicklist.pl

Ensuite lancer irssi dans un screen et ajouter l'option nicklist_automode à SCREEN pour l'activer au démarrage :

screen -UARmS irssi irssi
/set nicklist_automode SCREEN
/save

Pour le désactiver un simple

/script unload nicklist
  • NB : il se peut que la barre de droite soit encore là quand les nicks disparaissent, c'est un effet de bord du à screen. La combinaison de touche Ctrl+L (ou Ctrl+A puis L selon votre configuration) permet de redessiner l'écran.


Il en existe plein d'autres, je vous laisse découvrir par vous-même la richesse de l'api perl et des contributions pour irssi.

[modifier] Les thèmes

Les thèmes sont des fichiers qui ressemblent beaucoup aux fichiers de config, à la différence qu'ils décrivent l'agencement des composants au lieu de décrire les composants eux mêmes.

Vous pouvez en trouver ici, pour personnaliser votre thème je vous invite à les regarder ainsi que cette page qui donne le format des couleurs.

Vous avez en début de ce howto deux captures le angelic et le madcow.

Pour changer le theme dans irssi, il suffit de faire :

/set theme madcow
/save

[modifier] Liens externes

Merci à ma marmotte ( secrétaire? ) qui a corrigé mes énormes fautes :)

Récupérée de « http://fr.gentoo-wiki.com/Irssi »