Introduction
************

Description
===========

WeeChat (Wee Enhanced Environment for Chat) est un client IRC libre, rapide et léger, concu pour différents systèmes d'exploitation.

Ses principales caractéristiques sont les suivantes :

  - connexion multi-serveurs

  - plusieurs interfaces : Curses, Gtk et Qt

  - petit, rapide et léger

  - paramétrable et extensible avec des scripts

  - conforme aux RFCs 1459, 2810, 2811, 2812, et 2813

  - multi-plateformes (Gnu/Linux, *BSD, Windows et d'autres systèmes)

  - 100% GPL, logiciel libre

La page d'accueil de WeeChat est ici :

http://weechat.flashtux.org

Pré-requis
==========

Pour installer WeeChat, vous devez avoir :

  * Un système Gnu/Linux (avec le compilateur et les outils associés pour le paquet des sources)

  * Droits "root" (pour installer WeeChat)

  * Selon l'interface, une des bibliothèques suivantes :

       - Curses: la librairie ncurses,

       - Gtk: *** interface non développée ***,

       - Qt: *** interface non développée ***,

Installation
************

Paquet binaire
==============

Les paquets binaires sont disponibles pour les distributions suivantes :

  * Debian (ou toute distribution compatible Debian)

     Pour installer : dpkg -i /chemin/weechat_x.y.z-1_i386.deb

  * Mandrake/Redhat (ou toute distribution compatible avec les RPM)

     Pour installer : rpm -i /chemin/weechat-x.y.z-1.i386.rpm

  * Gentoo

     Pour installer : emerge weechat

  * *BSD (non disponible !)

  * Slackware (non disponible !)

  * Windows (non disponible !)

où x.y.z est la version (par exemple 0.0.1)

Paquet source
=============

Tapez simplement dans une console ou un terminal :

./configure

make

Note: pour ne construire que certaines interfaces, vous pouvez passer des paramètres à ./configure, tapez ./configure --help pour de l'aide sur ces options.

Obtenez les droits root et installez WeeChat :

su

(entrez le mot de passe de root)

make install

Sources CVS
===========

Attention: les sources CVS sont réservés aux utilisateurs avancés : il se peut que WeeChat ne compile pas et qu'il soit trs̀ instable. Vous êtes prévenus !

Pour récupérer les sources CVS, tapez ces commandes :

cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/weechat login

cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/weechat co weechat

(lorsqu'un mot de passe est demandé, tapez simplement sur Entrée)

Exécutez ce script :

./autogen.sh

Suivez alors les instructions du paquet sources - see Paquet source.

Utilisation
***********

Lancer WeeChat
==============

Paramètres de ligne de commande
-------------------------------

-c, --config
     Afficher l'aide sur le fichier de config (liste des options)

-h, --help
     Afficher l'aide

-l, --license
     Afficher la licence de WeeChat

-v, --version
     Afficher la version de WeeChat

Lancer WeeChat
--------------

Tapez simplement cette commande pour lancer WeeChat :

weechat-curses (pour l'interface Curses)

ou weechat-gtk (pour l'interface Gtk)

ou weechat-qt (pour l'interface Qt)

Lorsque vous lancez WeeChat pour la première fois, un fichier de configuration par défaut est créé, avec les options par défaut.

Le fichier de configuration par défaut est : ~/.weechat/weechat.rc

Vous pouvez éditer ce fichier pour configurer WeeChat à votre convenance, ou vous pouvez modifier les paramètres dans WeeChat avec la commande /set - see Commandes WeeChat.

Fichier de configuration
========================

Liste des options du fichier de configuration :

Les couleurs pour l'interface Curses sont :

  - default: couleur par défaut (transparent pour le fond)

  - black: noir

  - red: rouge foncé

  - lightred: rouge clair

  - green: vert foncé

  - lightgreen: vert clair

  - brown: marron

  - yellow: jaune

  - blue: bleu foncé

  - lightblue: bleu clair

  - magenta: violet foncé

  - lightmagenta: violet clair

  - cyan: cyan foncé

  - lightcyan: cyan clair

  - white: blanc

Raccourcis clavier
==================

Flèche gauche / Flèche droite
     Aller au caractère précédent / suivant sur la ligne de commande

Ctrl + flèche gauche / Ctrl + flèche droite
     Aller au mot précédent / suivant sur la ligne de commande

Home / Ctrl + A
     Aller au début de la ligne de commande

End / Ctrl + E
     Aller à la fin de la ligne de commande

Backspace / Delete
     Effacer le mot précédent / suivant sur la ligne de commande

Ctrl + Backspace / Ctrl + W
     Effacer le mot précédent sur la ligne de commande

Tab
     Compléter la commande ou le pseudo (Tab à nouveau : trouver la complétion suivante)

Tout caractère
     Insérer le caractère à la position du curseur sur la ligne de commande

Entrée
     Exécuter la commande ou envoyer le message

Flèche haut / Flèche bas
     Rappeler les dernières commandes/messages

PageUp / PageDown
     Afficher l'historique du tampon

F5 / F6
     Aller au tampon précédent / suivant

F7 / F8
     Aller à la fenêtre précédente / suivante

F10
     Effacer le dernier message de la barre d'infos

Ctrl + L
     Réaffiche toute la fenêtre

Alt + flèche gauche / Alt + flèche droite
     Identique à F5 / F6

Alt + A
     Sauter au tampon avec activité (avec priorité: highlight, message, autre)

Alt + D
     Afficher les DCC en cours

Alt + R
     Vide la hotlist (notification d'activité sur les autres tampons)

Alt + S
     Sauter au tampon du serveur

Alt + X
     Sauter au premier canal du serveur suivant (ou tampon du serveur si aucun canal ouvert)

Alt + chiffre (1-9)
     Sauter au tampon avec ce numéro

Commandes WeeChat
=================

Commandes internes WeeChat :

alias  [nom_alias [commande [paramètres]]
     créer un alias pour une commande

     nom_alias: nom de l'alias

     commande: nom de la commande (commande WeeChat ou IRC, sans le premier '/')

     paramètres: paramètres pour la commande

buffer  [action | nombre]
     gère les buffers

     action: action à effectuer:

     move: déplacer le tampon dans la liste (peut être relatif, par exemple -1)

     close: fermer le tampon (pour un canal: équivalent à /part sans message de fin)

     list: liste les tampons ouverts (pas de paramètre affiche cette liste)

     notify: fixer le niveau de notification (0=jamais, 1=highlight, 2=1+msg, 3=2+join/part)

     nombre: sauter au tampon qui a ce numéro

clear  [-all]
     affacer la/les fenêtre(s)

     -all: effacer toutes les fenêtres

connect  [nom_serveur]
     se connecter à un serveur

     nom_serveur: nom du serveur pour se connecter

disconnect  [nom_serveur]
     se déconnecter d'un serveur

     nom_serveur: nom du serveur pour se déconnecter

debug  dump
     affiche des messages de debuggage

     dump: affiche les variables mémoire WeeChat dans le fichier log (les mêmes messages sont affichés lorsque WeeChat plante)

help  [commande]
     afficher l'aide sur les commandes

     commande: nom d'une commande WeeChat ou IRC

perl  [load fichier] | [autoload] | [unload]
     liste/charge/décharge des scripts Perl

     fichier: script Perl (fichier) à charger

     Sans paramètre, la commande /perl liste tous les scripts Perl chargés.

server  [nom_serveur] | [nom_serveur nom/IP port [-auto | -noauto] [-pwd mot_de_passe] [-nicks pseudo1 [pseudo2 [pseudo3]]] [-username nom_utilisateur] [-realname nom_réel] [-command commande] [-autojoin canal[,canal]] ] | [del nom_serveur]
     liste, ajoute ou retire des serveurs

     nom_serveur: nom du serveur, pour usage interne et affichage

     nom/IP: nom ou adresse IP du serveur

     port: port pour le serveur (nombre entier)

     mot_de_passe: mot de passe pour le serveur

     pseudo1: premier pseudo pour le serveur

     pseudo2: pseudo alternatif pour le serveur

     pseudo3: second pseudo alternatif pour le serveur

     nom_utilisateur: nom d'utilisateur

     nom_réel: nom réel de l'utilisateur

save  [fichier]
     sauvegarder la configuration sur disque

     fichier: fichier pour sauvegarder la configuration

set  [option[=valeur]]
     modifier des paramètres de configuration

     option: nom d'une option

     valeur: valeur pour l'option

unalias  nom_alias
     supprimer un alias

     nom_alias: nom de l'alias à supprimer

window  [list | splith | splitv | [merge [down | up | left | right | all]]]
     gestion des fenêtres

     list: liste les fenêtres ouvertes (pas de paramètre affiche cette liste)

     splith: éclate la fenêtre en deux horizontalement

     splitv: éclate la fenêtre en deux verticalement

     merge: fusionne la fenêtre avec une autre

Commandes IRC :

admin  [cible]
     trouver les informations sur l'administrateur du serveur

     cible: serveur

away  [-all] [message]
     basculer le statut absent

     -all: basculer le statut absent sur tous les serveurs connectés

     message: message pour l'absence (si pas de message donné, le statut d'absence est supprimé)

ctcp  pseudo type
     envoyer un message ctcp

     pseudo: utilisateur pour envoyer le ctcp

     type: "action" ou "version"

dcc  action [pseudo [fichier]]
     démarre le DCC (fichier ou discussion) ou ferme une discussion

     action: 'send' (envoi de fichier) ou 'chat' (discussion) ou 'close' (fermeture discussion)

     pseudo: pseudo pour envoyer le fichier ou discuter

     fichier: nom du fichier (sur la machine locale)

deop  pseudo [pseudo]
     retire le statut d'opérateur du canal à/aux nick(s)

devoice  pseudo [pseudo]
     retire la voix du/des pseudo(s)

die
     arrêter le serveur

info  [cible]
     voir les informations décrivant le serveur

     cible: nom du serveur

invite  pseudo canal
     inviter un utilisateur sur un canal

     pseudo: utilisateur à inviter

     channel: canal pour l'invitation

ison  pseudo [pseudo ...]
     vérifier si un utilisateur est actuellement sur IRC

     pseudo: pseudo

join  canal[,canal] [clé[,clé]]
     joindre un canal

     canal: nom du canal à rejoindre

     clé: clé pour rejoindre le canal

kick  [canal] pseudo [commentaire]
     retirer par la force un utilisateur d'un canal

     canal: canal où l'utilisateur se trouve

     pseudo: utilisateur à éliminer

     commentaire: commentaire pour l'élimination

kill  pseudo commentaire
     fermer la connexion client-serveur

     pseudo: utilisateur

     commentaire: commentaire pour la mort

links  [[serveur] masque_serveur]
     lister tous les noms de serveurs connus du serveur qui répondent à la requête

     serveur: ce serveur doit répondre à la requête

     masque_serveur: liste des serveurs correspondant au masque

list  [canal[,canall] [serveur]]
     lister les canaux et leur sujet

     canal: canal à lister

     serveur: nom du serveur

lusers  [masque [cible]]
     obtenir des statistiques sur la taille du réseau IRC

     masque: serveurs qui correspondent au masque seulement

     cible: serveur pour faire suivre la requête

me  message
     envoyer une action ctcp au canal courant

     message: message à envoyer

mode  { canal {[+|-]|o|p|s|i|t|n|b|v} [limite] [utilisateur] [masque de banissement] } | { nick {[+|-]|i|w|s|o} }
     changer le mode du canal ou de l'utilisateur

     modes de canaux :

     canal: nom du canal à modifier

     o: donner/reprendre le statut privilégié d'opérateur

     p: indicateur de canal privé

     s: indicateur de canal secret

     i: indicateur de canal avec invitation seulement

     t: le titre est modifiable seulement par un opérateur du canal

     n: aucun message au canal depuis l'extérieur

     m: canal modéré

     l: fixer la limite d'utilisateurs pour le canal

     b: paramétrer un masque de banissement pour garder des utilisateurs dehors

     v: donner/reprendre la possibilité de parler sur un canal modéré

     k: définir une clé (mot de passe) pour accéder au canal

     modes utilisateur :

     pseudo: utilisateur à modifier

     i: marquer un utilisateur comme invisible

     s: marquer un utilisateur pour recevoir les notices du serveur

     w: l'utilisateur reçoit les wallops

     o: drapeau opérateur

motd  [cible]
     obtenir le message du jour

     cible: nom du serveur

msg  cible[,cible] texte
     envoyer un message à un utilisateur ou canal

     cible: utilisateur ou canal (peut-être un masque, '*' = canal courant)

     texte: texte à envoyer

names  [canal[,canal]]
     lister les utilisateurs sur des canaux

     canal: nom du canal

nick  pseudo
     changer le pseudo courant

     pseudo: nouveau pseudo pour le serveur IRC courant

notice  pseudo texte
     envoyer un message notice à un utilisateur

     pseudo: utilisateur cible pour la notice

     texte: texte à envoyer

op  pseudo [pseudo]
     donner le statut opérateur à un/des utilisateur(s)

oper  utilisateur mot_de_passe
     obtenir le statut d'opérateur

     utilisateur/mot_de_passe: utilisé pour obtenir les privilèges sur le serveur IRC courant

part  [canal[,canall] [message_de_fin]
     quitter un canal

     canal: canal à quitter

     message_de_fin: message de fin (affiché aux autres utilisateurs)

ping  serveur1 [serveur2]
     pinguer un serveur

     serveur1: serveur à pinguer

     serveur2: faire suivre le ping à ce serveur

pong  démon [démon2]
     répondre à un message ping

     démon: démon qui a répondu au message Ping

     démon2: faire suivre le message à ce démon

query  pseudo [texte]
     envoyer un message privé à un utilisateur

     pseudo: utilisateur pour la conversation privée

     texte: texte à envoyer

quit  [message_de_fin]
     fermer toutes les connexions et quitter

     message_de_fin: message de fin (affiché aux autres utilisateurs)

quote  données
     envoyer des données brutes au serveur sans analyse

     données: données brutes à envoyer

rehash
     demander au serveur de recharger son fichier de config

restart
     demander au serveur de redémarrer

service  pseudo réservé distribution type réservé info
     enregister un nouveau service

     distribution: visibilité du service

     type: réservé pour une utilisation future

servlist  [masque [type]]
     lister les services actuellement connectés au réseau

     masque: lister seulement les services qui correspondent à ce masque

     type: lister seulement les services de ce type

squery  service texte
     envoyer un message à un service

     service: nom du service

     texte: texte à envoyer

squit  serveur commentaire
     déconnecter les liens vers un serveur

     serveur: nom du serveur

     commentaire: commentaire pour quitter

stats  [requête [serveur]]
     demander des statistiques sur le serveur

     requête: c/h/i/k/l/m/o/y/u (voir la RFC1459)

     serveur: nom du serveur

summon  utilisateur [cible [canal]]
     envoyer aux utilisateurs d'un serveur IRC un message leur demandant de rejoindre IRC

     utilisateur: nom d'utilisateur

     cible: nom du serveur

     canal: nom du canal

time  [cible]
     demander l'heure locale de serveur

     cible: demander l'heure de ce serveur

topic  [canal] [titre]
     recevoir/définir le titre du canal

     canal: nom du canal

     titre: nouveau titre pour le canal (si le titre est "-delete" alors le titre est supprimé)

trace  [cible]
     trouver le chemin jusqu'à un serveur spécifique

     cible: serveur

userhost  pseudo [pseudo ...]
     retourne une liste d'informations sur des utilisateurs

     pseudo: pseudo

users  [cible]
     liste des utilisateurs connectés au serveur

     cible: serveur

version  [serveur | pseudo]
     retourne la version de l'utilisateur ou du serveur (courant ou spécifié)

     serveur: nom du serveur

     pseudo: utilisateur

voice  pseudo [pseudo]
     donne la voix à/aux utilisateur(s)

wallops  texte
     envoyer un message à tous les utilisateurs connectés qui ont activé le mode utilisateur 'w' pour eux-mêmes

     texte à envoyer

who  [masque ["o"]]
     génère une requête qui retourne une liste d'information

     masque: information qui correspond à ce masque uniquement

     o: seul les opérateurs sont retournés correspondant au masque fourni

whois  [serveur] pseudo[,pseudo]
     demande les informations sur le(s) utilisateur(s)

     serveur: nom du serveur

     pseudo: utilisateur (peut être un masque)

whowas  pseudo [,pseudo [,pseudo ...]] [nombre [cible]]
     demander de l'information sur un nick qui n'existe plus

     pseudo: pseudo à chercher

     nombre: nombre de réponses à retourner (recherche complète si nombre négatif)

     cible: la réponse doit correspondre à ce masque

Extensions
**********

Scripts Perl
============

Charger/décharger des scripts Perl
----------------------------------

Les scripts Perl sont chargés et déchargés avec la commande /perl (tapez /help perl dans WeeChat pour obtenir de l'aide sur la commande).

Exemples :

  * Charger un script Perl : /perl load /tmp/essai.pl

  * Décharger tous les scripts Perl : /perl unload

  * Lister les scripts Perl chargés : /perl

Interface WeeChat / Perl
------------------------

  * IRC::register ( nom, version, fonction_de_fin, description );

     C'est la première fonction à appeler dans le script Perl.

     Tout script Perl pour WeeChat doit appeler cette fonction.

     Paramètres :

       - nom: nom unique pour identifier le script (chaque script doit avoir un nom différent)

       - version: version du script

       - fonction_de_fin: fonction Perl appelée quand le script est déchargé (paramètre facultatif, une chaîne vide signifiant qu'il n'y a pas de fonction à appeler)

       - description: description brève du script.

     Exemple :

     IRC::register ("essai", "1.0", "fin_essai", "Script d'essai !");

  * IRC::print ( message );

     Affiche un message dans la fenêtre courante (canal ou serveur).

     Paramètres :

       - message: message à afficher

     Exemple :

     IRC::print ("message");

  * IRC::print_with_channel ( canal, [serveur,] message );

     Affiche un message dans un canal.

     Paramètres :

       - canal: nom du canal

       - serveur: nom interne du serveur

       - message: message à afficher

     Exemples :

     IRC::print_with_channel ("#weechat", "freenode", "message");

     IRC::print_with_channel ("#weechat", "message");

  * IRC::print_infobar ( délai, message );

     Affiche un message dans la barre d'infos.

     Paramètres :

       - délai: délai (en secondes) pendant lequel le message est affiché (si 0, le message ne sera pas effacé).

       - message: message à afficher

     Exemple :

     IRC::print_infobar (5, "message");

  * IRC::add_message_handler ( nom, fonction );

     Attache une fonction Perl à un message IRC particulier.

     La fonction sera appelée à chaque fois que le message IRC sera reçu.

     Paramètres :

       - nom: nom du message IRC pour lequel la fonction est appelée
          Pour connaître la liste des messages IRC disponibles, merci de consulter les RFC 1459 et/ou 2812 :

          RFC 1459 : ftp://ftp.rfc-editor.org/in-notes/rfc1459.txt

          RFC 2812 : ftp://ftp.rfc-editor.org/in-notes/rfc2812.txt

       - fonction: fonction Perl appelée lorsque le message est reçu

     Exemple :

     IRC::add_message_handler ("privmsg", ma_fonction);

     sub ma_fonction

     {

         IRC::print ("serveur=$_[0]\n");

         ($null, $canal, $message) = split ":",$_[1],3;

         ($masque, $null, $canal) = split " ", $canal;

         IRC::print ("masque=$masque, canal=$canal, message=$message\n");

     }

  * IRC::add_command_handler ( nom, fonction );

     Créé une nouvelle commande WeeChat, associée à une fonction Perl.

     La fonction sera appelée lorsque l'utilisateur lancera la commande par /nom.

     Paramètres :

       - nom: nom de la nouvelle commande
          Il peut s'agir d'une commande existante, auquel cas celle-ci est écrasée par la fonction Perl. Soyez prudent en écrasant les commandes WeeChat, car elles ne seront plus accessibles tant que le script Perl sera chargé.

       - fonction: fonction Perl associée à la commande

     Exemple :

     IRC::add_command_handler ("commande", ma_commande);

     sub ma_commande

     {

         IRC::print("Serveur: $_[0], paramètres: $_[1]\n");

         return 0;

     }

  * IRC::get_info ( [serveur,] nom );

     Obtenir des informations variées sur WeeChat, le serveur ou l'utilisateur.

     Paramètres :

       - serveur: nom interne du serveur

       - nom: nom de l'info à obtenir :

            - 0 ou version: obtenir la version de WeeChat

            - 1 ou nick: obtenir le pseudo

            - 2 ou channel: obtenir le nom du canal

            - 3 ou server: obtenir le nom du serveur

            - 4 ou weechatdir: obtenir le répertoire maison de WeeChat

            - 5 ou away: obtenir le drapeau "away" du serveur

     Exemples :

     $version = get_info("version");

     $nick = get_info("freenode", "nick");

Scripts Python
==============

Non développé !

Scripts Ruby
============

Non développé !

Auteurs / Support
*****************

Auteurs
=======

WeeChat est développé par :

  * FlashCode <flashcode AT flashtux.org>

  * Bounga <bounga AT altern.org>

  * Xahlexx <xahlexx AT tuxfamily.org>

Obtenir du support
==================

Avant de faire appel au support, merci de lire la documentation et la FAQ de WeeChat.

(la documentation est le document que vous êtes en train de lire, si vous n'avez pas tout lu jusqu'ici, il est encore temps de recommencer !)

  * Support par IRC:

     - serveur : irc.freenode.net

     - canal : #weechat

  * Forum WeeChat : http://forums.flashtux.org

  * Support par la liste de diffusion :

     - pour souscrire/désinscrire :
     http://mail.nongnu.org/mailman/listinfo/weechat-support.

     - pour envoyer un mail à la liste de diffusion, envoyer à :
     weechat-support@nongnu.org.

     Les archives de la liste de diffusion sont ici :

     http://mail.nongnu.org/archive/html/weechat-support

  * Voir la page support WeeChat pour plus de détails :

     http://weechat.flashtux.org/support.php