# Guide utilisateur WeeChat

Sébastien Helleu
flashcode@flashtux.org
version 4.6.3

Ce manuel documente le client de messagerie instantanée WeeChat, il fait partie de WeeChat.

La dernière version de ce document peut être téléchargée sur cette page ↗.

## 1. Introduction

WeeChat (Wee Enhanced Environment for Chat) est un client de discussion libre, rapide et léger, conçu pour différents systèmes d’exploitation.

### 1.1. Fonctionnalités

Ses principales fonctionnalités sont les suivantes :

- multi-protocoles (principalement IRC)

- connexion multi-serveurs (avec TLS, IPv6, proxy)

- petit, rapide et léger

- paramétrable et extensible avec des extensions et des scripts

- conforme aux RFCs IRC 1459 ↗, 2810 ↗, 2811 ↗, 2812 ↗, 2813 ↗ et 7194 ↗

- proxy IRC et relai pour WeeChat et interfaces distantes

- multi plates-formes (GNU/Linux, *BSD, macOS, Windows et d’autres systèmes)

- 100% GPL, logiciel libre

La liste complète des fonctionnalités peut être trouvée sur cette page ↗.

### 1.2. 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), ou un système compatible

- droits "root" (pour installer WeeChat dans un répertoire système)

- quelques bibliothèques (voir les dépendances).

## 2. Installation

### 2.1. Paquets binaires

Les paquets binaires sont disponibles pour beaucoup de distributions, dont :

- Arch Linux : `pacman -S weechat`

- Cygwin (Windows) : sélectionnez les paquets WeeChat dans setup.exe

- Debian/Ubuntu (ou toute distribution compatible Debian) : `apt-get install weechat-curses weechat-plugins`
  Pour les dernières versions et les constructions nocturnes : dépôts Debian ↗

- Fedora Core : `dnf install weechat`

- FreeBSD : `pkg install weechat`

- Gentoo : `emerge weechat`

- Mandriva/RedHat (ou toute distribution compatible avec les RPM) : `rpm -i /path/to/weechat-x.y.z-1.i386.rpm`

- openSUSE : `zypper in weechat`

- Sourcemage : `cast weechat`

- macOS (avec Homebrew ↗) : `brew install weechat` (pour l’aide : `brew info weechat`)

Des paquets additionnels peuvent être utiles également, comme weechat-plugins.

Pour les autres distributions supportées, merci de vous référer au manuel de la distribution pour la méthode d’installation.

### 2.2. Conteneurs

Des conteneurs avec WeeChat peuvent être construits ou installés directement depuis le Docker Hub ↗.
Pour plus d’informations, voire le README dans le dépôt weechat-container ↗.

### 2.3. Paquet source

WeeChat doit être construit avec CMake.

Note | Sous macOS, vous pouvez utiliser Homebrew ↗ : `brew install --build-from-source weechat`.

#### Dépendances

Le tableau suivant liste les paquets requis pour construire WeeChat :

Paquet (1) | Version | Fonctionnalités
--- | --- | ---
compilateur C (gcc / clang) |  | Compilation des sources en C.
cmake | ≥ 3.0 | Construction.
pkgconf / pkg-config |  | Détection des bibliothèques installées.
libncurses-dev |  | Interface ncurses.
libcurl4-gnutls-dev |  | Transfert d’URL.
libgcrypt20-dev |  | Données sécurisées, authentification IRC SASL.
libgnutls28-dev | ≥ 2.2.0 (2) | Extension IRC : support des connexions TLS, authentification IRC SASL (ECDSA-NIST256P-CHALLENGE). Extension Relay : support des connexions TLS.
zlib1g-dev |  | Extension Logger : compression des fichiers de log qui tournent (gzip). Extention Relay : compression des messages (WeeChat → client) avec zlib ↗ (protocoles api et weechat). Extension Script : lecture du fichier d’index du dépôt (gzip).

Note | (1) Le nom provient de la distribution GNU/Linux Debian Bookworm, la version et le nom peuvent être différents dans les autres distributions. (2) GnuTLS ≥ 3.0.21 est requis pour l’authentification SASL avec le mécanisme ECDSA-NIST256P-CHALLENGE.

Le tableau suivant liste les paquets optionnels pour compiler WeeChat :

Paquet (1) | Version | Fonctionnalités
--- | --- | ---
compilateur C++ (g++ / clang++) |  | Construction et lancement des tests, extension JavaScript.
gettext |  | Internationalisation (traduction des messages ; la langue de base est l’anglais).
ca-certificates |  | Certificats pour les connexions TLS.
libcjson-dev |  | Extension Relay : protocole "api" (API REST HTTP).
libzstd-dev | ≥ 0.8.1 | Extension Logger : compression des fichiers de log qui tournent (zstandard). Extension Relay : compression des messages (WeeChat → client) avec Zstandard ↗ (protocoles api et weechat).
libaspell-dev / libenchant-dev |  | Extension spell.
python3-dev | ≥ 3.0 | Extension python.
libperl-dev |  | Extension perl.
ruby3.1, ruby3.1-dev | ≥ 1.9.1 | Extension ruby.
liblua5.4-dev |  | Extension lua.
tcl-dev | ≥ 8.5 | Extension tcl.
guile-3.0-dev | ≥ 2.0 | Extension guile (scheme).
libv8-dev | ≤ 3.24.3 | Extension javascript.
php-dev | ≥ 7.0 | Extension PHP.
libphp-embed | ≥ 7.0 | Extension PHP.
libxml2-dev |  | Extension PHP.
libargon2-dev |  | Extension PHP (si PHP ≥ 7.2).
libsodium-dev |  | Extension PHP (si PHP ≥ 7.2).
asciidoctor | ≥ 1.5.4 | Construction de la page man et de la documentation.
ruby-pygments.rb |  | Construction de la documentation.
libcpputest-dev | ≥ 3.4 | Construction et lancement des tests.

Note | (1) Le nom provient de la distribution GNU/Linux Debian Bookworm, la version et le nom peuvent être différents dans les autres distributions.

Si vous utilisez une distribution basée sur Debian ou Ubuntu, et si vous avez des entrées source "deb-src" dans votre fichier /etc/apt/sources.list, vous pouvez installer toutes les dépendances avec la commande :

    sudo apt-get build-dep weechat

#### Construction

- Installation dans les répertoires systèmes (nécessite les droits root) :

    mkdir build
    cd build
    cmake ..
    make
    sudo make install

- Installation dans un répertoire spécifique (par exemple dans votre "home") :

    mkdir build
    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=/chemin/vers/répertoire
    make
    make install

Des options peuvent être utilisées pour CMake, avec le format : `-DOPTION=VALUE`.

Liste des options disponibles :

Option | Valeurs | Valeur par défaut | Description
--- | --- | --- | ---
`CMAKE_BUILD_TYPE` | `Debug`, `Release`, `RelWithDebInfo`, `MinSizeRel` |  | Type de construction : `Debug` (ou `RelWithDebInfo`) est recommandé si vous utilisez une version de développement de WeeChat.
`CMAKE_INSTALL_PREFIX` | répertoire | `/usr/local` | Le répertoire dans lequel WeeChat sera installé.
`WEECHAT_HOME` | répertoire | `(chaîne vide)` | Le répertoire "maison" par défaut lors du lancement de WeeChat. Avec une valeur vide (recommandé), les répertoires XDG sont utilisés par défaut. Si non vide, un répertoire unique est utilisé pour tous les fichiers. La valeur peut aussi être 4 répertoires séparés par ":", dans cet ordre : config, data, cache, runtime.
`ENABLE_ALIAS` | `ON`, `OFF` | `ON` | Compiler l’extension Alias.
`ENABLE_BUFLIST` | `ON`, `OFF` | `ON` | Compiler l’extension Buflist.
`ENABLE_CHARSET` | `ON`, `OFF` | `ON` | Compiler l’extension Charset.
`ENABLE_CJSON` | `ON`, `OFF` | `ON` | Support du JSON avec la bibliothèque cJSON ↗.
`ENABLE_MAN` | `ON`, `OFF` | `OFF` | Construire la page man.
`ENABLE_DOC` | `ON`, `OFF` | `OFF` | Construire la documentation HTML.
`ENABLE_DOC_INCOMPLETE` | `ON`, `OFF` | `OFF` | Forcer la construction de la documentation même si des extensions ne sont pas compilées (déconseillé : les documentations seront incomplètes).
`ENABLE_ENCHANT` | `ON`, `OFF` | `OFF` | Compiler l’extension Spell avec Enchant.
`ENABLE_EXEC` | `ON`, `OFF` | `ON` | Compiler l’extension Exec.
`ENABLE_FIFO` | `ON`, `OFF` | `ON` | Compiler l’extension Fifo.
`ENABLE_FSET` | `ON`, `OFF` | `ON` | Compiler l’extension Fset.
`ENABLE_GUILE` | `ON`, `OFF` | `ON` | Compiler l’extension Guile (Scheme).
`ENABLE_HEADLESS` | `ON`, `OFF` | `ON` | Compiler le binaire sans interface (« headless »).
`ENABLE_IRC` | `ON`, `OFF` | `ON` | Compiler l’extension IRC.
`ENABLE_JAVASCRIPT` | `ON`, `OFF` | `OFF` | Compiler l’extension JavaScript.
`ENABLE_LARGEFILE` | `ON`, `OFF` | `ON` | Support des gros fichiers.
`ENABLE_LOGGER` | `ON`, `OFF` | `ON` | Compiler l’extension Logger.
`ENABLE_LUA` | `ON`, `OFF` | `ON` | Compiler l’extension Lua.
`ENABLE_NCURSES` | `ON`, `OFF` | `ON` | Compiler l’interface Ncurses.
`ENABLE_NLS` | `ON`, `OFF` | `ON` | Activer NLS (traductions).
`ENABLE_PERL` | `ON`, `OFF` | `ON` | Compiler l’extension Perl.
`ENABLE_PHP` | `ON`, `OFF` | `ON` | Compiler l’extension PHP.
`ENABLE_PYTHON` | `ON`, `OFF` | `ON` | Compiler l’extension Python.
`ENABLE_RELAY` | `ON`, `OFF` | `ON` | Compiler l’extension Relay.
`ENABLE_RUBY` | `ON`, `OFF` | `ON` | Compiler l’extension Ruby.
`ENABLE_SCRIPT` | `ON`, `OFF` | `ON` | Compiler l’extension Script.
`ENABLE_SCRIPTS` | `ON`, `OFF` | `ON` | Compiler les extensions de script (Python, Perl, Ruby, Lua, Tcl, Guile, PHP).
`ENABLE_SPELL` | `ON`, `OFF` | `ON` | Compiler l’extension Spell.
`ENABLE_TCL` | `ON`, `OFF` | `ON` | Compiler l’extension Tcl.
`ENABLE_TRIGGER` | `ON`, `OFF` | `ON` | Compiler l’extension Trigger.
`ENABLE_TYPING` | `ON`, `OFF` | `ON` | Compiler l’extension Typing.
`ENABLE_XFER` | `ON`, `OFF` | `ON` | Compiler l’extension Xfer.
`ENABLE_ZSTD` | `ON`, `OFF` | `ON` | Activer la compression Zstandard ↗.
`ENABLE_TESTS` | `ON`, `OFF` | `OFF` | Compiler les tests.
`ENABLE_CODE_COVERAGE` | `ON`, `OFF` | `OFF` | Compiler avec les options de couverture de code. Cette option ne devrait être utilisée que pour les tests, pour mesurer la couverture de tests.

Les autres options peuvent être affichées avec cette commande :

    cmake -LA

Ou avec l’interface Curses :

    ccmake ..

#### Tests

Les paquets suivants sont nécessaires pour compiler les tests :

- libcpputest-dev

- C++ compiler

Les tests doivent être activés pour compiler WeeChat :

    cmake .. -DENABLE_TESTS=ON

Ils peuvent être lancés après compilation depuis le répertoire de construction :

    ctest -V

### 2.4. Sources Git

Attention : les sources Git sont réservées aux utilisateurs avancés : il se peut que WeeChat ne compile pas et qu’il soit très instable. Vous êtes prévenus !

Pour récupérer les sources Git, tapez cette commande :

    git clone https://github.com/weechat/weechat.git

Suivez alors les instructions du paquet source (voir paquet source).

### 2.5. Rapporter les plantages

Si vous avez eu des plantages, ou si vous souhaitez rapporter tout plantage futur de WeeChat, vous devez :

- Compiler avec :

  - les infos de debug (ou installer un paquet binaire avec les infos de debug),

  - la vérification des adresses (« address sanitizer ») (facultatif).

- Activer les fichiers core sur votre système.

- Installer gdb.

#### Construction en debug

Si vous compilez avec CMake :

    cmake .. -DCMAKE_BUILD_TYPE=Debug

#### Vérification des adresses

Vous pouvez aussi activer la vérification des adresses (« address sanitizer »), ce qui provoquera immédiatement un plantage de WeeChat en cas de problème :

    cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address

Attention | Vous ne devriez activer la vérification des adresses que si vous essayez de provoquer un plantage, ce qui n’est pas recommandé en production.

Une fois compilé et installé, vous devez lancer WeeChat comme ceci :

    ASAN_OPTIONS="detect_odr_violation=0 log_path=asan.log" weechat

En cas de plantage, la trace se trouve dans le fichier `asan.log`.

#### Fichiers core

Pour activer les fichiers core, vous pouvez utiliser l’option weechat.startup.sys_rlimit :

    /set weechat.startup.sys_rlimit "core:-1"

Pour WeeChat ≤ 0.3.8 ou si vous voulez activer les fichiers core avant que WeeChat ne démarre, vous pouvez utiliser la commande `ulimit`.

Par exemple sous Linux avec le shell bash, ajoutez cette ligne dans votre `~/.bashrc` :

    ulimit -c unlimited

Ou une taille maximum :

    ulimit -c 200000

#### Obtenir la trace avec gdb

Lorsque WeeChat se plante, votre système génère un fichier core ou core.12345 (12345 est l’identifiant du processus) si l’option est activée. Ce fichier est créé dans le répertoire où vous avez lancé WeeChat (ce n’est pas le répertoire où WeeChat est installé !).

Note | Sur certains systèmes comme Archlinux, les fichiers core se trouvent dans un autre répertoire tel que /var/lib/systemd/coredump et vous devez utiliser la commande `coredumpctl` pour le lire. Pour plus d’informations, voir cette page wiki ↗.

Par exemple si weechat est installé dans /usr/bin/ et que le fichier core se trouve dans /home/user/, alors il faut lancer gdb avec cette commande :

    gdb /usr/bin/weechat /home/user/core

Puis sous gdb, utilisez la commande `bt full` pour afficher la trace. Vous verrez quelque chose comme ceci :

    (gdb) set logging file /tmp/crash.txt
    (gdb) set logging on
    Copying output to /tmp/crash.txt.
    (gdb) bt full
    #0  0x00007f9dfb04a465 in raise () from /lib/libc.so.6
    #1  0x00007f9dfb04b8e6 in abort () from /lib/libc.so.6
    #2  0x0000000000437f66 in weechat_shutdown (return_code=1, crash=1)
        at /some_path/src/core/weechat.c:351
    #3  <signal handler called>
    #4  0x000000000044cb24 in hook_process_timer_cb (arg_hook_process=0x254eb90,
        remaining_calls=<value optimized out>) at /some_path/src/core/core-hook.c:1364
            hook_process = 0x254eb90
            status = <value optimized out>
    #5  0x000000000044cc7d in hook_timer_exec ()
        at /some_path/src/core/core-hook.c:1025
            tv_time = {tv_sec = 1272693881, tv_usec = 212665}
            ptr_hook = 0x2811f40
            next_hook = 0x0
    #6  0x000000000041b5b0 in gui_main_loop ()
        at /some_path/src/gui/curses/gui-curses-main.c:319
            hook_fd_keyboard = 0x173b600
            tv_timeout = {tv_sec = 0, tv_usec = 0}
            read_fds = {fds_bits = {0 <repeats 16 times>}}
            write_fds = {fds_bits = {0 <repeats 16 times>}}
            except_fds = {fds_bits = {0 <repeats 16 times>}}
            max_fd = <value optimized out>

Vous devez envoyer cette trace aux développeurs, et leur indiquer quelle action a été la cause de ce plantage.

Merci pour votre aide !

#### Debug de WeeChat qui tourne

Pour déboguer WeeChat qui tourne (par exemple si WeeChat semble bloqué), vous pouvez utiliser gdb avec l’identifiant du processus (remplacez 12345 par le PID du processus weechat) :

    gdb /usr/bin/weechat 12345

Ensuite comme pour un crash, utilisez la commande `bt full` :

    (gdb) bt full

## 3. Lancement de WeeChat

Pour lancer WeeChat, tapez cette commande :

    weechat

Lorsque vous lancez WeeChat pour la première fois, les fichiers de configuration par défaut sont créés dans ~/.config/weechat avec les options et valeurs par défaut (voir Fichiers et répertoires).

### 3.1. Options de ligne de commande

-a, --no-connect

  Supprimer la connexion automatique aux serveurs lors du démarrage.

-c, --colors

  Afficher les couleurs par défaut du terminal.

--daemon

  Lancer WeeChat en tâche de fond, comme un daemon (fonctionne seulement avec la commande weechat-headless).

--stdout

  Afficher les messages de log sur la sortie standard plutôt que de les écrire dans le fichier de log (fonctionne seulement avec la commande weechat-headless, non compatible avec l’option "--daemon").

-d, --dir <répertoire>

  Forcer un unique répertoire pour tous les fichiers WeeChat (le répertoire est créé s’il n’est pas trouvé). Quatre répertoires peuvent être donnés, séparés par ":" (dans cet ordre : config, data, cache, runtime). Si cette option n’est pas donnée, la variable d’environnement WEECHAT_HOME est utilisée (si non vide).

-t, --temp-dir

  Créer un répertoire de base WeeChat temporaire et le supprimer en quittant (incompatible avec l’option "-d").
  Le nom du répertoire est automatiquement construit par WeeChat, avec ce modèle : "weechat_temp_XXXXXX" (où "XXXXXX" est aléatoire). Il est créé dans le premier répertoire disponible de cette liste : variable d’environnement "TMPDIR", "/tmp" (cela peut être différent selon le système d’exploitation), variable d’environnement "HOME", répertoire courant.
  Le répertoire de base temporaire a les permissions 0700 (seul le propriétaire peut lire, écrire et exécuter).

-h, --help

  Afficher l’aide.

-i, --build-info

  Afficher les informations de construction et quitter.

-l, --license

  Afficher la licence de WeeChat.

-p, --no-plugin

  Supprimer le chargement automatique des extensions au démarrage.

-P, --plugins <extensions>

  Charger uniquement ces extensions au démarrage (voir /help weechat.plugin.autoload). Si cette option est donnée, l’option weechat.plugin.autoload n’est pas utilisée.

-r, --run-command <commande>

  Lancer la/les commande(s) après le démarrage ; plusieurs commandes peuvent être séparées par des points-virgules, cette option peut être donnée plusieurs fois.

-s, --no-script

  Supprimer le chargement automatique des scripts au démarrage.

--upgrade

  Mettre à jour WeeChat en utilisant les fichiers de session générés avec la commande `/upgrade -quit`.

-v, --version

  Afficher la version de WeeChat.

extension:option

  Option pour une extension.

Quelques options supplémentaires sont disponibles pour du debug seulement :

Attention | N’utilisez AUCUNE de ces options in production !

--no-dlclose

  Do not call the function dlclose after plugins are unloaded. This is useful with tools like Valgrind to display stack for unloaded plugins.

--no-gnutls

  Do not call the init and deinit functions of GnuTLS library. This is useful with tools like Valgrind and electric-fence, to prevent GnuTLS memory errors.

--no-gcrypt

  Do not call the init and deinit functions of Gcrypt library. This is useful with tools like Valgrind, to prevent Gcrypt memory errors.

### 3.2. Variables d’environnement

Des variables d’environnement sont utilisées par WeeChat si elles sont définies :

Nom | Description
--- | ---
`WEECHAT_HOME` | Le répertoire "maison" de WeeChat (avec les fichiers de configuration, logs, scripts, etc.). Même comportement que l’option CMake `WEECHAT_HOME`.
`WEECHAT_PASSPHRASE` | La phrase secrète utilisée pour déchiffrer les données sécurisées.
`WEECHAT_EXTRA_LIBDIR` | Un répertoire supplémentaire pour charger les extensions (depuis le répertoire "plugins" sous ce chemin).

### 3.3. Support des Couleurs

WeeChat peut utiliser jusqu’à 32767 paires de couleur pour afficher le texte dans les barres et la zone de discussion (votre terminal doit supporter 256 couleurs pour pouvoir les utiliser dans WeeChat).

Selon la valeur de la variable d’environnement TERM, vous pouvez avoir les limites suivantes pour les couleurs dans WeeChat :

$TERM | Couleurs | Paires
--- | --- | ---
"rxvt-unicode", "xterm", …​ | 88 | 32767
"rxvt-256color", "xterm-256color", …​ | 256 | 32767
"screen" | 8 | 64
"screen-256color" | 256 | 32767
"tmux" | 8 | 64
"tmux-256color" | 256 | 32767

Vous pouvez lancer `weechat --colors` ou utiliser la commande `/color` dans WeeChat pour afficher les limites de votre environnement.

Quelques valeurs recommandées pour TERM si vous voulez 256 couleurs :

- sous screen : screen-256color

- sous tmux : screen-256color ou tmux-256color

- en dehors de screen/tmux : xterm-256color, rxvt-256color, putty-256color, …​

Si vous utilisez screen, vous pouvez ajouter cette ligne dans votre ~/.screenrc :

Note | Vous devrez peut-être installer le paquet "ncurses-term" pour utiliser ces valeurs dans la variable TERM.

    term screen-256color

Si votre variable TERM a une valeur erronée et que WeeChat est déjà lancé, vous pouvez la changer avec ces deux commandes :

    /set env TERM screen-256color
    /upgrade

### 3.4. Fichiers et répertoires

#### XDG directories

WeeChat utilise les répertoires XDG par défaut (selon la spécification "XDG Base Directory" ↗).
Un répertoire de base unique pour tous les fichiers peut être forcé par l’option CMake `WEECHAT_HOME`, la variable d’environnement `WEECHAT_HOME` ou l’option de ligne de commande `-d` / `--dir`.

Lorsqu’un répertoire de base unique n’est pas forcé, les répertoires XDG sont utilisés et déterminés ainsi :

Répertoire | Valeur par défaut | Valeur de repli si $XDG_XXX n’est pas définie
--- | --- | ---
config | `$XDG_CONFIG_HOME/weechat` | `$HOME/.config/weechat`
data | `$XDG_DATA_HOME/weechat` | `$HOME/.local/share/weechat`
cache | `$XDG_CACHE_HOME/weechat` | `$HOME/.cache/weechat`
runtime | `$XDG_RUNTIME_DIR/weechat` | Identique au répertoire cache

Les fichiers de configuration sont créés avec les valeurs par défaut la première fois que vous lancez WeeChat.

#### Répertoires de WeeChat

Les répertoires de WeeChat sont :

Chemin (1) | Description
--- | ---
`~/.config/weechat/` | Fichiers de configuration WeeChat : `*.conf`, certificats, etc.
`~/.local/share/weechat/` | Fichiers de données WeeChat : logs, scripts, données des scripts, fichiers xfer, etc.
`logs/` | Fichiers de log (un fichier par tampon).
`python/` | Scripts Python.
`autoload/` | Scripts Python chargés automatiquement au démarrage (2).
`perl/` | Scripts Perl.
`autoload/` | Scripts Perl chargés automatiquement au démarrage (2).
`ruby/` | Scripts Ruby.
`autoload/` | Scripts Ruby chargés automatiquement au démarrage (2).
`lua/` | Scripts Lua.
`autoload/` | Scripts Lua chargés automatiquement au démarrage (2).
`tcl/` | Scripts Tcl.
`autoload/` | Scripts Tcl chargés automatiquement au démarrage (2).
`guile/` | Scripts Guile.
`autoload/` | Scripts Guile chargés automatiquement au démarrage (2).
`javascript/` | Scripts JavaScript.
`autoload/` | Scripts JavaScript chargés automatiquement au démarrage (2).
`php/` | Scripts PHP.
`autoload/` | Scripts PHP chargés automatiquement au démarrage (2).
`~/.cache/weechat/` | Fichiers de cache WeeChat : cache des scripts.
`/run/user/1000/weechat/` | Fichiers "runtime" WeeChat : tube FIFO, sockets UNIX Relay.

Note | (1) Les répertoires XDG peuvent être différents selon vos variables d’environnement `XDG_*`. (2) Ce répertoire contient souvent seulement des liens symboliques vers les scripts dans le répertoire parent.

#### Fichiers de WeeChat

Les fichiers dans le répertoire principal de WeeChat sont :

Fichier | Description | Données sensibles
--- | --- | ---
`weechat.conf` | Fichier de configuration principal de WeeChat | Possible (par exemple : liste des canaux sauvés dans la disposition des tampons).
`sec.conf` | Fichier de configuration avec les données sécurisées | Oui, très sensibles : ce fichier ne doit jamais être partagé avec quiconque.
`plugins.conf` | Fichier de configuration des extensions | Possible, cela dépend des extensions/scripts.
`alias.conf` | Fichier de configuration de l’extension alias | Possible, cela dépend des alias.
`buflist.conf` | Fichier de configuration de l’extension buflist | Non.
`charset.conf` | Fichier de configuration de l’extension charset | Non.
`exec.conf` | Fichier de configuration de l’extension exec | Non.
`fifo.conf` | Fichier de configuration de l’extension fifo | Non.
`fset.conf` | Fichier de configuration de l’extension fset | Non.
`guile.conf` | Fichier de configuration de l’extension guile | Non.
`irc.conf` | Fichier de configuration de l’extension irc | Oui : il peut contenir des mots de passes pour les serveurs, nickserv et les canaux (si non stockés dans `sec.conf`).
`javascript.conf` | Fichier de configuration de l’extension javascript | Non.
`logger.conf` | Fichier de configuration de l’extension logger | Non.
`lua.conf` | Fichier de configuration de l’extension lua | Non.
`perl.conf` | Fichier de configuration de l’extension perl | Non.
`php.conf` | Fichier de configuration de l’extension php | Non.
`python.conf` | Fichier de configuration de l’extension python | Non.
`relay.conf` | Fichier de configuration de l’extension relay | Oui : il peut contenir le mot de passe relay et le secret TOTP (si non stockés dans `sec.conf`), les adresses IP/origines websocket autorisées et les ports ouverts.
`ruby.conf` | Fichier de configuration de l’extension ruby | Non.
`script.conf` | Fichier de configuration de l’extension script | Non.
`tcl.conf` | Fichier de configuration de l’extension tcl | Non.
`spell.conf` | Fichier de configuration de l’extension spell | Non.
`trigger.conf` | Fichier de configuration de l’extension trigger | Possible, cela dépend des triggers.
`typing.conf` | Fichier de configuration de l’extension typing | Non.
`xfer.conf` | Fichier de configuration de l’extension xfer | Non.
`weechat.log` | Fichier de log WeeChat | Non.

Important

Il n’est pas recommandé de modifier les fichiers de configuration à la main car WeeChat peut les écrire à tout moment (par exemple sur /quit) et après chaque changement vous devez lancer la commande /reload (avec le risque de perdre d’autres changements qui n’auraient pas été sauvés avec /save).
Vous pouvez utiliser la commande /set, qui vérifie la valeur et applique les changements immédiatement.

## 4. Mise à jour

Si une nouvelle version stable de WeeChat est disponible, il est temps pour vous de passer à cette version.

Avant toute chose, vous devez installer la nouvelle version de WeeChat, soit via votre gestionnaire de paquets ou en le compilant vous-même, de telle sorte que le nouveau binaire `weechat` et tous les fichiers requis sont dans les mêmes répertoires.
Cela peut être fait pendant que WeeChat tourne.

### 4.1. Commande de mise à jour

WeeChat peut redémarrer le nouveau binaire avec la commande /upgrade : le contenu des tampons et les connexions non TLS sont préservées.
Les connexions TLS sont perdues pendant la mise à jour et sont automatiquement rétablies après la mise à jour (le rechargement des sessions TLS n’est pas possible actuellement avec GnuTLS).

La commande peut aussi être utilisée si vous devez redémarrer la machine, par exemple pour mettre à jour le noyau ou déplacer WeeChat vers une autre machine :

    /upgrade -quit

Cela sauvegarde l’état actuel dans des fichiers `*.upgrade`. Vous pouvez soit rebooter ou déplacer les répertoires WeeChat (config, data, cache) vers une autre machine, et redémarrer WeeChat plus tard avec cette commande :

    weechat --upgrade

### 4.2. Redémarrage après mise à jour

#### Notes de mise à jour

Après une mise à jour, il est fortement recommandé de lire le fichier UPGRADING.md ↗ qui contient des informations importantes sur les changements majeurs et quelques actions manuelles qui pourraient être nécessaires.

Vous devez lire les versions entre votre version ancienne (exclue) et votre nouvelle version (incluse).
Par exemple si vous passez de la version 4.0.0 à 4.3.0, vous devez lire les versions 4.0.1 à 4.3.0.

#### Mise à jour de la configuration

WeeChat a un système de mise à jour automatique des fichiers de configuration (`*.conf`) :

- les nouvelles options sont silencieusement ajoutées avec la valeur par défaut

- les options obsolètes sont automatiquement supprimées et WeeChat affiche un avertissement avec la valeur lue dans le fichier.

Exemple d’avertissement lorsqu’une option a été supprimée :

    =!= Attention : /home/user/.config/weechat/sec.conf, ligne 15 : option inconnue pour la section "crypt" : passphrase_file = ""

Cela signifie que l’option `sec.crypt.passphrase_file` a été supprimée, et vous aviez la valeur définie à une chaîne vide, ce qui était la valeur par défaut dans la version précédente (dans ce cas aucune action manuelle n’est nécessaire).

## 5. Interface

### 5.1. Organisation de l’écran

Exemple de terminal avec WeeChat :

     ▼ barre "buflist"   ▼ barre "title"
    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Bienvenue sur #test, canal de test                                          │
    │  weechat│12:52:27   --> | Flashy (flashcode@weechat.org) a rejoint #test     │@Flashy│
    │2.  #test│12:52:27    -- | Pseudos #test: [@Flashy @joe +weebot peter]        │@joe   │
    │3.  #abc │12:52:27    -- | Canal #test: 4 pseudos (2 ops, 1 voice, 1 normal)  │+weebot│
    │4.  #def │12:52:27    -- | Canal créé le Tue Jan 27 06:30:17 2009             │peter  │
    │5.  #ghi │12:54:15 peter | bonjour !                                          │       │
    │         │12:55:01  @joe | salut                                              │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │[12:55] [5] [irc/libera] 2:#test(+n){4}* M [H: 3:#abc(2,5), 5]              │
    │         │[@Flashy(i)] salut peter !█                                                 │
    └──────────────────────────────────────────────────────────────────────────────────────┘
                ▲ barres "status" et "input"                            barre "nicklist" ▲

Par défaut, l’écran est composé des zones suivantes :

- zone de discussion (milieu de l’écran) avec les lignes de discussion, et pour chaque ligne :

  - heure

  - préfixe (avant "|")

  - message (après "|")

- barres autour de la zone de discussion, les barres par défaut sont :

  - barre buflist, sur la gauche

  - barre title, au dessus de la zone de discussion

  - barre status, sous la zone de discussion

  - barre input, sous la barre de statut

  - barre nicklist, sur la droite

La barre buflist contient les objets (items) suivants par défaut :

Objet (item) | Exemple | Description
--- | --- | ---
buflist | `1.weechat` | Liste des tampons.

La barre title contient les objets (items) suivants par défaut :

Objet (item) | Exemple | Description
--- | --- | ---
buffer_title | `Bienvenue sur #test` | Titre du tampon.

La barre status contient les objets (items) suivants par défaut :

Objet (item) | Exemple | Description
--- | --- | ---
time | `12:55` | Heure.
buffer_last_number | `5` | Numéro du dernier tampon (peut être différent de `buffer_count` si l’option weechat.look.buffer_auto_renumber est `off`).
buffer_plugin | `irc/libera` | Extension du tampon courant (l’extension irc peut afficher le nom du serveur IRC auquel est rattaché ce tampon).
buffer_number | `2` | Numéro du tampon courant.
buffer_name | `#test` | Nom du tampon courant.
buffer_modes | `+n` | Modes du canal IRC.
buffer_nicklist_count | `4` | Nombre de pseudos affichés dans la liste des pseudos.
buffer_zoom | ! | `!` signifie que le tampon mélangé est zoomé, une valeur vide signifie que tous les tampons mélangés sont affichés.
buffer_filter | `*` | Indicateur de filtrage : `*` signifie que des lignes sont filtrées (cachées), une valeur vide signifie que toutes les lignes sont affichées.
mouse_status | `M` | Statut de la souris (vide si la souris est désactivée), voir la commande /mouse et Touches de bascule.
scroll | `-PLUS(50)-` | Indicateur de scroll, avec le nombre de lignes sous la dernière ligne affichée.
lag | `Lag: 2.5` | Indicateur de "lag" (ralentissements réseau), en secondes (caché si le lag est faible).
hotlist | `H: 3:#abc(2,5), 5` | Liste des tampons où il y a de l’activité (messages non lus) (dans cet exemple, 2 highlights et 5 messages non lus sur #abc, un message non lu sur le tampon numéro 5).
typing | `Écrit : bob, (alice)` | Notification de saisie, voir Notifications de saisie.
completion | `abc(2) def(5)` | Liste des mots pour la complétion, avec le nombre de complétions possibles pour chaque mot.

La barre input contient les objets (items) suivants par défaut :

Objet (item) | Exemple | Description
--- | --- | ---
input_prompt | `@Flashy(i)` | Prompt, pour irc : pseudo et modes (le mode "+i" signifie invisible sur libera).
away | `absent` | Indicateur d’absence.
input_search | `Recherche lignes (~ str,msg)` | Indicateur de recherche de texte (voir ci-dessous).
input_paste | `Coller 7 lignes ? [ctrl-y] Oui [ctrl-n] Non` | Question à l’utilisateur pour coller des lignes.
input_text | `salut peter !` | Texte entré.

Il y a deux modes de recherche :

- recherche dans les lignes, par exemple `[Recherche lignes (~ str,msg)]`, avec les informations suivantes :

  - `~` : insensible à la casse

  - `==` : sensible à la casse

  - `str` : recherche de chaîne

  - `regex` : recherche d’expression régulière

  - `msg` : recherche dans les messages

  - `pre` : recherche dans les préfixes

  - `pre\|msg` : recherche dans les préfixes et messages

- recherche dans l’historique de commandes, par exemple `[Recherche commande (~ str,local)]`, avec les informations suivantes :

  - `~` : insensible à la casse

  - `==` : sensible à la casse

  - `str` : recherche de chaîne

  - `regex` : recherche d’expression régulière

  - `local` : recherche dans l’historique local du tampon

  - `global` : recherche dans l’historique global.

La barre nicklist contient les objets (items) suivants par défaut :

Objet (item) | Exemple | Description
--- | --- | ---
buffer_nicklist | `@Flashy` | Liste des pseudos sur le tampon courant.

Autres objets (non utilisés dans des barres par défaut) :

Objet (item) | Exemple | Description
--- | --- | ---
buffer_count | `5` | Nombre total de tampons ouverts.
buffer_nicklist_count_all | `4` | Nombre de groupes et pseudos visibles dans la liste de pseudos.
buffer_nicklist_count_groups | `0` | Nombre de groupes visibles dans la liste de pseudos.
buffer_short_name | `#test` | Nom court du tampon courant.
buflist2 | `1.weechat` | Liste des tampons, deuxième objet de barre (voir l’option buflist.look.use_items).
buflist3 | `1.weechat` | Liste des tampons, troisième objet de barre (voir l’option buflist.look.use_items).
buflist4 | `1.weechat` | Liste des tampons, quatrième objet de barre (voir l’option buflist.look.use_items).
buflist5 | `1.weechat` | Liste des tampons, cinquième objet de barre (voir l’option buflist.look.use_items).
fset | `buflist.look.sort: …` | Aide sur l’option sélectionnée dans le tampon fset.
irc_channel | `#test` | Nom de canal IRC courant.
irc_host | `user@host.com` | Hôte sur IRC.
irc_nick | `Flashy` | Pseudo IRC.
irc_nick_host | `Flashy!user@host.com` | Pseudo et hôte IRC.
irc_nick_modes | `i` | Modes IRC pour le pseudo.
irc_nick_prefix | `@` | Préfixe de pseudo IRC sur le canal.
spacer |  | Objet spécial utilisé pour aligner le texte dans les barres, voir Objet d’espacement.
spell_dict | `fr,en` | Dictionnaires utilisés pour la vérification de l’orthographe sur le tampon courant.
spell_suggest | `print,prone,prune` | Suggestions pour le mot sous le curseur (si mal orthographié).
tls_version | `TLS1.3` | Version de TLS utilisée sur le serveur IRC courant.
window_number | `2` | Numéro de la fenêtre courante.

Chaque aspect de la disposition peut être configuré par la command appropriée : `/bar` pour configurer les barres, /buffer et `/window` pour configurer les tampons et fenêtres, et /layout pour nommer, sauver et restaurer la disposition de l’écran et l’association entre les fenêtres et les tampons.

### 5.2. Ligne de commande

La ligne de commande WeeChat (située en bas de la fenêtre) permet d’exécuter des commandes ou d’envoyer du texte vers le tampon.

#### Syntaxe

Les commandes débutent par un caractère "/", suivi du nom de la commande. Par exemple pour afficher la liste de toutes les options :

    /set

Le texte envoyé à un tampon est tout texte ne commençant pas par le caractère "/", par exemple pour envoyer bonjour sur le tampon courant :

    bonjour

Il est cependant possible de faire débuter un texte par "/" en le doublant. Par exemple pour envoyer le texte `/set` sur le tampon courant :

    //set

#### Codes couleurs

Pour certaines extensions comme IRC, il est possible d’utiliser des codes couleur et attributs comme suit (appuyer sur `Ctrl`+`c` puis sur la lettre qui suit et éventuellement une valeur) :

Touche | Description
--- | ---
`Ctrl`+`c`, `b` | Texte gras.
`Ctrl`+`c`, `c`, `xx` | Couleur du texte `xx` (voir la liste des couleurs ci-dessous).
`Ctrl`+`c`, `c`, `xx`, `,`, `yy` | Couleur du texte `xx` et du fond `yy` (voir la liste des couleurs ci-dessous).
`Ctrl`+`c`, `d`, `xxxxxx` | Couleur du texte `xxxxxx` (RGB en hexadécimal, par exemple `FF0000` pour du rouge).
`Ctrl`+`c`, `d`, `xxxxxx`, `,`, `yyyyyy` | Couleur du texte `xxxxxx` et du fond `yyyyyy` (RGB en hexadécimal).
`Ctrl`+`c`, `i` | Texte en italique.
`Ctrl`+`c`, `o` | Désactiver la couleur et tous les attributs.
`Ctrl`+`c`, `v` | Vidéo inverse (inversion de la couleur d’écriture et du fond).
`Ctrl`+`c`, `_` | Texte souligné.

Note | Le même code (sans le numéro pour `Ctrl`+`c`, `c` et `Ctrl`+`c`, `d`) peut être utilisé pour stopper l’attribut défini.

Les codes couleur pour `Ctrl`+`c`, `c` sont :

IRC color | WeeChat color
--- | ---
`00` | white
`01` | black
`02` | blue
`03` | green
`04` | lightred
`05` | red
`06` | magenta
`07` | brown
`08` | yellow
`09` | lightgreen
`10` | cyan
`11` | lightcyan
`12` | lightblue
`13` | lightmagenta
`14` | darkgray
`15` | gray
`16` | 52
`17` | 94
`18` | 100
`19` | 58
`20` | 22
`21` | 29
`22` | 23
`23` | 24
`24` | 17
`25` | 54
`26` | 53
`27` | 89
`28` | 88
`29` | 130
`30` | 142
`31` | 64
`32` | 28
`33` | 35
`34` | 30
`35` | 25
`36` | 18
`37` | 91
`38` | 90
`39` | 125
`40` | 124
`41` | 166
`42` | 184
`43` | 106
`44` | 34
`45` | 49
`46` | 37
`47` | 33
`48` | 19
`49` | 129
`50` | 127
`51` | 161
`52` | 196
`53` | 208
`54` | 226
`55` | 154
`56` | 46
`57` | 86
`58` | 51
`59` | 75
`60` | 21
`61` | 171
`62` | 201
`63` | 198
`64` | 203
`65` | 215
`66` | 227
`67` | 191
`68` | 83
`69` | 122
`70` | 87
`71` | 111
`72` | 63
`73` | 177
`74` | 207
`75` | 205
`76` | 217
`77` | 223
`78` | 229
`79` | 193
`80` | 157
`81` | 158
`82` | 159
`83` | 153
`84` | 147
`85` | 183
`86` | 219
`87` | 212
`88` | 16
`89` | 233
`90` | 235
`91` | 237
`92` | 239
`93` | 241
`94` | 244
`95` | 247
`96` | 250
`97` | 254
`98` | 231
`99` | default

Note | Pour voir toutes les couleurs disponibles dans votre terminal, vous pouvez taper `/color` puis `Alt`+`c` dans WeeChat ou lancez cette commande dans le terminal : `weechat --colors`.

Exemple : affichage de "bonjour Alice !" avec "bonjour" en bleu clair gras, et "Alice" en rouge clair souligné :

    ^Cc12^Cbbonjour ^Cb^Cc04^C_Alice^C_^Cc !

Touches :

`Ctrl`+`c` `c` `1` `2` `Ctrl`+`c` `b`
`b` `o` `n` `j` `o` `u` `r` `Espace`
`Ctrl`+`c` `b` `Ctrl`+`c` `c` `0` `4` `Ctrl`+`c` `_`
`A` `l` `i` `c` `e`
`Ctrl`+`c` `_` `Ctrl`+`c` `c`
`Espace` `!`

Note | Dans l’extension irc, vous pouvez réassigner les couleurs en utilisant l’option irc.color.mirc_remap.

### 5.3. Tampons et fenêtres

Un tampon (buffer) est composé d’un numéro, un nom, des lignes affichées (ainsi que d’autres données).

Exemples de tampons :

- tampon core (créé par WeeChat au démarrage, ne peut pas être fermé)

- serveur irc (affiche les messages du serveur)

- canal irc

- messages privés irc

Une fenêtre (window) est une zone de l’écran affichant un tampon. Il est possible de découper l’écran horizontalement ou verticalement en plusieurs fenêtres (exemples ci-dessous, voir la commande /window pour plus d’informations).

Chaque fenêtre affiche un tampon. Un tampon peut être caché (affiché par aucune fenêtre) ou affiché par une ou plusieurs fenêtres.

Les dispositions d’écran et l’association entre les fenêtres et les tampons peuvent être sauvées et restaurées.

#### Exemples

Exemple de découpage horizontal (`/window splith`) :

                                   ▼ fenêtre n°2 (tampon n°4)
    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Bienvenue sur #def                                                          │
    │  weechat│12:55:12     Max | bonjour                                          │@Flashy│
    │2.  #test│12:55:20 @Flashy | salut Max !                                      │Max    │
    │3.  #abc │                                                                    │       │
    │4.  #def │                                                                    │       │
    │5.  #ghi │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │[12:55] [5] [irc/libera] 4:#def(+n){2}                                      │
    │         │[@Flashy]                                                                   │
    │         │────────────────────────────────────────────────────────────────────────────│
    │         │Bienvenue sur #abc                                                          │
    │         │12:54:15 peter | ohé !                                              │@Flashy│
    │         │12:55:01  @joe | salut                                              │@joe   │
    │         │                                                                    │+weebot│
    │         │                                                                    │peter  │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │[12:55] [5] [irc/libera] 3:#abc(+n){4}                                      │
    │         │[@Flashy] salut peter !█                                                    │
    └──────────────────────────────────────────────────────────────────────────────────────┘
                                   ▲ fenêtre n°1 (tampon n°3)

Exemple de découpage vertical (`/window splitv`) :

    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Bienvenue sur #abc                   │Bienvenue sur #def                    │
    │  weechat│12:54:15 peter | ohé !       │@Flashy│12:55:12     Max | bonjour    │@Flashy│
    │2.  #test│12:55:01  @joe | salut       │@joe   │12:55:20 @Flashy | salut Max  │Max    │
    │3.  #abc │                             │+weebot│                              │       │
    │4.  #def │                             │peter  │                              │       │
    │5.  #ghi │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │[12:55] [5] [irc/libera] 3:#abc(+n)  │[12:55] [5] [irc/libera] 4:#def(+n)   │
    │         │[@Flashy] salut peter !█             │[@Flashy]                             │
    └──────────────────────────────────────────────────────────────────────────────────────┘
                     ▲ fenêtre n°1 (tampon n°3)            ▲ fenêtre n°2 (tampon n°4)

Exemple de découpage vertical + horizontal :

                                                           ▼ fenêtre n°3 (tampon n°5)
    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Bienvenue sur #abc                   │Bienvenue sur #ghi                    │
    │  weechat│12:54:15 peter | ohé !       │@Flashy│12:55:42 @Flashy | salut      │@Flashy│
    │2.  #test│12:55:01  @joe | salut       │@joe   │12:55:56    alex | salut      │alex   │
    │3.  #abc │                             │+weebot│                              │       │
    │4.  #def │                             │peter  │                              │       │
    │5.  #ghi │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │[12:55] [5] [irc/libera] 5:#ghi(+n)   │
    │         │                             │       │[@Flashy]                             │
    │         │                             │       │──────────────────────────────────────│
    │         │                             │       │Bienvenue sur #def                    │
    │         │                             │       │12:55:12     Max | bonjour    │@Flashy│
    │         │                             │       │12:55:20 @Flashy | salut Max  │Max    │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │[12:55] [5] [irc/libera] 3:#abc(+n)  │[12:55] [5] [irc/libera] 4:#def(+n)   │
    │         │[@Flashy] salut peter !█             │[@Flashy]                             │
    └──────────────────────────────────────────────────────────────────────────────────────┘
                     ▲ fenêtre n°1 (tampon n°3)            ▲ fenêtre n°2 (tampon n°4)

#### Affichage dépouillé

Un affichage spécial, appelé "dépouillé" (bare display) peut être utilisé pour un clic facile sur les URLs longs et la sélection de texte (avec la souris).

L’affichage dépouillé a les caractéristiques suivantes :

- Il n’affiche que le contenu du tampon courant : pas de découpage de fenêtres ni de barre (pas de titre, liste de pseudos, statut, ligne de commande, …​).

- Le support souris de WeeChat est désactivé (s’il avait été activé) : vous pouvez utiliser votre souris comme vous le faites dans le terminal pour cliquer sur les URLs et sélectionner du texte.

- Ncurses n’est pas utilisé, par conséquent les URLs ne sont pas coupés en fin de ligne.

La touche par défaut pour activer l’affichage dépouillé est `Alt`+`l` (`L`), et la même touche pour en sortir (ou par défaut tout changement dans la ligne de commande sortira de l’affichage dépouillé, voir l’option weechat.look.bare_display_exit_on_input).

Le format de l’heure peut être personnalisé avec l’option weechat.look.bare_display_time_format.

L’affichage dépouillé peut être activé pour un temps donné en utilisant la commande /window.

Si WeeChat ressemble à ceci :

    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Bienvenue sur #abc                                                          │
    │  weechat│12:52:27   --> | Flashy (flashcode@weechat.org) a rejoint #abc      │@Flashy│
    │2.  #test│12:52:27    -- | Pseudos #abc: [@Flashy @joe +weebot peter]         │@joe   │
    │3.  #abc │12:52:27    -- | Canal #abc: 4 pseudos (2 ops, 1 voice, 1 normal)   │+weebot│
    │4.  #def │12:52:27    -- | Canal créé le Tue Jan 27 06:30:17 2009             │peter  │
    │5.  #ghi │12:54:15 peter | bonjour !                                          │       │
    │         │12:55:01  @joe | peter: hook_process: https://weechat.org/files/doc │       │
    │         │               | /weechat/devel/weechat_plugin_api.en.html#_weechat │       │
    │         │               | _hook_process                                      │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │[12:55] [5] [irc/libera] 3:#abc(+n){4}                                      │
    │         │[@Flashy(i)] salut peter !█                                                 │
    └──────────────────────────────────────────────────────────────────────────────────────┘

L’écran ressemblera à ça en mode dépouillé :

    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │12:52 --> Flashy (flashcode@weechat.org) a rejoint #abc                               │
    │12:52 -- Pseudos #abc: [@Flashy @joe +weebot peter]                                   │
    │12:52 -- Canal #abc: 4 pseudos (2 ops, 1 voice, 1 normal)                             │
    │12:52 -- Canal créé le Tue Jan 27 06:30:17 2009                                       │
    │12:54 <peter> bonjour !                                                               │
    │12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/weechat/devel/weechat_│
    │plugin_api.en.html#_weechat_hook_process                                              │
    └──────────────────────────────────────────────────────────────────────────────────────┘

Donc vous pouvez cliquer l’URL de joe sans problème dans votre terminal (bien entendu cela suppose que votre terminal permet le clic sur les URLs).

### 5.4. Tampons

#### Format des lignes

Les lignes affichées dans les tampons formatés ont les champs suivants :

Champ | Affiché | Description
--- | --- | ---
date/heure (message) | Oui | Date/heure du message (peut être dans le passé).
date/heure (print) | Non | Date/heure lorsque WeeChat affiche le message.
préfixe | Oui | Préfixe du message, couramment un pseudo.
message | Oui | Le message lui-même.
affichée | Non | Booléen : vrai si la ligne est affichée, faux si la ligne est filtrée avec la commande /filter.
highlight | Non | Booléen : vrai si la ligne a un highlight, faux sinon.
étiquettes | Avec `/debug tags` | Étiquettes associées avec la ligne (voir les étiquettes des lignes).

L’affichage des lignes peut être personnalisé avec des nombreuses options de présentation (weechat.look.*) et de couleur (weechat.color.chat_*).

#### Étiquettes des lignes

WeeChat utilise des étiquettes (« tags ») dans les lignes pour différentes raisons :

- highlight

- niveau de notification

- enregistrement (« log »)

- utilisation de la commande /filter

Les étiquettes peuvent être affichées avec la commande `/debug tags` (même commande pour les cacher).

Les étiquettes couramment utilisées (liste non exhaustive) :

Étiquette | Description
--- | ---
`no_filter` | La ligne ne peut pas être filtrée.
`no_highlight` | Aucun highlight n’est possible sur cette ligne.
`no_log` | La ligne n’est pas écrite dans le fichier de log.
`log0 … log9` | Niveau de log pour la ligne (voir la commande /logger).
`notify_none` | La ligne ne doit pas être ajoutée à la "hotlist". (1)
`notify_message` | La ligne est un message utilisateur. (1)
`notify_private` | La ligne est un message privé. (1)
`notify_highlight` | La ligne est un message avec un highlight. (1)
`self_msg` | Message de soi-même.
`nick_xxx` | Le message vient du pseudo "xxx".
`prefix_nick_ccc` | Le préfixe est un pseudo avec la couleur "ccc".
`host_xxx` | Nom d’utilisateur et hôte dans le message.
`irc_xxx` | Message IRC "xxx" (peut-être une commande ou un numérique sur 3 chiffres).
`irc_numeric` | Message IRC numérique.
`irc_error` | Erreur du serveur IRC.
`irc_action` | Action d’un pseudo (commande `/me`).
`irc_ctcp` | Message CTCP.
`irc_ctcp_reply` | Réponse à un message CTCP.
`irc_smart_filter` | Message IRC qui peut être filtré avec le "smart filter" (filtre intelligent).
`away_info` | Message avec une info d’absence.

Note | (1) Lorsque aucune étiquette "notify_xxx" n’est présente, le niveau de notification par défaut est "low". Si une étiquette "notify_xxx" est présente, le niveau de notification réel peut être différent, par exemple si un niveau maximum de hotlist est utilisé pour un pseudo, le niveau de notification peut être inférieur à la valeur de l’étiquette.

#### Variables locales

Des variables locales peuvent être définies dans les tampons.

Une variable locale a :

- un nom (chaîne)

- une valeur (chaîne, peut être vide).

Les variables locales peuvent être définies par WeeChat, les extensions, les scripts, ou manuellement sur la ligne de commande, dans le tampon.

Par exemple pour ajouter la variable locale "completion_default_template" :

    /buffer setvar completion_default_template %(my_completion)

Pour afficher les variables locales du tampon courant :

    /buffer listvar

Pour supprimer la variable locale "completion_default_template" :

    /buffer delvar completion_default_template

Par défaut WeeChat et ses extensions par défaut interprètent ces variables :

Nom | Valeur | Description
--- | --- | ---
`away` | toute chaîne | Message d’absence sur le serveur, défini par l’extension irc.
`channel` | toute chaîne | Nom du canal, défini par les extensions irc/xfer et le tampon de debug des extensions relay/trigger.
`charset_modifier` | toute chaîne | Modificateur de charset du tampon serveur, défini par l’extension irc.
`completion_default_template` | toute chaîne | Modèle de complétion par défaut pour le tampon, qui remplace l’option `weechat.completion.default_template`.
`filter` | toute chaîne | Filtre défini sur certains tampons comme `/fset`, `/list` (irc), `/server raw` (irc) et `/script`.
`host` | toute chaîne | Nom d’hôte personnel (si connu), défini par l’extension irc.
`lag` | toute chaîne | Lag sur le serveur, défini par l’extension irc.
`name` | toute chaîne | Nom du tampon (attention, ce n’est pas le nom complet du tampon et ce nom n’est pas suffisant pour identifier ou chercher un tampon).
`nick` | toute chaîne | Pseudo personnel, défini par les extensions irc et xfer.
`no_log` | `1` (or any non-empty string) | Si défini, l’extension logger n’écrira pas le "log" du tampon sur disque.
`plugin` | toute chaîne | Nom de l’extension qui a créé le tampon (`core` pour les tampons WeeChat).
`script_close_cb` | toute chaîne | Nom de la fonction de rappel pour la fermeture, défini par un script pour le tampon.
`script_close_cb_data` | toute chaîne | Données pour la fonction de rappel pour la fermeture, définies par un script pour le tampon.
`script_input_cb` | toute chaîne | Nom de la fonction de rappel d’entrée, défini par un script pour le tampon.
`script_input_cb_data` | toute chaîne | Données pour la fonction de rappel d’entrée, définies par un script pour le tampon.
`script_name` | toute chaîne | Nom du script qui a créé le tampon.
`server` | toute chaîne | Nom du serveur, défini par l’extension irc et le tampon de debug des extensions relay/trigger.
`spell_suggest` | toute chaîne | Mot mal orthographié et ses suggestions (format : "mot:suggestions"), défini par l’extension spell.
`trigger_filter` | toute chaîne | Filtre trigger, défini par l’extension trigger.
`type` | toute chaîne, par exemple : `channel`, `debug`, `exec`, `option`, `private`, `relay`, `script`, `server`, `user`, `xfer` | Type de tampon, défini par WeeChat et plusieurs extensions.

Note | Les extensions et script externes peuvent définir et utiliser d’autres variables locales.

### 5.5. Liste des tampons

L’extension Buflist affiche une liste des tampons dans un objet de barre appelé "buflist" (quatre autres objets de barre "buflist2", "buflist3", "buflist4" et "buflist5" sont également disponibles).
Une barre par défaut "buflist" est créée au démarrage avec cet objet de barre.

#### Commandes

- `buflist`: bar item with list of buffers

    /buflist  enable|disable|toggle
              bar
              refresh [<item>[,<item>...]]

     enable: enable buflist
    disable: disable buflist
     toggle: toggle buflist
        bar: add the "buflist" bar
    refresh: force the refresh of some bar items (if no item is given, all bar items used are refreshed, according to option buflist.look.use_items)

    The lines with buffers are displayed using string evaluation (see /help eval for the format), with these options:
      - buflist.look.display_conditions: conditions to display a buffer in the list
      - buflist.format.buffer: format for a buffer which is not current buffer
      - buflist.format.buffer_current: format for the current buffer

    The following variables can be used in these options:
      - bar item data (see hdata "bar_item" in API doc for a complete list), for example:
        - ${bar_item.name}
      - window data, where the bar item is displayed (there's no window in root bars, see hdata "window" in API doc for a complete list), for example:
        - ${window.number}
        - ${window.buffer.full_name}
      - buffer data (see hdata "buffer" in API doc for a complete list), for example:
        - ${buffer.number}
        - ${buffer.name}
        - ${buffer.full_name}
        - ${buffer.short_name}
        - ${buffer.nicklist_nicks_count}
      - irc_server: IRC server data, defined only on an IRC buffer (see hdata "irc_server" in API doc)
      - irc_channel: IRC channel data, defined only on an IRC channel buffer (see hdata "irc_channel" in API doc)
      - extra variables added by buflist for convenience:
        - ${format_buffer}: the evaluated value of option buflist.format.buffer; this can be used in option buflist.format.buffer_current to just change the background color for example
        - ${current_buffer}: a boolean ("0" or "1"), "1" if this is the current buffer; it can be used in a condition: ${if:${current_buffer}?...:...}
        - ${merged}: a boolean ("0" or "1"), "1" if the buffer is merged with at least another buffer; it can be used in a condition: ${if:${merged}?...:...}
        - ${format_number}: indented number with separator (evaluation of option buflist.format.number)
        - ${number}: indented number, for example " 1" if there are between 10 and 99 buffers; for merged buffers, this variable is set with number for the first buffer and spaces for the next buffers with same number
        - ${number2}: indented number, for example " 1" if there are between 10 and 99 buffers
        - ${number_displayed}: "1" if the number is displayed, otherwise "0"
        - ${indent}: indentation for name (channel, private and list buffers are indented) (evaluation of option buflist.format.indent)
        - ${format_nick_prefix}: colored nick prefix for a channel (evaluation of option buflist.format.nick_prefix)
        - ${color_nick_prefix}: color of nick prefix for a channel (set only if the option buflist.look.nick_prefix is enabled)
        - ${nick_prefix}: nick prefix for a channel (set only if the option buflist.look.nick_prefix is enabled)
        - ${format_name}: formatted name (evaluation of option buflist.format.name)
        - ${name}: the short name (if set), with a fallback on the name
        - ${color_hotlist}: the color depending on the highest hotlist level for the buffer (evaluation of option buflist.format.hotlist_xxx where xxx is the level)
        - ${format_hotlist}: the formatted hotlist (evaluation of option buflist.format.hotlist)
        - ${hotlist}: the raw hotlist
        - ${hotlist_priority}: "none", "low", "message", "private" or "highlight"
        - ${hotlist_priority_number}: -1 = none, 0 = low, 1 = message, 2 = private, 3 = highlight
        - ${format_lag}: the lag for an IRC server buffer, empty if there's no lag (evaluation of option buflist.format.lag)
        - ${format_tls_version}: indicator of TLS version for a server buffer, empty for channels (evaluation of option buflist.format.tls_version)

#### Options

Sections dans le fichier buflist.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`format` | `/set buflist.format.*` | Formats utilisés pour l’affichage de la liste des tampons.
`look` | `/set buflist.look.*` | Aspect/présentation.

Options :

- buflist.format.buffer

  - description: format of each line with a buffer (note: content is evaluated, see /help buflist); example: standard format for bar item "buflist" and only the buffer number between square brackets for other bar items ("buflist2" to "buflist5"): "${if:${bar_item.name}==buflist?${format_number}${indent}${format_nick_prefix}${color_hotlist}${format_name}:[${number}]}"

  - type: string

  - values: any string

  - default value: `"${format_number}${indent}${format_nick_prefix}${color_hotlist}${format_name}"`

- buflist.format.buffer_current

  - description: format for the line with current buffer (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${color:,17}${format_buffer}"`

- buflist.format.hotlist

  - description: format for hotlist (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `" ${color:green}(${hotlist}${color:green})"`

- buflist.format.hotlist_highlight

  - description: format for a buffer with hotlist level "highlight" (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${color:magenta}"`

- buflist.format.hotlist_low

  - description: format for a buffer with hotlist level "low" (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${color:white}"`

- buflist.format.hotlist_message

  - description: format for a buffer with hotlist level "message" (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${color:brown}"`

- buflist.format.hotlist_none

  - description: format for a buffer not in hotlist (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${color:default}"`

- buflist.format.hotlist_private

  - description: format for a buffer with hotlist level "private" (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${color:green}"`

- buflist.format.hotlist_separator

  - description: separator for counts in hotlist (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${color:default},"`

- buflist.format.indent

  - description: string displayed to indent channel, private and list buffers (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `" "`

- buflist.format.lag

  - description: format for lag on an IRC server buffer (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `" ${color:green}[${color:brown}${lag}${color:green}]"`

- buflist.format.name

  - description: format for buffer name (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${name}"`

- buflist.format.nick_prefix

  - description: format for nick prefix on a channel (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${color_nick_prefix}${nick_prefix}"`

- buflist.format.number

  - description: format for buffer number, ${number} is the indented number (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `"${color:green}${number}${if:${number_displayed}?.: }"`

- buflist.format.tls_version

  - description: format for TLS version on an IRC server buffer (note: content is evaluated, see /help buflist)

  - type: string

  - values: any string

  - default value: `" ${color:default}(${if:${tls_version}==TLS1.3?${color:green}:${if:${tls_version}==TLS1.2?${color:yellow}:${color:red}}}${translate:${tls_version}}${color:default})"`

- buflist.look.add_newline

  - description: add newline between the buffers displayed, so each buffer is displayed on a separate line (recommended); if disabled, newlines must be manually added in the formats with "${\n}", and the mouse actions are not possible anymore

  - type: boolean

  - values: on, off

  - default value: `on`

- buflist.look.auto_scroll

  - description: automatically scroll the buflist bar to always see the current buffer (this works only with a bar on the left/right position with a "vertical" filling); this value is the percent number of lines displayed before the current buffer when scrolling (-1 = disable scroll); for example 50 means that after a scroll, the current buffer is at the middle of bar, 0 means on top of bar, 100 means at bottom of bar

  - type: integer

  - values: -1 .. 100

  - default value: `50`

- buflist.look.display_conditions

  - description: conditions to display a buffer (note: content is evaluated, see /help buflist); for example to hide server buffers if they are merged with core buffer: "${buffer.hidden}==0 && ((${type}!=server && ${buffer.full_name}!=core.weechat) || ${buffer.active}==1)"

  - type: string

  - values: any string

  - default value: `"${buffer.hidden}==0"`

- buflist.look.enabled

  - description: enable buflist; it is recommended to use this option instead of just hiding the bar because it also removes some internal hooks that are not needed anymore when the bar is hidden; you can also use the command "/buflist toggle" or use the default key alt+shift+b

  - type: boolean

  - values: on, off

  - default value: `on`

- buflist.look.mouse_jump_visited_buffer

  - description: if enabled, clicks with left/right buttons on the line with current buffer jump to previous/next visited buffer

  - type: boolean

  - values: on, off

  - default value: `off`

- buflist.look.mouse_move_buffer

  - description: if enabled, mouse gestures (drag & drop) move buffers in list

  - type: boolean

  - values: on, off

  - default value: `on`

- buflist.look.mouse_wheel

  - description: if enabled, mouse wheel up/down actions jump to previous/next buffer in list

  - type: boolean

  - values: on, off

  - default value: `on`

- buflist.look.nick_prefix

  - description: get the nick prefix and its color from nicklist so that ${nick_prefix} can be used in format; this can be slow on buffers with lot of nicks in nicklist, so this option is disabled by default

  - type: boolean

  - values: on, off

  - default value: `off`

- buflist.look.nick_prefix_empty

  - description: when the nick prefix is enabled, display a space instead if there is no nick prefix on the buffer (only for channel, private and list buffers)

  - type: boolean

  - values: on, off

  - default value: `on`

- buflist.look.signals_refresh

  - description: comma-separated list of extra signals that are hooked and trigger the refresh of buffers list; this can be useful if some custom variables are used in formats and need specific refresh

  - type: string

  - values: any string

  - default value: `""`

- buflist.look.sort

  - description: comma-separated list of fields to sort buffers; each field is a hdata variable of buffer ("var"), a hdata variable of IRC server ("irc_server.var") or a hdata variable of IRC channel ("irc_channel.var"); char "-" can be used before field to reverse order, char "~" can be used to do a case-insensitive comparison; examples: "-~short_name" for case-insensitive and reverse sort on buffer short name, "-hotlist.priority,hotlist.time,hotlist.time_usec,number,-active" for sort like the hotlist then by buffer number for buffers without activity (note: the content is evaluated, before being split into fields, but at that time "bar_item" is the only variable that can be used, to distinguish between different buflist items, for example "${bar_item.name}")

  - type: string

  - values: any string

  - default value: `"number,-active"`

- buflist.look.use_items

  - description: number of buflist bar items that can be used; the item names are: "buflist", "buflist2", "buflist3", "buflist4" and "buflist5"; be careful, using more than one bar item slows down the display of buffers list

  - type: integer

  - values: 1 .. 5

  - default value: `1`

### 5.6. Mode curseur

Le mode curseur vous permet de déplacer librement le curseur partout sur l’écran, dans la zone de discussion et les barres, et vous permet d’effectuer des actions à la position donnée.
Vous pouvez entrer dans le mode curseur avec la commande `/cursor` ou avec un clic du milieu sur la souris (la souris doit avoir été activée avec la touche `Alt`+`m` ou la commande `/mouse enable`).

L’utilisation typique est de citer des messages (zone de discussion) ou d’interagir avec des pseudos (barre avec la liste de pseudos).

Voir la commande /cursor et les touches du contexte curseur pour la liste des actions que vous pouvez effectuer dans ce mode.

## 6. Raccourcis clavier

WeeChat fournit beaucoup de raccourcis clavier par défaut, listés dans les chapitres suivants.
Ils peuvent être modifiés et de nouveaux peuvent être ajoutés avec la commande /key.

### 6.1. Ligne de commande

#### Mouvement du curseur

Touche | Description | Commande
--- | --- | ---
`←` `Shift`+`←` `Ctrl`+`b` | Aller au caractère précédent sur la ligne de commande. | `/input move_previous_char`
`→` `Shift`+`→` `Ctrl`+`f` | Aller au caractère suivant sur la ligne de commande. | `/input move_next_char`
`Shift`+`↑` | Aller à la ligne précédente. | `/input move_previous_line`
`Shift`+`↓` | Aller à la ligne suivante. | `/input move_next_line`
`Ctrl`+`←` `Alt`+`b` | Aller au mot précédent sur la ligne de commande. | `/input move_previous_word`
`Ctrl`+`→` `Alt`+`f` | Aller au mot suivant sur la ligne de commande. | `/input move_next_word`
`Home` `Ctrl`+`a` | Aller au début de la ligne courante. | `/input move_beginning_of_line`
`Shift`+`Home` | Aller au début de la ligne de commande. | `/input move_beginning_of_input`
`End` `Ctrl`+`e` | Aller à la fin de la ligne courante. | `/input move_end_of_line`
`Shift`+`End` | Aller à la fin de la ligne de commande. | `/input move_end_of_input`

#### Édition

Touche | Description | Commande
--- | --- | ---
`Del` `Ctrl`+`d` | Effacer le caractère suivant sur la ligne de commande. | `/input delete_next_char`
`Backspace` `Ctrl`+`h` | Effacer le caractère précédent sur la ligne de commande. | `/input delete_previous_char`
`Ctrl`+`k` | Effacer du curseur jusqu’à la fin de la ligne courante (la chaîne supprimée est copiée dans le presse-papiers interne). | `/input delete_end_of_line`
`Alt`+`Ctrl`+`k` | Effacer du curseur jusqu’à la fin de la ligne de commande (la chaîne supprimée est copiée dans le presse-papiers interne). | `/input delete_end_of_input`
`Ctrl`+`t` | Inverser deux caractères. | `/input transpose_chars`
`Ctrl`+`u` | Effacer du curseur jusqu’au début de la ligne courante (la chaîne supprimée est copiée dans le presse-papiers interne). | `/input delete_beginning_of_line`
`Alt`+`Ctrl`+`u` | Effacer du curseur jusqu’au début de la ligne de commande (la chaîne supprimée est copiée dans le presse-papiers interne). | `/input delete_beginning_of_input`
`Alt`+`Backspace` | Effacer le mot précédent sur la ligne de commande (la chaîne supprimée est copiée dans le presse-papiers interne). | `/input delete_previous_word`
`Ctrl`+`w` | Effacer le mot précédent sur la ligne de commande jusqu’à un espace (la chaîne supprimée est copiée dans le presse-papiers interne). | `/input delete_previous_word_whitespace`
`Ctrl`+`y` | Coller le contenu du presse-papiers interne. | `/input clipboard_paste`
`Ctrl`+`_` | Défaire la dernière action sur la ligne de commande. | `/input undo`
`Alt`+`_` | Refaire la dernière action sur la ligne de commande. | `/input redo`
`Tab` | Compléter la commande ou le pseudo (`Tab` de nouveau : trouver la complétion suivante). | `/input complete_next`
`Shift`+`Tab` | Sans complétion, effectue une complétion partielle. Avec une complétion en cours, complète avec la complétion précédente. | `/input complete_previous`
`Enter` `Ctrl`+`j` `Ctrl`+`m` | Exécuter la commande ou envoyer le message (en mode recherche : arrêter la recherche). | `/input return`
`Alt`+`Enter` | Insérer une nouvelle ligne. | `/input insert \n`
`Alt`+`d` | Effacer le mot suivant (la chaîne supprimée est copiée dans le presse-papiers interne). | `/input delete_next_word`
`Alt`+`k` | Capturer une touche et insérer son code (et la commande associée si la commande existe) sur la ligne de commande. | `/input grab_key_command`
`Alt`+`r` | Effacer la ligne courante. | `/input delete_line`
`Alt`+`R` | Effacer entièrement la ligne de commande. | `/input delete_input`

#### Codes couleur

Touche | Description | Commande
--- | --- | ---
`Ctrl`+`c`, `b` | Insérer le code pour mettre le texte en gras. | `/input insert \x02`
`Ctrl`+`c`, `c` | Insérer le code pour écrire en couleur. | `/input insert \x03`
`Ctrl`+`c`, `d` | Insérer le code pour écrire en couleur (couleur RGB, en hexadécimal). | `/input insert \x04`
`Ctrl`+`c`, `i` | Insérer le code pour mettre le texte en italique. | `/input insert \x1D`
`Ctrl`+`c`, `o` | Insérer le code pour réinitialiser la couleur. | `/input insert \x0F`
`Ctrl`+`c`, `v` | Insérer le code pour écrire en couleur inversée. | `/input insert \x16`
`Ctrl`+`c`, `_` | Insérer le code pour écrire en souligné. | `/input insert \x1F`

#### Historique de commandes

Touche | Description | Commande
--- | --- | ---
`↑` | Rappeler la commande précédente (en mode recherche : chercher plus haut). | `/input history_previous`
`↓` | Rappeler la commande suivante (en mode recherche : chercher plus bas). | `/input history_next`
`Ctrl`+`↑` | Rappeler la commande précédente dans l’historique global (commun à tous les tampons). | `/input history_global_previous`
`Ctrl`+`↓` | Rappeler la commande suivante dans l’historique global (commun à tous les tampons). | `/input history_global_next`

#### Système

Touche | Description | Commande
--- | --- | ---
`Ctrl`+`z` | Suspendre le processus WeeChat. | `/sys suspend`

### 6.2. Tampons

Touche | Description | Commande
--- | --- | ---
`Ctrl`+`r` | Chercher du texte dans l’historique de commandes (voir les touches pour le contexte "histsearch"). | `/input search_history`
`Ctrl`+`s` | Chercher du texte dans les lignes du tampon (voir les touches pour le contexte "search"). | `/input search_text_here`
`Ctrl`+`x` | Changer de tampon courant si plusieurs tampons sont mélangés avec le même numéro, par exemple basculer vers un autre tampon serveur IRC. | `/buffer switch`
`Alt`+`x` | Zoomer sur le tampon mélangé (`Alt`+`x` de nouveau : afficher tous les tampons mélangés). | `/buffer zoom`
`PgUp` | Monter d’une page dans l’historique du tampon. | `/window page_up`
`PgDn` | Descendre d’une page dans l’historique du tampon. | `/window page_down`
`Alt`+`PgUp` | Monter de quelques lignes dans l’historique du tampon. | `/window scroll_up`
`Alt`+`PgDn` | Descendre de quelques lignes dans l’historique du tampon. | `/window scroll_down`
`Alt`+`Home` | Aller au début du tampon. | `/window scroll_top`
`Alt`+`End` | Aller à la fin du tampon. | `/window scroll_bottom`
`Alt`+`←` `Alt`+`↑` `Ctrl`+`p` `F5` | Aller au tampon précédent. | `/buffer -1`
`Alt`+`→` `Alt`+`↓` `Ctrl`+`n` `F6` | Aller au tampon suivant. | `/buffer +1`
`Alt`+`j`, `Alt`+`f` | Sauter au premier tampon. | `/buffer -`
`Alt`+`j`, `Alt`+`l` (`L`) | Sauter au dernier tampon. | `/buffer +`
`Alt`+`j`, `Alt`+`r` | Sauter au tampon IRC de données brutes. | `/server raw`
`Alt`+`j`, `Alt`+`s` | Sauter au tampon IRC du serveur. | `/server jump`
`Alt`+`0…​9` | Sauter au tampon qui porte ce numéro (0 = 10). | `/buffer *N`
`Alt`+`j`, `01…​99` | Sauter au tampon qui porte ce numéro. | `/buffer *NN`
`Alt`+`n` | Se positionner sur le highlight suivant. | `/window scroll_next_highlight`
`Alt`+`p` | Se positionner sur le highlight précédent. | `/window scroll_previous_highlight`
`Alt`+`u` | Se positionner sur la première ligne non lue du tampon. | `/window scroll_unread`
`Alt`+`Shift`+`U` | Positionner le marqueur de données non lues sur tous les tampons. | `/allbuf /buffer set unread`
`Alt`+`<` | Sauter au tampon précédent dans la liste des tampons visités. | `/buffer jump prev_visited`
`Alt`+`>` | Sauter au tampon suivant dans la liste des tampons visités. | `/buffer jump next_visited`
`Alt`+`/` | Sauter au dernier tampon affiché (avant le dernier saut vers un tampon). | `/buffer jump last_displayed`

### 6.3. Fenêtres

Touche | Description | Commande
--- | --- | ---
`Ctrl`+`l` (`L`) | Réafficher toute la fenêtre. | `/window refresh`
`Alt`+`l` (`L`) | Activer/désactiver le mode d’affichage dépouillé. | `/window bare`
`F7` | Aller à la fenêtre précédente. | `/window -1`
`F8` | Aller à la fenêtre suivante. | `/window +1`
`Alt`+`w`, `Alt`+`↑` | Sauter à la fenêtre au dessus. | `/window up`
`Alt`+`w`, `Alt`+`↓` | Sauter à la fenêtre en dessous. | `/window down`
`Alt`+`w`, `Alt`+`←` | Sauter à la fenêtre de gauche. | `/window left`
`Alt`+`w`, `Alt`+`→` | Sauter à la fenêtre de droite. | `/window right`
`Alt`+`w`, `Alt`+`b` | Équilibrer la taille de toutes les fenêtres. | `/window balance`
`Alt`+`w`, `Alt`+`s` | Échanger les tampons de deux fenêtres. | `/window swap`
`Alt`+`z` | Zoomer sur la fenêtre courante (`Alt`+`z` de nouveau : restaurer l’état initial des fenêtres, avant le zoom). | `/window zoom`

### 6.4. Barres

Touche | Description | Commande
--- | --- | ---
`F1` `Ctrl`+`F1` | Monter d’une page dans la liste des tampons. | `/bar scroll buflist * -100%`
`F2` `Ctrl`+`F2` | Descendre d’une page dans la liste des tampons. | `/bar scroll buflist * +100%`
`Alt`+`F1` | Aller au début de la liste des tampons. | `/bar scroll buflist * b`
`Alt`+`F2` | Aller à la fin de la liste des tampons. | `/bar scroll buflist * e`
`F9` | Faire défiler le titre du tampon vers la gauche. | `/bar scroll title * -30%`
`F10` | Faire défiler le titre du tampon vers la droite. | `/bar scroll title * +30%`
`F11` `Ctrl`+`F11` | Monter d’une page dans la liste des pseudos. | `/bar scroll nicklist * -100%`
`F12` `Ctrl`+`F12` | Descendre d’une page dans la liste des pseudos. | `/bar scroll nicklist * +100%`
`Alt`+`F11` | Aller au début de la liste des pseudos. | `/bar scroll nicklist * b`
`Alt`+`F12` | Aller à la fin de la liste des pseudos. | `/bar scroll nicklist * e`
`Alt`+`Shift`+`B` | Activer/désactiver buflist. | `/buflist toggle`
`Alt`+`Shift`+`N` | Activer/désactiver la barre nicklist. | `/bar toggle nicklist`

### 6.5. Hotlist

Touche | Description | Commande
--- | --- | ---
`Alt`+`a` | Sauter au prochain tampon avec activité (avec priorité : highlight, message, autre). | `/buffer jump smart`
`Alt`+`h`, `Alt`+`c` | Vider la hotlist (notification d’activité sur les tampons). | `/hotlist clear`
`Alt`+`h`, `Alt`+`m` | Supprimer le tampon courant de la hotlist. | `/hotlist remove`
`Alt`+`h`, `Alt`+`r` | Restaurer la dernière hotlist supprimée dans le tampon courant. | `/hotlist restore`
`Alt`+`h`, `Alt`+`Shift`+`R` | Restaurer la dernière hotlist supprimée dans tous les tampons. | `/hotlist restore -all`

### 6.6. Touches de bascule

Touche | Description | Commande
--- | --- | ---
`Alt`+`m` | Activer/désactiver la souris. | `/mouse toggle`
`Alt`+`s` | Activer/désactiver la vérification de l’orthographe. | `/mute spell toggle`
`Alt`+`=` | Activer/désactiver les filtres. | `/filter toggle`
`Alt`+`-` | Activer/désactiver les filtres dans le tampon courant. | `/filter toggle @`
`Alt`+`Ctrl`+`l` (`L`) | Basculer entre les commandes distantes et locales sur un tampon distant (relay "api"). | `/remote togglecmd`

### 6.7. Contexte de recherche

Ces touches sont utilisées dans le contexte "search" (lorsque `Ctrl`+`s` est pressé pour chercher du texte dans les lignes du tampon).

Touche | Description | Commande
--- | --- | ---
`Ctrl`+`x` | Basculer le type de recherche : chaîne (par défaut), expression régulière. | `/input search_switch_regex`
`Alt`+`c` | Basculer la casse exacte pour la recherche. | `/input search_switch_case`
`Tab` | Basculer la recherche dans : les messages (par défaut), les préfixes, les préfixes + messages. | `/input search_switch_where`
`Ctrl`+`r` `↑` | Chercher la ligne précédente. | `/input search_previous`
`Ctrl`+`s` `↓` | Chercher la ligne suivante. | `/input search_next`
`Enter` `Ctrl`+`j` `Ctrl`+`m` | Arrêter la recherche à la position courante. | `/input search_stop_here`
`Ctrl`+`q` | Arrêter la recherche et réinitialiser le défilement à l’état antérieur à la recherche de texte. | `/input search_stop`

### 6.8. Contexte de recherche dans l’historique

Ces touches sont utilisées dans le contexte "histsearch" (lorsque `Ctrl`+`r` est pressé pour chercher du texte dans l’historique des commandes).

Touche | Description | Commande
--- | --- | ---
`Ctrl`+`x` | Basculer le type de recherche : chaîne (par défaut), expression régulière. | `/input search_switch_regex`
`Alt`+`c` | Basculer la casse exacte pour la recherche. | `/input search_switch_case`
`Tab` | Basculer la recherche dans : l’historique local du tampon (par défaut), l’historique global. | `/input search_switch_where`
`Ctrl`+`r` `↑` | Chercher dans les entrées précédentes (plus anciennes) de l’historique. | `/input search_previous`
`Ctrl`+`s` `↓` | Chercher dans les entrées suivantes (plus récentes) de l’historique. | `/input search_next`
`Enter` `Ctrl`+`j` `Ctrl`+`m` | Arrêter la recherche et utiliser la commande trouvée. | `/input search_stop_here`
`Ctrl`+`o` | Exécuter la commande trouvée dans l’historique et insérer la suivante sur la ligne de commande. | `/input history_use_get_next`
`Ctrl`+`q` | Arrêter la recherche et restaurer la ligne de commande à sa valeur initiale. | `/input search_stop`

### 6.9. Contexte curseur

Ces touches sont utilisées dans le contexte "cursor" (mouvement libre du curseur à l’écran), voir le Mode curseur.

Touche | Zone | Description | Commande
--- | --- | --- | ---
`↑` | - | Déplacer le curseur d’une ligne vers le haut. | `/cursor move up`
`↓` | - | Déplacer le curseur d’une ligne vers le bas. | `/cursor move down`
`←` | - | Déplacer le curseur d’une colonne vers la gauche. | `/cursor move left`
`→` | - | Déplacer le curseur d’une colonne vers la droite. | `/cursor move right`
`Alt`+`↑` | - | Déplacer le curseur vers la première ligne de la zone. | `/cursor move edge_top`
`Alt`+`↓` | - | Déplacer le curseur vers la dernière ligne de la zone. | `/cursor move edge_bottom`
`Alt`+`←` | - | Déplacer le curseur vers la première colonne de la zone. | `/cursor move edge_left`
`Alt`+`→` | - | Déplacer le curseur vers la dernière colonne de la zone. | `/cursor move edge_right`
`Alt`+`Home` | - | Déplacer le curseur vers le coin supérieur gauche de la zone. | `/cursor move top_left`
`Alt`+`End` | - | Déplacer le curseur vers la coin inférieur droit de la zone. | `/cursor move bottom_right`
`Alt`+`Shift`+`↑` | - | Déplacer le curseur vers la zone au dessus. | `/cursor move area_up`
`Alt`+`Shift`+`↓` | - | Déplacer le curseur vers la zone en dessous. | `/cursor move area_down`
`Alt`+`Shift`+`←` | - | Déplacer le curseur vers la zone sur la gauche. | `/cursor move area_left`
`Alt`+`Shift`+`→` | - | Déplacer le curseur vers la zone sur la droite. | `/cursor move area_right`
`m` | chat | Citer le message. | `hsignal:chat_quote_message;/cursor stop`
`l` | chat | Citer la ligne ciblée. | `hsignal:chat_quote_focused_line;/cursor stop`
`q` | chat | Citer le préfixe + le message. | `hsignal:chat_quote_prefix_message;/cursor stop`
`Q` | chat | Citer l’heure + le préfixe + le message. | `hsignal:chat_quote_time_prefix_message;/cursor stop`
`b` | liste des pseudos | Bannir le pseudo. | `/window ${_window_number};/ban ${nick}`
`k` | liste des pseudos | Retirer par la force le pseudo. | `/window ${_window_number};/kick ${nick}`
`K` | liste des pseudos | Retirer par la force et bannir le pseudo. | `/window ${_window_number};/kickban ${nick}`
`q` | liste des pseudos | Ouvrir une discussion avec le pseudo. | `/window ${_window_number};/query ${nick};/cursor stop`
`w` | liste des pseudos | Effectuer un whois sur le pseudo. | `/window ${_window_number};/whois ${nick}`
`Enter` `Ctrl`+`j` `Ctrl`+`m` | - | Arrêter le mode curseur ("cursor"). | `/cursor stop`

### 6.10. Souris

Ces actions avec la souris sont possibles seulement si la souris est activée avec la touche `Alt`+`m` (commande : `/mouse toggle`).

Bouton/Roulette (1) | Geste | Zone | Description | Commande
--- | --- | --- | --- | ---
`■ □ □` | - | chat | Aller à la fenêtre. | `/window ${_window_number}`
`■ □ □` | gauche | chat | Aller au tampon précédent. | `/window ${_window_number};/buffer +1`
`■ □ □` | droit | chat | Aller au tampon suivant. | `/window ${_window_number};/buffer +1`
`■ □ □` | gauche (long) | chat | Aller au premier tampon. | `/window ${_window_number};/buffer 1`
`■ □ □` | droit (long) | chat | Aller au dernier tampon. | `/window ${_window_number};/buffer +`
`▲` | - | chat | Monter de quelques lignes dans l’historique du tampon. | `/window scroll_up -window ${_window_number}`
`▼` | - | chat | Descendre de quelques lignes dans l’historique du tampon. | `/window scroll_down -window ${_window_number}`
`Ctrl`+`▲` | - | chat | Faire défiler horizontalement vers la gauche. | `/window scroll_horiz -window ${_window_number} -10%`
`Ctrl`+`▼` | - | chat | Faire défiler horizontalement vers la droite. | `/window scroll_horiz -window ${_window_number} +10%`
`▲` | - | chat : tampon fset | Monter de cinq lignes dans le tampon fset. | `/fset -up 5`
`▼` | - | chat : tampon fset | Descendre de cinq lignes dans le tampon fset. | `/fset -down 5`
`■ □ □` | - | chat : tampon fset | Sélectionner la ligne dans le tampon fset. | `/window ${_window_number};/fset -go ${fset_option_index}`
`□ □ ■` | - | chat : tampon fset | Basculer le booléen (on/off) ou éditer la valeur de l’option. | `hsignal:fset_mouse`
`□ □ ■` | gauche | chat : tampon fset | Décrémenter la valeur de l’entier/couleur/énuméré, définir/ajouter à la valeur pour les autres types. | `hsignal:fset_mouse`
`□ □ ■` | droit | chat : tampon fset | Incrémenter la valeur de l’entier/couleur/énuméré, définir/ajouter à la valeur pour les autres types. | `hsignal:fset_mouse`
`□ □ ■` | haut / bas | chat : tampon fset | Marquer/démarquer de multiples options. | `hsignal:fset_mouse`
`▲` | - | chat : tampon /list | Monter de cinq lignes dans le tampon /list. | `/list -up 5`
`▼` | - | chat : tampon /list | Descendre de cinq lignes dans le tampon /list. | `/list -down 5`
`■ □ □` | - | chat : tampon /list | Sélectionner la ligne dans le tampon /list. | `/window ${_window_number};/list -go ${_chat_line_y}`
`□ □ ■` | - | chat : tampon /list | Rejoindre le canal IRC sur la ligne sélectionnée. | `hsignal:irc_list_mouse`
`▲` | - | chat : tampon script | Monter de 5 lignes dans le tampon script. | `/script -up 5`
`▼` | - | chat : tampon script | Descendre de 5 lignes dans le tampon script. | `/script -down 5`
`■ □ □` | - | chat : tampon script | Sélectionner la ligne dans le tampon script. | `/script -go ${_chat_line_y}`
`□ □ ■` | - | chat : tampon script | Installer/supprimer un script. | `/script -go ${_chat_line_y};/script installremove -q ${script_name_with_extension}`
`■ □ □` | haut / gauche | buflist | Déplacer le tampon vers un numéro inférieur. | Signal `buflist_mouse`.
`■ □ □` | bas / droit | buflist | Déplacer le tampon vers un numéro supérieur. | Signal `buflist_mouse`.
`■ □ □` | - | buflist | Aller au tampon (tampon précédent dans la liste des tampons visités si le tampon est le courant). | Signal `buflist_mouse`.
`□ □ ■` | - | buflist | Aller au tampon suivant dans la liste des tampons visités si le tampon est le courant. | Signal `buflist_mouse`.
`Ctrl`+`▲` | - | buflist | Aller au tampon précédent. | Signal `buflist_mouse`.
`Ctrl`+`▼` | - | buflist | Aller au tampon suivant. | Signal `buflist_mouse`.
`■ □ □` | haut | liste des pseudos | Monter d’une page dans la liste des pseudos. | `/bar scroll nicklist ${_window_number} -100%`
`■ □ □` | bas | liste des pseudos | Descendre d’une page dans la liste des pseudos. | `/bar scroll nicklist ${_window_number} +100%`
`■ □ □` | haut (long) | liste des pseudos | Aller au début de la liste des pseudos. | `/bar scroll nicklist ${_window_number} b`
`■ □ □` | bas (long) | liste des pseudos | Aller à la fin de la liste des pseudos. | `/bar scroll nicklist ${_window_number} e`
`■ □ □` | - | liste des pseudos | Ouvrir une discussion avec le pseudo. | `/window ${_window_number};/query ${nick}`
`□ □ ■` | - | liste des pseudos | Effectuer un whois sur le pseudo. | `/window ${_window_number};/whois ${nick}`
`■ □ □` | gauche | liste des pseudos | Retirer par la force le pseudo. | `/window ${_window_number};/kick ${nick}`
`■ □ □` | gauche (long) | liste des pseudos | Retirer par la force et bannir le pseudo. | `/window ${_window_number};/kickban ${nick}`
`□ □ ■` | gauche | liste des pseudos | Bannir le pseudo. | `/window ${_window_number};/ban ${nick}`
`□ □ ■` | - | ligne de commande | Capturer un évènement de la souris et insérer son code sur la ligne de commande. | `/input grab_mouse_area`
`▲` | - | toute barre | Faire défiler la barre de -20%. | `/bar scroll ${_bar_name} ${_window_number} -20%`
`▼` | - | toute barre | Faire défiler la barre de +20%. | `/bar scroll ${_bar_name} ${_window_number} +20%`
`□ ■ □` | - | n’importe où | Démarrer le mode curseur ("cursor") à ce point. | `/cursor go ${_x},${_y}`

Note | (1) Boutons : `◼ □ □` : clic sur le bouton de gauche `□ ◼ □` : clic sur le bouton du milieu `□ □ ◼` : clic sur le bouton de droite Roulette : `▲` : roulette vers le haut `▼` : roulette vers le bas

### 6.11. Tampon fset

Ces touches et actions sont utilisées sur le tampon fset (voir l’extension Fset).

Touche | Action (1) | Description | Commande
--- | --- | --- | ---
`↑` |  | Monter d’une ligne. | `/fset -up`
`↓` |  | Descendre d’une ligne. | `/fset -down`
`PgUp` |  | Monter d’une page. | `/window page_up`
`PgDn` |  | Descendre d’une page. | `/window page_down`
`Alt`+`Home` | `<<` | Aller à la première ligne. | `/fset -go 0`
`Alt`+`End` | `>>` | Aller à la dernière ligne. | `/fset -go end`
`F11` | `<` | Faire défiler horizontalement vers la gauche. | `/fset -left`
`F12` | `>` | Faire défiler horizontalement vers la droite. | `/fset -right`
`Alt`+`Space` | `t` | Basculer la valeur booléenne. | `/fset -toggle`
`Alt`+`-` | `-` | Soustraire 1 de la valeur de l’entier/couleur/énuméré, définir la valeur pour les autres types. | `/fset -add -1`
`Alt`+`+` | `+` | Ajouter 1 à la valeur de l’entier/couleur/énuméré, ajouter à la valeur pour les autres types. | `/fset -add 1`
`Alt`+`f`, `Alt`+`r` | `r` | Réinitialiser la valeur. | `/fset -reset`
`Alt`+`f`, `Alt`+`u` | `u` | Supprimer/réinitialiser la valeur. | `/fset -unset`
`Alt`+`Enter` | `s` | Définir la valeur. | `/fset -set`
`Alt`+`f`, `Alt`+`n` | `n` | Définir une nouvelle valeur. | `/fset -setnew`
`Alt`+`f`, `Alt`+`a` | `a` | Ajouter à la valeur. | `/fset -append`
`Alt`+`,` | `,` | Marquer/démarquer l’option. | `/fset -mark 1`
`Shift`+`↑` |  | Se déplacer d’une ligne vers le haut et marquer/démarquer l’option. | `/fset -up; /fset -mark`
`Shift`+`↓` |  | Marquer/démarquer l’option et se déplacer d’une ligne vers le bas. | `/fset -mark; /fset -down`
| `m:xxx` | Marquer les options affichées qui correspondent au filtre "xxx" (tout filtre sur une option ou valeur est autorisé, voir la commande /fset). |
| `u:xxx` | Démarquer les options affichées qui correspondent au filtre "xxx" (tout filtre sur une option ou valeur est autorisé, voir la commande /fset). |
`Ctrl`+`l` (`L`) |  | Rafraîchir les options et l’écran entier. | `/fset -refresh`
| `$` | Rafraîchir les options (garder les options marquées). |
| `$$` | Rafraîchir les options (démarquer toutes les options). |
`Alt`+`p` | `p` | Activer/désactiver la description des options d’extensions (`plugins.desc.*`). | `/mute /set fset.look.show_plugins_desc toggle`
`Alt`+`v` | `v` | Activer/désactiver la barre d’aide. | `/bar toggle fset`
| `s:x,y` | Trier les options par les champs x,y (voir l’option fset.look.sort). | `/mute /set fset.look.sort x,y`
| `s:` | Réinitialiser le tri à sa valeur par défaut (voir l’option fset.look.sort). | `/mute /unset fset.look.sort`
| `w:xxx` | Exporter les options dans le fichier "xxx". | `/fset -export xxx`
| `w-:xxx` | Exporter les options dans le fichier "xxx" sans aide. | `/fset -export -nohelp xxx`
| `w+:xxx` | Exporter les options dans le fichier "xxx" avec aide. | `/fset -export -help xxx`
`Ctrl`+`x` | `x` | Basculer le format utilisé pour afficher les options. | `/fset -format`
| `q` | Fermer le tampon fset. | `/buffer close`

Note | (1) L’action doit être tapée comme entrée dans la ligne de commande, suivie de `Enter`.

### 6.12. Tampon IRC /list

Ces touches et actions sont utilisées sur le tampon IRC /list (voir la commande /list).

Touche | Action (1) | Description | Commande
--- | --- | --- | ---
`↑` |  | Monter d’une ligne. | `/list -up`
`↓` |  | Descendre d’une ligne. | `/list -down`
`PgUp` |  | Monter d’une page. | `/window page_up`
`PgDn` |  | Descendre d’une page. | `/window page_down`
`Alt`+`Home` | `<<` | Aller à la première ligne. | `/list -go 0`
`Alt`+`End` | `>>` | Aller à la dernière ligne. | `/list -go end`
`F11` | `<` | Faire défiler horizontalement vers la gauche. | `/list -left`
`F12` | `>` | Faire défiler horizontalement vers la droite. | `/list -right`
`Ctrl`+`j` | `j` | Rejoindre le canal IRC sur la ligne sélectionnée. | `/list -join`
| `xxx` | Afficher seulement les canaux avec "xxx" dans le nom ou le titre (insensible à la casse). |
| `n:xxx` | Afficher seulement les canaux avec "xxx" dans le nom (insensible à la casse). |
| `t:xxx` | Afficher seulement les canaux avec "xxx" dans le titre (insensible à la casse). |
| `u:n` | Afficher seulement les canaux avec au moins "n" utilisateurs. |
| `u:>n` | Afficher seulement les canaux avec plus de "n" utilisateurs. |
| `u:<n` | Afficher seulement les canaux avec moins de "n" utilisateurs. |
| `c:xxx` | Afficher seulement les canaux qui correspondent à la condition évaluée "xxx", en utilisant les variables suivantes : name, name2, users, topic. |
| `s:x,y` | Trier les canaux par les champs x,y (voir la commande /list). |
| `s:` | Réinitialiser le tri à sa valeur par défaut (voir la commande /list). |
| `$` | Rafraîchir la liste (relancer la commande /list). |
| `q` | Fermer le tampon. | `/buffer close`

Note | (1) L’action doit être tapée comme entrée dans la ligne de commande, suivie de `Enter`.

### 6.13. Tampon script

Ces touches et actions sont utilisées sur le tampon script (voir le gestionnaire de scripts).

Touche | Action (1) | Description | Commande
--- | --- | --- | ---
`↑` |  | Monter d’une ligne. | `/script -up`
`↓` |  | Descendre d’une ligne. | `/script -down`
`PgUp` |  | Monter d’une page. | `/window page_up`
`PgDn` |  | Descendre d’une page. | `/window page_down`
`Alt`+`i` | `i` | Installer le script. | `/script install`
`Alt`+`r` | `r` | Supprimer le script. | `/script remove`
`Alt`+`l` | `l` | Charger le script. | `/script load`
`Alt`+`L` | `L` | Recharger le script. | `/script reload`
`Alt`+`u` | `u` | Décharger le script. | `/script unload`
`Alt`+`Shift`+`A` | `A` | Charger automatiquement le script. | `/script toggleautoload`
`Alt`+`h` | `h` | Figer/défiger le script. | `/script hold`
`Alt`+`v` | `v` | Voir le script. | `/script show`
| `s:x,y` | Trier les scripts par les champs x,y (voir l’option script.look.sort). |
| `s:` | Reset sort to its default value (voir l’option script.look.sort). |
| `$` | Rafraîchir la liste. |
| `q` | Fermer le tampon. | `/buffer close`

Note | (1) L’action doit être tapée comme entrée dans la ligne de commande, suivie de `Enter`.

## 7. Configuration

### 7.1. Fset

L’extension Fset affiche une liste des options dans un tampon et aide à définir les options de WeeChat et des extensions.

Exemple de tampon fset affichant les options commençant par `weechat.look` :

    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.weechat│7/125 | Filtre : weechat.look.* | Tri : ~name | Touche(entrée) : alt+space>>│
    │2.fset   │weechat.look.bare_display_exit_on_input : sortir du mode d'affichage dépouil│
    │         │lé ("bare") sur tout changement dans la ligne de commande [défaut : on]     │
    │         │----------------------------------------------------------------------------│
    │         │  weechat.look.align_end_of_lines              énuméré  message             │
    │         │  weechat.look.align_multiline_words           booléen  on                  │
    │         │  weechat.look.bar_more_down                   chaîne   "++"                │
    │         │  weechat.look.bar_more_left                   chaîne   "<<"                │
    │         │  weechat.look.bar_more_right                  chaîne   ">>"                │
    │         │  weechat.look.bar_more_up                     chaîne   "--"                │
    │         │  weechat.look.bare_display_exit_on_input      booléen  on                  │
    │         │  weechat.look.bare_display_time_format        chaîne   "%H:%M"             │
    │         │  weechat.look.buffer_auto_renumber            booléen  on                  │
    │         │  weechat.look.buffer_notify_default           énuméré  all                 │
    │         │  weechat.look.buffer_position                 énuméré  end                 │
    │         │  weechat.look.buffer_search_case_sensitive    booléen  off                 │
    │         │  weechat.look.buffer_search_force_default     booléen  off                 │
    │         │  weechat.look.buffer_search_history           énuméré  local               │
    │         │  weechat.look.buffer_search_regex             booléen  off                 │
    │         │  weechat.look.buffer_search_where             énuméré  prefix_message      │
    │         │  weechat.look.buffer_time_format              chaîne   "%H:%M:%S"          │
    │         │[12:55] [2] [fset] 2:fset                                                   │
    │         │█                                                                           │
    └──────────────────────────────────────────────────────────────────────────────────────┘

#### Commandes

- `fset`: fast set WeeChat and plugins options

    /fset  -bar
           -refresh
           -up|-down [<number>]
           -left|-right [<percent>]
           -go <line>|end
           -toggle
           -add [<value>]
           -reset
           -unset
           -set
           -setnew
           -append
           -mark
           -format
           -export [-help|-nohelp] <filename>
           -import <filename>
           <filter>

        -bar: add the help bar
    -refresh: refresh list of options, then whole screen (command: /window refresh)
         -up: move the selected line up by "number" lines
       -down: move the selected line down by "number" lines
       -left: scroll the buffer by "percent" of width on the left
      -right: scroll the buffer by "percent" of width on the right
         -go: select a line by number, first line number is 0 ("end" to select the last line)
     -toggle: toggle the boolean value
        -add: add "value" (which can be a negative number) for integers, colors and enums, set/append to value for other types (set for a negative value, append for a positive value)
      -reset: reset the value of option
      -unset: unset the option
        -set: add the /set command in input to edit the value of option (move the cursor at the beginning of value)
     -setnew: add the /set command in input to edit a new value for the option
     -append: add the /set command to append something in the value of option (move the cursor at the end of value)
       -mark: toggle mark
     -format: switch to the next available format
     -export: export the options and values displayed to a file (each line has format: "/set name value" or "/unset name")
     -import: import the options from a file (all lines containing commands are executed)
       -help: force writing of help on options in exported file (see /help fset.look.export_help_default)
     -nohelp: do not write help on options in exported file (see /help fset.look.export_help_default)
      filter: set a new filter to see only matching options (this filter can be used as input in fset buffer as well); allowed formats are:
              `*`: show all options (no filter)
              `xxx`: show only options with "xxx" in name
              `f:xxx`: show only configuration file "xxx"
              `t:xxx`: show only type "xxx" (bool/int/str/col/enum or boolean/integer/string/color/enum)
              `d`: show only changed options
              `d:xxx`: show only changed options with "xxx" in name
              `d=xxx`: show only changed options with "xxx" in value
              `d==xxx`: show only changed options with exact value "xxx"
              `h=xxx`: show only options with "xxx" in description (translated)
              `he=xxx`: show only options with "xxx" in description (in English)
              `=xxx`: show only options with "xxx" in value
              `==xxx`: show only options with exact value "xxx"
              `c:xxx`: show only options matching the evaluated condition "xxx", using following variables: file, section, option, name, parent_name, type, type_en, type_short (bool/int/str/col/enum), type_tiny (b/i/s/c/e), default_value, default_value_undef, value, quoted_value, value_undef, value_changed, parent_value, min, max, description, description2, description_en, description_en2, string_values, allowed_values

    The lines with options are displayed using string evaluation (see /help eval for the format), with these options:
      - fset.format.option1: first format for an option
      - fset.format.option2: second format for an option

    The following variables can be used in these options:
      - option data, with color and padded by spaces on the right:
        - ${file}: configuration file (for example "weechat" or "irc")
        - ${section}: section
        - ${option}: option name
        - ${name}: full option name (file.section.option)
        - ${parent_name}: parent option name
        - ${type}: option type (translated)
        - ${type_en}: option type (in English)
        - ${type_short}: short option type (bool/int/str/col/enum)
        - ${type_tiny}: tiny option type (b/i/s/c/e)
        - ${default_value}: option default value
        - ${default_value_undef}: "1" if default value is null, otherwise "0"
        - ${value}: option value
        - ${value_undef}: "1" if value is null, otherwise "0"
        - ${value_changed}: "1" if value is different from default value, otherwise "0"
        - ${value2}: option value, with inherited value if null
        - ${parent_value}: parent option value
        - ${min}: min value
        - ${max}: max value
        - ${description}: option description (translated)
        - ${description2}: option description (translated), "(no description)" (translated) if there's no description
        - ${description_en}: option description (in English)
        - ${description_en2}: option description (in English), "(no description)" if there's no description
        - ${string_values}: string values allowed for set of an enum option
        - ${allowed_values}: allowed values
        - ${marked}: "1" if option is marked, otherwise "0"
        - ${index}: index of option in list
      - option data, with color but no spaces:
        - same names prefixed by underscore, for example: ${_name}, ${_type}, ...
      - option data, raw format (no colors/spaces):
        - same names prefixed by two underscores, for example: ${__name}, ${__type}, ...
      - option data, only spaces:
        - same names prefixed with "empty_", for example: ${empty_name}, ${empty_type}
      - other data:
        - ${selected_line}: "1" if the line is selected, otherwise "0"
        - ${newline}: insert a new line at point, so the option is displayed on multiple lines

    For keys, input and mouse actions on the buffer, see key bindings in User's guide.

    Note: if input has one or more leading spaces, the following text is interpreted as a filter, without the spaces. For example " q" searches all options with "q" inside name while "q" closes the fset buffer.

    Examples:
      /fset d:irc.*
      /fset nicklist
      /fset =red
      /fset ==red
      /fset c:${file} == irc && ${type_en} == integer

#### Options

Sections dans le fichier fset.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`color` | `/set fset.color.*` | Couleurs.
`format` | `/set fset.format.*` | Formats utilisés pour afficher la liste des options.
`look` | `/set fset.look.*` | Aspect/présentation.

Options :

- fset.color.allowed_values

  - description: color for allowed values

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.allowed_values_selected

  - description: color for allowed values on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.color_name

  - description: color for color name when option fset.look.use_color_value is enabled

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `246`

- fset.color.color_name_selected

  - description: color for color name on the selected line when option fset.look.use_color_value is enabled

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.default_value

  - description: color for default value

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.default_value_selected

  - description: color for default value on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.description

  - description: color for description

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `242`

- fset.color.description_selected

  - description: color for description on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.file

  - description: color for file

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.file_changed

  - description: color for file if value is changed

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- fset.color.file_changed_selected

  - description: color for file if value is changed on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- fset.color.file_selected

  - description: color for file on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.help_default_value

  - description: color for default value in help bar

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.help_description

  - description: color for description in help bar

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.help_name

  - description: color for name in help bar

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.help_quotes

  - description: color for quotes around string values

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `darkgray`

- fset.color.help_values

  - description: color for allowed values

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.index

  - description: color for index of option

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- fset.color.index_selected

  - description: color for index of option on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightcyan`

- fset.color.line_marked_bg1

  - description: background color for a marked line (used with the first format, see option fset.format.option1)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `17`

- fset.color.line_marked_bg2

  - description: background color for a marked line (used with the second format, see option fset.format.option2)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `17`

- fset.color.line_selected_bg1

  - description: background color for the selected line (used with the first format, see option fset.format.option1)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `24`

- fset.color.line_selected_bg2

  - description: background color for the selected line (used with the second format, see option fset.format.option2)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `24`

- fset.color.marked

  - description: color for mark indicator

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- fset.color.marked_selected

  - description: color for mark indicator on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- fset.color.max

  - description: color for max value

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.max_selected

  - description: color for max value on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.min

  - description: color for min value

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.min_selected

  - description: color for min value on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.name

  - description: color for name

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.name_changed

  - description: color for name if value is changed

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `185`

- fset.color.name_changed_selected

  - description: color for name if value is changed on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- fset.color.name_selected

  - description: color for name on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.option

  - description: color for option

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.option_changed

  - description: color for option if value is changed

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- fset.color.option_changed_selected

  - description: color for option if value is changed on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- fset.color.option_selected

  - description: color for option on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.parent_name

  - description: color for name of parent option

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.parent_name_selected

  - description: color for name of parent option on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.parent_value

  - description: color for value of parent option

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- fset.color.parent_value_selected

  - description: color for value of parent option on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightcyan`

- fset.color.quotes

  - description: color for quotes around string values

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `darkgray`

- fset.color.quotes_changed

  - description: color for quotes around string values which are changed

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.quotes_changed_selected

  - description: color for quotes around string values which are changed on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.quotes_selected

  - description: color for quotes around string values on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.section

  - description: color for section

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.section_changed

  - description: color for section if value is changed

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- fset.color.section_changed_selected

  - description: color for section if value is changed on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- fset.color.section_selected

  - description: color for section on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.string_values

  - description: color for string values

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.string_values_selected

  - description: color for string values on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.title_count_options

  - description: color for the count of options found with the current filter in title of buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- fset.color.title_current_option

  - description: color for current option number in title of buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightcyan`

- fset.color.title_filter

  - description: color for filter in title of buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- fset.color.title_marked_options

  - description: color for number of marked options in title of buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightgreen`

- fset.color.title_sort

  - description: color for sort in title of buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.type

  - description: color for type

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `138`

- fset.color.type_selected

  - description: color for type on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `216`

- fset.color.unmarked

  - description: color for mark indicator when the option is not marked

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- fset.color.unmarked_selected

  - description: color for mark indicator when the option is not marked on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- fset.color.value

  - description: color for value

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `38`

- fset.color.value_changed

  - description: color for value changed (different from default)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `185`

- fset.color.value_changed_selected

  - description: color for value changed (different from default) on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- fset.color.value_selected

  - description: color for value on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `159`

- fset.color.value_undef

  - description: color for undefined value

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `magenta`

- fset.color.value_undef_selected

  - description: color for undefined value on the selected line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightmagenta`

- fset.format.export_help

  - description: format of help line written before each option exported in a file (note: content is evaluated, see /help fset)

  - type: string

  - values: any string

  - default value: `"# ${description2}"`

- fset.format.export_option

  - description: format of each option exported in a file (note: content is evaluated, see /help fset)

  - type: string

  - values: any string

  - default value: `"/set ${name} ${quoted_value}"`

- fset.format.export_option_null

  - description: format of each option with "null" value exported in a file (note: content is evaluated, see /help fset)

  - type: string

  - values: any string

  - default value: `"/unset ${name}"`

- fset.format.option1

  - description: first format of each line, used when option fset.look.format_number is set to 1 (note: content is evaluated, see /help fset); an empty string uses the default format ("${marked} ${name} ${type} ${value2}"), which is without evaluation of string and then much faster; formats can be switched with key ctrl-x

  - type: string

  - values: any string

  - default value: `""`

- fset.format.option2

  - description: second format of each line, used when option fset.look.format_number is set to 2 (note: content is evaluated, see /help fset); an empty string uses the default format ("${marked} ${name} ${type} ${value2}"), which is without evaluation of string and then much faster; formats can be switched with key ctrl-x

  - type: string

  - values: any string

  - default value: `"${marked} ${name} ${type} ${value2}${newline} ${empty_name} ${_default_value}${color:244} -- ${_allowed_values}${newline} ${empty_name} ${_description}"`

- fset.look.auto_refresh

  - description: comma separated list of options to automatically refresh on the fset buffer (if opened); "*" means all options (recommended), a name beginning with "!" is a negative value to prevent an option to be refreshed, wildcard "*" is allowed in names (example: "*,!plugin.section.*")

  - type: string

  - values: any string

  - default value: `"*"`

- fset.look.auto_unmark

  - description: automatically unmark all options after an action on marked options or after a refresh

  - type: boolean

  - values: on, off

  - default value: `off`

- fset.look.condition_catch_set

  - description: condition to catch /set command and display results in the fset buffer; following variables can be used: ${name} (name of option given for the /set command), ${count} (number of options found with the /set argument); an empty string disables the catch of /set command; with value "1", the fset buffer is always used with /set command

  - type: string

  - values: any string

  - default value: `"${count} >= 1"`

- fset.look.export_help_default

  - description: write help for each option exported by default (this can be overridden with arguments "-help" and "-nohelp" for command /fset -export)

  - type: boolean

  - values: on, off

  - default value: `on`

- fset.look.format_number

  - description: number of format used to display options; this is dynamically changed by the key ctrl-x on the fset buffer

  - type: integer

  - values: 1 .. 2

  - default value: `1`

- fset.look.marked_string

  - description: string displayed when an option is marked (to do an action on multiple options)

  - type: string

  - values: any string

  - default value: `"*"`

- fset.look.scroll_horizontal

  - description: left/right scroll in fset buffer (percent of width)

  - type: integer

  - values: 1 .. 100

  - default value: `10`

- fset.look.show_plugins_desc

  - description: show the plugin description options (plugins.desc.*)

  - type: boolean

  - values: on, off

  - default value: `off`

- fset.look.sort

  - description: comma-separated list of fields to sort options (see /help fset for a list of fields); char "-" can be used before field to reverse order, char "~" can be used to do a case-insensitive comparison; example: "-~name" for case-insensitive and reverse sort on option name

  - type: string

  - values: any string

  - default value: `"~name"`

- fset.look.unmarked_string

  - description: string displayed when an option is not marked

  - type: string

  - values: any string

  - default value: `" "`

- fset.look.use_color_value

  - description: use the color to display value of color options

  - type: boolean

  - values: on, off

  - default value: `on`

- fset.look.use_keys

  - description: use keys alt+X in fset buffer to do actions on options; if disabled, only the input is allowed

  - type: boolean

  - values: on, off

  - default value: `on`

- fset.look.use_mute

  - description: use /mute command to set options

  - type: boolean

  - values: on, off

  - default value: `off`

### 7.2. Couleurs

#### Couleurs de base

Les couleurs de base dans WeeChat sont :

Nom | Couleur
--- | ---
`default` | Couleur par défaut du terminal (transparent pour le fond)
`black` | Noir
`darkgray` | Gris foncé
`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
`gray` | Gris
`white` | Blanc

#### Couleurs étendues

WeeChat alloue dynamiquement les paires de couleurs quand elles sont utilisées sur l’écran (pour afficher les tampons et les barres).

En plus des couleurs de base, vous pouvez utiliser un numéro de couleur entre 1 et la limite de votre terminal.

Utilisez la commande `/color` pour voir les couleurs et les limites. Avec la touche `Alt`+`c`, vous pouvez basculer temporairement vers les couleurs du terminal pour choisir une couleur.

Par exemple si vous souhaitez afficher l’heure en orange dans le tampon, faites :

    /set weechat.color.chat_time 214

Ou si vous voulez un fond vert très foncé pour la barre de statut :

    /set weechat.bar.status.color_bg 22

#### Alias

Vous pouvez ajouter des alias de couleur avec la commande `/color alias` puis utiliser cet alias dans n’importe quelle option de couleur.

Par exemple :

    /color alias 214 orange
    /set weechat.color.chat_delimiters orange

#### Attributs

Il est possible d’utiliser des attributs pour les couleurs. Un ou plusieurs attributs peuvent être ajoutés avant le nom ou le numéro de la couleur :

- `%` : clignotement

- `.` : "dim" (demi-intensité)

- `*` : texte gras

- `!` : mode vidéo inverse

- `/` : italique

- `_` : texte souligné

- `|` : garder les attributs : ne pas réinitialiser clignotement/dim/gras/inverse/souligné lors du changement de couleur

Par exemple si vous voulez votre pseudo en blanc souligné, faites :

    /set weechat.color.chat_nick_self _white

Ou si vous voulez l’heure dans la barre de statut en orange souligné avec gras :

    /set weechat.color.status_time *_214

Pour utiliser un attribut avec la couleur par défaut du terminal (-1), vous devez utiliser un nombre supérieur à la dernière couleur du terminal, par exemple la couleur maximum de WeeChat : 99999.

Exemple de gras avec la couleur de texte du terminal :

    /set weechat.color.status_time *99999

### 7.3. Charset

L’extension Charset vous permet de décoder et encoder les données en utilisant un jeu de caractères.

Il y a un jeu de caractère par défaut pour le décodage/encodage, et un spécifique pour les tampons (ou groupes de tampons).

Cette extension est facultative, mais recommandée : si elle n’est pas chargée, WeeChat pourra uniquement lire/écrire des données UTF-8.

L’extension Charset devrait être automatiquement chargée par WeeChat au démarrage. Pour s’assurer que l’extension est bien chargée, essayez :

    /charset

Si la commande n’est pas trouvée, alors chargez l’extension avec la commande :

    /plugin load charset

Si l’extension n’est pas trouvée, alors vous devriez recompiler WeeChat avec les extensions et le support de Charset.

Lorsque l’extension Charset démarre, elle affiche le jeu de caractères du terminal et l’interne. Le jeu de caractères du terminal dépend de votre locale, et l’interne est UTF-8.

Par exemple :

    charset : terminal : ISO-8859-15, interne : UTF-8

#### Définir le jeu de caractère

Pour modifier les jeux de caractères de décodage et d’encodage globaux, utilisez la commande `/set`.

Par exemple :

    /set charset.default.decode ISO-8859-15
    /set charset.default.encode ISO-8859-15

Si le jeu de caractères de décodage global n’est pas renseigné (par exemple pendant le premier chargement de Charset), il sera renseigné automatiquement avec le jeu de caractères du terminal (s’il est différent de UTF-8) ou par défaut à ISO-8859-1.

La valeur d’encodage par défaut est vide, donc WeeChat envoie par défaut avec le jeu de caractères interne (UTF-8).

Pour modifier le jeu de caractères d’un serveur IRC, utilisez la commande `/charset` sur le tampon serveur. Si vous donnez seulement le jeu de caractères, alors vous modifiez en même temps les valeurs de décodage et d’encodage.

Par exemple :

    /charset ISO-8859-15

Ce qui est équivalent à :

    /charset decode ISO-8859-15
    /charset encode ISO-8859-15

Pour modifier le jeu de caractères d’un canal IRC (ou d’une conversation privée), utilisez la même commande que pour le serveur, mais sur le tampon du canal (ou du privé).

Pour définir le jeu de caractères pour tous les canaux/privés d’un serveur IRC :

    /set charset.encode.irc.libera ISO-8859-15

Pour voir tous les jeux de caractères utilisés, utilisez la commande suivante :

    /set charset.*

#### En cas de problème

Pour tout problème avec les jeux de caractères, merci de consulter la FAQ WeeChat / Accents ↗.

#### Commandes

- `charset`: change charset for current buffer

    /charset  decode|encode <charset>
              reset

     decode: change decoding charset
     encode: change encoding charset
    charset: new charset for current buffer
      reset: reset charsets for current buffer

#### Options

Sections dans le fichier charset.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`default` | `/set charset.default.*` | Jeu de caractère d’encodage/décodage par défaut.
`decode` | `/charset decode /set charset.decode.*` | Jeu de caractère d’encodage par tampon (les options peuvent être ajoutées/supprimées dans la section).
`encode` | `/charset encode /set charset.encode.*` | Jeu de caractère de décodage par tampon (les options peuvent être ajoutées/supprimées dans la section).

Options :

- charset.default.decode

  - description: global decoding charset: charset used to decode incoming messages when they are not UTF-8 valid

  - type: string

  - values: any string

  - default value: `"iso-8859-1"`

- charset.default.encode

  - description: global encoding charset: charset used to encode outgoing messages (if empty, default is UTF-8 because it is the WeeChat internal charset)

  - type: string

  - values: any string

  - default value: `""`

### 7.4. Niveaux de notification

#### Configurer les niveaux de notification

Quatre niveaux sont possibles dans les messages affichés dans les tampons, du moins important au plus important :

- low : message avec faible importance (par exemple un join/part/quit irc)

- message : message d’un utilisateur

- private : message dans un tampon privé

- highlight : message avec highlight

Chaque tampon a un niveau de notification, qui est utilisé pour décider quels messages ajouteront le tampon dans la hotlist.

Le niveau de notification par défaut peut être défini avec l’option weechat.look.buffer_notify_default, la valeur par défaut est all.

Niveau de notification | Niveau des messages ajoutés à la hotlist
--- | ---
`none` | (aucun)
`highlight` | highlight + private
`message` | highlight + private + message
`all` | highlight + private + message + low

Le niveau de notification peut être défini pour un ensemble de tampons, par exemple tous les tampons du serveur irc "libera" :

    /set weechat.notify.irc.libera message

Définir le niveau de notification highlight sur le canal "#weechat" seulement :

    /set weechat.notify.irc.libera.#weechat highlight

Le niveau de notification pour un tampon peut aussi être défini avec la commande `/buffer` :

    /buffer notify highlight

#### Niveau maximal de hotlist pour des pseudos

Il est possible de définir un niveau maximal de hotlist pour certains pseudos, par tampon ou groupe de tampons (comme des serveurs IRC).

La propriété de tampon "hotlist_max_level_nicks" peut être définie avec une liste de pseudos et pour chaque pseudo le niveau maximal de hotlist à déclencher, les niveaux possibles sont :

- -1 : pas de changement dans la hotlist pour ce pseudo

- 0 : faible priorité (comme les messages join/part)

- 1 : message

- 2 : message privé

- 3 : highlight (en réalité inutile, car il s’agit déjà du niveau maximal par défaut pour tous les messages)

Par exemple pour désactiver les « highlights » de "joe" et "mike" sur le tampon courant :

    /buffer setauto hotlist_max_level_nicks_add joe:2,mike:2

### 7.5. Highlights

#### Désactiver les highlights

Vous pouvez désactiver les highlights avec l’option weechat.look.highlight_disable_regex (expression régulière).
Lorsqu’un highlight est désactivé avec cette option, les autres options de highlight sont ignorées.

Par exemple pour désactiver tout highlight sur les messages avec un mot commençant par "flash" entre chevrons :

    /set weechat.look.highlight_disable_regex "<flash.*>"

Ceci peut aussi être défini avec la propriété de tampon "highlight_disable_regex".

Même exemple, spécifique au tampon courant :

    /buffer setauto highlight_disable_regex <flash.*>

#### Ajouter des mots pour le « highlight »

Par défaut, WeeChat met en valeur les messages des autres utilisateurs qui contiennent votre pseudo, par conséquent le highlight dépend du tampon (le pseudo peut être différent d’un tampon à l’autre).

Vous pouvez ajouter d’autres mots à mettre en valeur avec l’option weechat.look.highlight, par exemple pour mettre en valeur votre pseudo, "mot1", "mot2" et tous les mots commençants par "test" :

    /set weechat.look.highlight "mot1,mot2,test*"

Si vous avez besoin d’une règle plus spécifique pour un mot, vous pouvez utiliser des expressions régulières avec l’option weechat.look.highlight_regex, par exemple pour mettre en valeur les mots "flashcode", "flashcöde" et "flashy" :

    /set weechat.look.highlight_regex "flashc[oö]de|flashy"

Les délimiteurs autour des mots à mettre en valeur peuvent être paramétrés avec l’option weechat.look.word_chars_highlight.

#### Ajouter des étiquettes pour le « highlight »

Les lignes affichées contiennent des étiquettes (« tags »), qui donnent des informations sur l’origine du message ou le message lui-même.
Vous pouvez afficher les étiquettes avec la commande `/debug tags` (même commande pour les cacher).

Vous pouvez ajouter des étiquettes à mettre en valeur avec l’option weechat.look.highlight_tags. Les étiquettes sont séparées par des virgules, et plusieurs étiquettes peuvent être séparées par `+` pour faire un "et" logique entre elles.

Par exemple pour mettre en valeur tous les messages du pseudo "FlashCode" et toutes les notices des pseudos commençant par "toto" :

    /set weechat.look.highlight_tags "nick_flashcode,irc_notice+nick_toto*"

#### Définir des highlights supplémentaires sur le tampon

Vous pouvez forcer le highlight en utilisant une expression regulière avec la propriété de tampon "highlight_regex".

Par exemple pour forcer le highlight sur tous les messages dans le canal courant :

    /buffer setauto highlight_regex .*

### 7.6. Enregistrement des tampons

L’extension Logger permet de sauvegarder le contenu des tampons dans des fichiers, avec des options sur comment et quoi sauvegarder.

#### Niveaux d’enregistrement

L’enregistrement est fait selon un niveau pour chaque tampon. Le niveau par défaut est 9 (enregistrer tous les messages affichés dans le tampon). Vous pouvez changer ce niveau pour un tampon, ou un groupe de tampons.

Les niveaux possibles vont de 0 à 9. Zéro signifie "ne rien enregistrer" et 9 signifie "enregistrer tous les messages".

Les extensions utilisent différent niveaux pour les messages affichés. L’extension IRC utilise les niveaux suivants :

- niveau 1 : message d’un utilisateur (sur un canal ou en privé)

- niveau 2 : changement de pseudo (vous ou quelqu’un d’autre)

- niveau 3 : tout message du serveur (sauf join/part/quit)

- niveau 4 : message join/part/quit du serveur

Donc si vous affectez le niveau 3 pour un canal IRC, WeeChat enregistrera tous les messages sauf les join/part/quit.

Quelques exemples :

- Affecter le niveau 3 pour le canal IRC #weechat :

    /set logger.level.irc.libera.#weechat 3

- Affecter le niveau 3 pour le tampon serveur libera :

    /set logger.level.irc.server.libera 3

- Affecter le niveau 3 pour tous les canaux sur le serveur libera :

    /set logger.level.irc.libera 3

- Affecter le niveau 2 pour tous les tampons IRC :

    /set logger.level.irc 2

#### Masques de noms de fichiers

Il est possible de définir un masque de nom de fichier pour chaque tampon, et d’utiliser les variables locales du tampon pour construire le nom de fichier. Pour voir les variables disponibles sur le tampon courant :

    /buffer listvar

Les masques seront utilisés par ordre de priorité descendante sur `logger.mask.$plugin.*`, avec `logger.file.mask` comme option par défaut.

Par exemple, sur le tampon "irc.libera.#weechat", WeeChat cherchera un masque avec le nom de l’option, dans cet ordre :

    logger.mask.irc.libera.#weechat
    logger.mask.irc.libera
    logger.mask.irc
    logger.file.mask

Cela signifie que vous pouvez avoir un masque spécifique pour certaines serveurs IRC ("logger.mask.irc.libera") ou pour une extension ("logger.mask.irc").

##### Fichiers de log par date

Pour avoir des fichiers de log par date, vous pouvez utiliser des marqueurs dans le masque (voir `man strftime` pour le format), par exemple :

    /set logger.file.mask "%Y/%m/$plugin.$name.weechatlog"

Vous obtiendrez les fichiers suivants :

    ~/.local/share/weechat
    └── logs
        ├── 2010
        │   ├── 11
        │   │   ├── irc.server.libera.weechatlog
        │   │   └── irc.libera.#weechat.weechatlog
        │   └── 12
        │       ├── irc.server.libera.weechatlog
        │       └── irc.libera.#weechat.weechatlog
        ├── 2011
        │   ├── 01
        │   │   ├── irc.server.libera.weechatlog
        │   │   └── irc.libera.#weechat.weechatlog
        │   ├── 02
        ...

##### Fichiers de log IRC par serveur et canal

Si vous voulez un répertoire par serveur IRC et un fichier par canal dedans :

    /set logger.mask.irc "irc/$server/$channel.weechatlog"

Vous obtiendrez les fichiers suivants :

    ~/.local/share/weechat
    └── logs
        └── irc
            ├── libera
            │   ├── libera.weechatlog
            │   ├── #weechat.weechatlog
            │   └── #moncanal.weechatlog
            ├── oftc
            │   ├── oftc.weechatlog
            │   ├── #canal1.weechatlog
            │   └── #canal2.weechatlog
            ...

#### Rotation et compression

Il est possible de définir une taille maximale pour les fichiers de logs, et lorsqu’elle est atteinte, il y a une rotation automatique du fichier de log.

Les fichiers de logs qui ont tourné peuvent être compressés avec gzip ou zstd ↗.

Note | La compression du fichier pouvant prendre du temps, elle est exécutée en tâche de fond.

Exemple avec une taille maximale de 2 Go et la compression avec gzip, en utilisant un bon niveau de compression (plus lent que celui par défaut) :

    /set logger.file.rotation_compression_type gzip
    /set logger.file.rotation_compression_level 80
    /set logger.file.rotation_size_max "2g"

Si vous voulez utiliser un nombre décimal, vous pouvez utiliser l’unité en dessous et multiplier par 1000, par exemple pour une taille maximale de 2,5 Go :

    /set logger.file.rotation_size_max "2500m"

Avec cette configuration, vous aurez des fichiers comme ceux-ci (dans cet exemple il y a eu une rotation seulement pour le log du canal "#weechat"):

    ~/.local/share/weechat
    └── logs
        ├── core.weechat.weechatlog
        ├── irc.server.libera.weechatlog
        ├── irc.libera.#weechat.weechatlog
        ├── irc.libera.#weechat.weechatlog.1.gz
        ├── irc.libera.#weechat.weechatlog.2.gz
        └── irc.libera.#weechat.weechatlog.3.gz

#### Commandes

- `logger`: logger plugin configuration

    /logger  list
             set <level>
             flush
             disable

       list: show logging status for opened buffers
        set: set logging level on current buffer
      level: level for messages to be logged (0 = logging disabled, 1 = a few messages (most important) .. 9 = all messages)
      flush: write all log files now
    disable: disable logging on current buffer (set level to 0)

    Options "logger.level.*" and "logger.mask.*" can be used to set level or mask for a buffer, or buffers beginning with name.

    Log levels used by IRC plugin:
      1: user message (channel and private), notice (server and channel)
      2: nick change
      3: server message
      4: join/part/quit
      9: all other messages

    Examples:
      set level to 5 for current buffer:
        /logger set 5
      disable logging for current buffer:
        /logger disable
      set level to 3 for all IRC buffers:
        /set logger.level.irc 3
      disable logging for main WeeChat buffer:
        /set logger.level.core.weechat 0
      use a directory per IRC server and a file per channel inside:
        /set logger.mask.irc "$server/$channel.weechatlog"

#### Options

Sections dans le fichier logger.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set logger.look.*` | Aspect/présentation.
`color` | `/set logger.color.*` | Couleurs.
`file` | `/set logger.file.*` | Options pour les fichiers de log.
`level` | `/set logger.level.*` | Niveau de log par tampon (les options peuvent être ajoutées/supprimées dans la section).
`mask` | `/set logger.mask.*` | Masque de nom de fichier par tampon (les options peuvent être ajoutées/supprimées dans la section).

Options :

- logger.color.backlog_end

  - description: color for line ending the backlog

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `246`

- logger.color.backlog_line

  - description: color for backlog lines, used only if the option logger.file.color_lines is off

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `246`

- logger.file.auto_log

  - description: automatically save content of buffers to files (unless a buffer disables log); if disabled, logging is disabled on all buffers

  - type: boolean

  - values: on, off

  - default value: `on`

- logger.file.color_lines

  - description: use ANSI color codes in lines written in log files and display backlog lines with these colors

  - type: boolean

  - values: on, off

  - default value: `off`

- logger.file.flush_delay

  - description: number of seconds between flush of log files (0 = write in log files immediately for each line printed)

  - type: integer

  - values: 0 .. 3600

  - default value: `120`

- logger.file.fsync

  - description: use fsync to synchronize the log file with the storage device after the flush (see man fsync); this is slower but should prevent any data loss in case of power failure during the save of log file

  - type: boolean

  - values: on, off

  - default value: `off`

- logger.file.info_lines

  - description: write information line in log file when log starts or ends for a buffer

  - type: boolean

  - values: on, off

  - default value: `off`

- logger.file.log_conditions

  - description: conditions to save content of buffers to files (note: content is evaluated, see /help eval); empty value saves content on all buffers; for example to log only private buffers: "${type} == private"

  - type: string

  - values: any string

  - default value: `""`

- logger.file.mask

  - description: default file name mask for log files (format is "directory/to/file" or "file", without first "/" because "path" option is used to build complete path to file); local buffer variables are permitted (you should use only variables that are defined on all buffers, so for example you should NOT use $server nor $channel); date specifiers are permitted (see man strftime)

  - type: string

  - values: any string

  - default value: `"$plugin.$name.weechatlog"`

- logger.file.name_lower_case

  - description: use only lower case for log filenames

  - type: boolean

  - values: on, off

  - default value: `on`

- logger.file.nick_prefix

  - description: text to write before nick in prefix of message, example: "<"

  - type: string

  - values: any string

  - default value: `""`

- logger.file.nick_suffix

  - description: text to write after nick in prefix of message, example: ">"

  - type: string

  - values: any string

  - default value: `""`

- logger.file.path

  - description: path for WeeChat log files; date specifiers are permitted (see man strftime) (path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `"${weechat_data_dir}/logs"`

- logger.file.replacement_char

  - description: replacement char for special chars in filename built with mask (like directory delimiter)

  - type: string

  - values: any string

  - default value: `"_"`

- logger.file.rotation_compression_level

  - description: compression level for rotated log files (with extension ".1", ".2", etc.), if option logger.file.rotation_compression_type is enabled: 1 = low compression / fast ... 100 = best compression / slow; the value is a percentage converted to 1-9 for gzip and 1-19 for zstd; the default value is recommended, it offers a good compromise between compression and speed

  - type: integer

  - values: 1 .. 100

  - default value: `20`

- logger.file.rotation_compression_type

  - description: compression type for rotated log files; if set to "none", rotated log files are not compressed; WARNING: if rotation was enabled with another type of compression (or no compression), you must first unload the logger plugin, compress files with the new type (or decompress files), then change the option in logger.conf, then load the logger plugin

  - type: enum

  - values: none, gzip, zstd

  - default value: `none`

- logger.file.rotation_size_max

  - description: when this size is reached, a rotation of log files is performed: the existing rotated log files are renamed (.1 becomes .2, .2 becomes .3, etc.) and the current file is renamed with extension .1; an integer number with a suffix is allowed: b = bytes (default if no unit given), k = kilobytes, m = megabytes, g = gigabytes, t = terabytes; example: "2g" causes a rotation if the file size is > 2,000,000,000 bytes; if set to "0", no rotation is performed (unlimited log size); WARNING: before changing this option, you should first set the compression type via option logger.file.rotation_compression_type

  - type: string

  - values: any string

  - default value: `"0"`

- logger.file.time_format

  - description: timestamp used in log files (see man strftime for date/time specifiers, extra specifiers are supported, see function util_strftimeval in Plugin API reference)

  - type: string

  - values: any string

  - default value: `"%Y-%m-%d %H:%M:%S"`

- logger.look.backlog

  - description: maximum number of lines to display from log file when creating new buffer (0 = no backlog)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `20`

- logger.look.backlog_conditions

  - description: conditions to display the backlog (note: content is evaluated, see /help eval); empty value displays the backlog on all buffers; for example to display backlog on private buffers only: "${type} == private"

  - type: string

  - values: any string

  - default value: `""`

### 7.7. Support souris

WeeChat supporte les clics et mouvements avec la souris. Cela fonctionne avec un terminal local, et à distance via une connexion ssh, avec ou sans screen/tmux.

#### Activer la souris

Pour activer la souris au démarrage :

    /set weechat.look.mouse on

Pour activer la souris maintenant, appuyez sur `Alt`+`m` ou lancez la commande suivante :

    /mouse enable

Il est possible de désactiver temporairement la souris, et associer ça à une touche. Par exemple la touche `Alt`+`%` pour désactiver la souris pendant 10 secondes :

    /key bind meta-% /mouse toggle 10

Important

Lorsque la souris est activée dans WeeChat, tous les évènements souris sont capturés par WeeChat, donc les actions comme le copier/coller et les clics sur les URLs ne sont pas envoyées au terminal.
Utiliser la touche `Shift` permet d’envoyer directement les évènements au terminal, comme si la souris était désactivée (sous certains terminaux comme iTerm, vous devez utiliser `Alt` au lieu de `Shift`).

Note | Pour tout problème avec la souris, merci de consulter la FAQ WeeChat / Souris ↗.

#### Associer des évènements souris à des commandes

De nombreux évènements souris sont déjà définis par WeeChat (voir les actions souris).

Vous pouvez modifier ou ajouter des associations avec la commande `/key` en utilisant le contexte "mouse" (pour la syntaxe voir la commande /key).

Un nom d’évènement consiste en un modificateur (facultatif), un bouton/roulette et un geste (facultatif). Les différents éléments sont séparés par `-`.

Liste des modificateurs (par ordre dans le nom de l’évènement) :

Modificateur | Description
--- | ---
`alt` | Touche `Alt`
`ctrl` | Touche `Ctrl`
`shift` | Touche `Shift` (1)

Note | (1) Le modificateur `shift` peut rarement être utilisé dans WeeChat car beaucoup de terminaux utilisent ce modificateur pour attraper directement les évènements souris.

Plusieurs modificateurs peuvent être combinés, par exemple :

- `alt-ctrl`

- `ctrl-shift`

- `alt-ctrl-shift`

Liste des boutons/roulette :

Bouton/roulette | Description
--- | ---
`button1` | Clic sur le bouton gauche
`button2` | Clic sur le bouton droit
`button3` | Clic sur le bouton du milieu (souvent clic sur la roulette)
`button4 …​ button11` | Clic sur un bouton additionnel
`wheelup` | Roulette (haut)
`wheeldown` | Roulette (bas)

Liste des gestes (seulement pour les boutons, pas la roulette) :

Geste | Distance
--- | ---
`gesture-up` | 3 …​ 19
`gesture-up-long` | ≥ 20
`gesture-down` | 3 …​ 19
`gesture-down-long` | ≥ 20
`gesture-left` | 3 …​ 39
`gesture-left-long` | ≥ 40
`gesture-right` | 3 …​ 39
`gesture-right-long` | ≥ 40

Liste des évènements incomplets (seulement pour les boutons, pratique pour les extensions/scripts) :

Évènement | Description
--- | ---
`event-down` | Le bouton a été pressé mais pas encore relâché
`event-drag` | La souris a bougé avec le bouton pressé

Exemples d’évènements :

- `button1`

- `ctrl-button1`

- `button1-gesture-right`

- `button1-event-down`

- `button1-event-drag`

- `alt-button2-gesture-down-long`

- `wheelup`

- `alt-ctrl-wheeldown`

- …​

Astuce | Lors de l’association d’une touche dans le contexte "mouse", il est possible d’adresser plusieurs évènements en utilisant `*` au début ou la fin du nom, par exemple `button1-gesture-*` qui correspond à n’importe quel geste effectué avec le bouton gauche.

Astuce | Vous pouvez trouver le nom de l’évènement avec la commande `/input grab_mouse` puis en faisant l’action avec la souris. Cela insérera le nom de l’évènement sur la ligne de commande.

### 7.8. Vérification orthographique

L’extension Spell permet de vérifier l’orthographe de la ligne de commande. Il est possible d’utiliser plusieurs langages par tampon.

La vérification de l’orthographe est désactivée par défaut et peut être activée/désactivée avec la touche `Alt`+`s`.

#### Dictionnaires

Avant d’utiliser la vérification de l’orthographe, les dictionnaires doivent être définis soit globalement, soit spécifiquement sur un tampon.

Plusieurs dictionnaires peuvent être utilisés en même temps : WeeChat vérifiera les mots dans tous les dictionnaires.

Par exemple pour utiliser l’anglais et le français :

    /set spell.check.default_dict "en,fr"

Il est possible d’utiliser un dictionnaire différent sur un tampon spécifique, par exemple sur un canal allemand :

    /spell setdict de

Vous pouvez aussi spécifier un dictionnaire pour un groupe de tampons, par exemple l’anglais pour tous les canaux du serveur IRC libera :

    /set spell.dict.irc.libera en

Pour plus d’informations, voir la commande /spell.

#### Options du vérificateur d’orthographe

Les options du vérificateur d’orthographe peuvent être définies en ajoutant des options dans la section "option" de la configuration aspell.

Le nom de l’option est une option de configuration aspell. La liste des options peut être trouvée par la commande suivante sous le shell :

    aspell config

Par exemple, pour activer l’option "ignore-case" :

    /set spell.option.ignore-case "true"

#### Suggestions

Les suggestions sont affichées dans un objet de barre appelé "spell_suggest". Le nombre de suggestions est défini dans l’option spell.check.suggestions.

Pour activer les suggestions, vous devez modifier l’option spell.check.suggestions avec un entier ≥ 0 et ajouter l’objet de barre "spell_suggest" à une barre, par exemple status.

Exemple de suggestions avec un dictionnaire anglais (`en`) :

    │[12:55] [6] [irc/libera] 3:#test(+n){4} [print,prone,prune]                      │
    │[@Flashy] prinr █                                                                │
    └─────────────────────────────────────────────────────────────────────────────────┘

Exemple de suggestions avec des dictionnaires anglais et français (`en,fr`) :

    │[12:55] [6] [irc/libera] 3:#test(+n){4} [print,prone,prune/prime,primer,primé]   │
    │[@Flashy] prinr █                                                                │
    └─────────────────────────────────────────────────────────────────────────────────┘

#### Commandes

- `spell`: spell plugin configuration

    /spell  enable|disable|toggle
            listdict
            setdict -|<dict>[,<dict>...]
            deldict
            addword [<dict>] <word>

      enable: enable spell checker
     disable: disable spell checker
      toggle: toggle spell checker
    listdict: show installed dictionaries
     setdict: set dictionary for current buffer (multiple dictionaries can be separated by a comma, the special value "-" disables spell checking on current buffer)
     deldict: delete dictionary used on current buffer
     addword: add a word in personal dictionary

    Input line beginning with a "/" is not checked, except for some commands (see /set spell.check.commands).

    To enable spell checker on all buffers, use option "default_dict", then enable spell checker, for example:
      /set spell.check.default_dict "en"
      /spell enable

    To display a list of suggestions in a bar, use item "spell_suggest".

    Default key to toggle spell checker is alt-s.

#### Options

Sections dans le fichier spell.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`color` | `/set spell.color.*` | Couleurs.
`check` | `/set spell.check.*` | Options pour contrôler la vérification orthographique.
`dict` | `/spell setdict /set spell.dict.*` | Dictionnaires utilisés par tampon (les options peuvent être ajoutées/supprimées dans la section).
`look` | `/set spell.look.*` | Aspect/présentation.
`option` | `/set spell.option.*` | Options du vérificateur d’orthographe (les options peuvent être ajoutées/supprimées dans la section).

Options :

- spell.check.commands

  - description: comma separated list of commands for which spell checking is enabled (spell checking is disabled for all other commands)

  - type: string

  - values: any string

  - default value: `"away,command,cycle,kick,kickban,me,msg,notice,part,query,quit,topic"`

- spell.check.default_dict

  - description: default dictionary (or comma separated list of dictionaries) to use when buffer has no dictionary defined (leave blank to disable spell checker on buffers for which you didn't explicitly enabled it)

  - type: string

  - values: any string

  - default value: `""`

- spell.check.during_search

  - description: check words during text search in buffer

  - type: boolean

  - values: on, off

  - default value: `off`

- spell.check.enabled

  - description: enable spell checker for command line

  - type: boolean

  - values: on, off

  - default value: `off`

- spell.check.real_time

  - description: real-time spell checking of words (slower, disabled by default: words are checked only if there's delimiter after)

  - type: boolean

  - values: on, off

  - default value: `off`

- spell.check.suggestions

  - description: number of suggestions to display in bar item "spell_suggest" for each dictionary set in buffer (-1 = disable suggestions, 0 = display all possible suggestions in all languages)

  - type: integer

  - values: -1 .. 2147483647

  - default value: `-1`

- spell.check.word_min_length

  - description: minimum length for a word to be spell checked (use 0 to check all words)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `2`

- spell.color.misspelled

  - description: text color for misspelled words (input bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightred`

- spell.color.suggestion

  - description: text color for suggestion on a misspelled word in bar item "spell_suggest"

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- spell.color.suggestion_delimiter_dict

  - description: text color for delimiters displayed between two dictionaries in bar item "spell_suggest"

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- spell.color.suggestion_delimiter_word

  - description: text color for delimiters displayed between two words in bar item "spell_suggest"

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- spell.look.suggestion_delimiter_dict

  - description: delimiter displayed between two dictionaries in bar item "spell_suggest"

  - type: string

  - values: any string

  - default value: `" / "`

- spell.look.suggestion_delimiter_word

  - description: delimiter displayed between two words in bar item "spell_suggest"

  - type: string

  - values: any string

  - default value: `","`

### 7.9. Barres

Une barre est une zone à côté de la discussion qui peut contenir tout type de texte.

Les options de barre sont définies avec les options `weechat.bar.nom.option` où `nom` et le nom de la barre et `option` l’option pour cette barre.

Liste des options de barre :

Option | Valeurs | Description
--- | --- | ---

`type`

`root`, `window`

Une barre avec le type `root` est affichée exactement une fois à l’écran, en dehors de toutes les fenêtres. La barre par défaut buflist est de type `root`.
Une barre avec le type `window` est affichée dans chaque fenêtre, par exemple si vous découpez l’écran (avec `/window splith` ou `/window splitv`), vous aurez une barre dans chaque fenêtre. Les barres par défaut title, status, input et nicklist sont de type `window`.

`position` | `top`, `bottom`, `left`, `right` | Position de la barre : au dessus/en dessous de la discussion, sur la gauche/droite.

`priority`

entier ≥ 0

Priorité de la barre : elle est utilisée pour ordonner les barres à l’écran, quand plusieurs barres utilisent le même type et position.
Les barres sont affichées depuis le bord de l’écran vers le centre. Une priorité plus haute affichera la barre au début, donc près du bord.
Exemple : la barre input a une priorité de 1000, donc elle est affichée avant la barre status, qui a une priorité de 500.

`size` | entier ≥ 0 | La taille de la barre : nombre de colonnes pour une position left/right, nombre de lignes pour une position top/bottom. Une taille de `0` signifie automatique, donc la taille sera calculée en fonction du contenu affiché dans la barre.
`size_max` | entier ≥ 0 | La taille maximum pour la barre, `0` = pas de limite (cette option est utilisée seulement si `size` = `0`).
`color_bg` | couleur | La couleur par défaut du fond de la barre.
`color_fg` | couleur | La couleur par défaut du texte dans la barre.
`color_delim` | couleur | La couleur des délimiteurs dans la barre.
`hidden` | `on`, `off` | Lorsque l’option est `on`, la barre est cachée. Note : plutôt que de changer cette option, il est préférable d’utiliser la commande `/bar`, par exemple : `/bar toggle nicklist` (voir la commande /bar).
`separator` | `on`, `off` | Lorsque l’option est `on`, un séparateur (ligne) est affiché entre la barre et les autres barres (ou la discussion).
`items` | chaîne | Une liste d’objets (voir objets pour plus d’infos).
`filling_left_right` | `horizontal`, `vertical`, `columns_horizontal`, `columns_vertical` | Type de remplissage pour la barre lorsqu’elle a une position `left` ou `right` (voir remplissage pour plus d’infos).
`filling_top_bottom` | `horizontal`, `vertical`, `columns_horizontal`, `columns_vertical` | Type de remplissage pour la barre lorsqu’elle a une position `top` ou `bottom` (voir remplissage pour plus d’infos).
`conditions` | chaîne | Les conditions pour afficher la barre (voir conditions pour plus d’infos).

#### Objets

L’option items est une chaîne avec une liste d’objets de barre, séparés par une virgule (espace entre les objets à l’écran) ou un `+` (objets collés).

La liste des objets de barre est affichée avec la commande `/bar listitems`.

Avant ou après l’objet de barre, vous pouvez utiliser des caractères (qui ne sont pas alphanumériques, `-` ou `_`). Ils seront affichés avant/après l’objet de barre avec la couleur des délimiteurs définie dans la barre (option color_delim).

Exemple de barre avec les objets "[time],buffer_number+:+buffer_plugin+.+buffer_name,[buffer_last_number]" :

    ┌───────────────────────────────────────────────────────────────────────────┐
    │[12:55] 3:irc/libera.#weechat [9]                                          │
    └───────────────────────────────────────────────────────────────────────────┘

##### Objet d’espacement

Un objet appelé `spacer` peut être utilisé pour aligner les objets (gauche, centre, droite).

Lorsqu’au moins un objet `spacer` est utilisé dans une barre, la largeur totale de la barre est utilisée : les espacements sont automatiquement étendus avec la même taille (ou presque).
Lorsque la barre n’est pas assez large pour afficher tous les objets, les espacements ne sont pas affichés.

Note | L’objet de barre `spacer` ne peut être utilisé que dans les barres avec position `top` ou `bottom`, remplissage `horizontal` et taille `1`.

Exemple de barre avec les objets "[time],spacer,buffer_number+:+buffer_plugin+.+buffer_name,spacer,[buffer_last_number]" :

    ┌───────────────────────────────────────────────────────────────────────────┐
    │[12:55]                      3:irc/libera.#weechat                      [9]│
    └───────────────────────────────────────────────────────────────────────────┘

##### Tampon forcé

Une syntaxe spéciale peut être utilisée pour forcer le tampon utilisé lors de l’affichage de l’objet de barre : "@tampon:objet" (où "tampon" est le nom complet du tampon et "objet" est le nom d’un objet de barre).

Ceci peut être pratique dans les barres "root", pour afficher un objet de barre pour un tampon qui n’est pas affiché dans la fenêtre courante (ou même pas affiché du tout).

Exemple : liste de pseudos de bitlbee dans une barre "root" (si la barre s’appelle bitlist et si le serveur bitlbee s’appelle bitlbee) :

    /set weechat.bar.bitlist.items "@irc.bitlbee.&bitlbee:buffer_nicklist"

##### Objets de barre personnalisés

Des objets de barre personnalisés peuvent être ajoutés avec la commande /item, chaque nouvel objet ayant deux propriétés définies via des options de configuration :

- `conditions` : conditions évaluées pour afficher l’objet de barre, par exemple pour restreindre l’objet de barre à certains tampons (si vide, l’objet de barre est affiché partout)

- `content` : contenu évalué de l’objet de barre.

Dans chacune des options, les variables suivantes peuvent être utilisées :

- `window` : pointeur vers la fenêtre où la barre est affichée (`NULL` pour une barre de type "root")

- `buffer` : pointeur vers le tampon où la barre est affichée (tampon courant pour les barres de type "root").

Exemples de conditions :

Condition | Description
--- | ---
`${window}` | Affiché seulement dans les barres de type "window"
`${buffer.number} == 1` | Affiché dans tous les tampons avec "number" = 1
`${buffer.plugin.name} == irc` | Affiché dans tous les tampons IRC
`${type} == channel` | Affiché dans tous les tampons où la variable locale `type` est `channel` (exemple : tous les canaux IRC)
`${type} == private` | Affiché dans tous les tampons où la variable locale `type` est `private` (exemple : tous les tampons privés IRC)

Note | Il n’y a pas de moyen intégré de rafraîchir les objets de barre personnalisés. Vous pouvez utiliser l’extension Trigger pour forcer un rafraîchissement, par exemple sur un ou plusieurs signaux reçus.

Pour plus d’informations et des exemples, voir la commande /item.

#### Remplissage

Il y a quatre types de remplissage :

- `horizontal` : les objets sont affichés horizontalement, de gauche à droite. S’il y a des retours à la ligne dans les objets, un espace est utilisé pour séparer les lignes.

- `vertical` : les objets sont affichés de haut en bas. S’il y a des retours à la ligne dans les objets, une nouvelle ligne est utilisée pour séparer les lignes.

- `columns_horizontal` : les objets sont affichés en utilisant des colonnes, où le texte est aligné à gauche. Le premier objet est en haut à gauche, le second est sur la même ligne, sur la droite.

- `columns_vertical` : les objets sont affichés en utilisant des colonnes, où le texte est aligné à gauche. Le premier objet est en haut à gauche, le second est sur la ligne en dessous.

Les barres par défaut title, status et input ont un remplissage horizontal, et la barre par défaut nicklist a un remplissage vertical.

Quelques exemples de remplissage pour la barre nicklist :

    ┌───────────────────────────────────────────────────────────────────────┐
    │Welcome to #test, this is a test channel                               │
    │12:54:15 peter | hey!                                         │@carl   │
    │12:55:01  +Max | hello                                        │@jessika│
    │                                                              │@maddy  │
    │                                                              │%Diego  │
    │                                                              │%Melody │
    │                                                              │+Max    │
    │                                                              │ celia  │
    │                                                              │ Eva    │
    │                                                              │ freddy │
    │                                                              │ Harold^│
    │                                                              │ henry4 │
    │                                                              │ jimmy17│
    │                                                              │ jodie ▼│
    │[12:55] [6] [irc/libera] 3:#test(+n){24}                               │
    │[@carl] █                                                              │
    └───────────────────────────────────────────────────────────────────────┘
                                         filling_left_right = vertical ▲

    ┌───────────────────────────────────────────────────────────────────────┐
    │Welcome to #test, this is a test channel                               │
    │12:54:15 peter | hey!                                │@carl     lee    │
    │12:55:01  +Max | hello                               │@jessika  louise │
    │                                                     │@maddy    mario  │
    │                                                     │%Diego    mark   │
    │                                                     │%Melody   peter  │
    │                                                     │+Max      Rachel │
    │                                                     │ celia    richard│
    │                                                     │ Eva      sheryl │
    │                                                     │ freddy   Vince  │
    │                                                     │ Harold^  warren │
    │                                                     │ henry4   zack   │
    │                                                     │ jimmy17         │
    │                                                     │ jodie           │
    │[12:55] [6] [irc/libera] 3:#test(+n){24}                               │
    │[@carl] █                                                              │
    └───────────────────────────────────────────────────────────────────────┘
                                 filling_left_right = columns_vertical ▲

    ┌───────────────────────────────────────────────────────────────────────┐
    │@carl    %Diego    celia    Harold^  jodie    mario    Rachel   Vince  │
    │@jessika %Melody   Eva      henry4   lee      mark     richard  warren │
    │@maddy   +Max      freddy   jimmy17  louise   peter    sheryl   zack   │
    │───────────────────────────────────────────────────────────────────────│
    │                                                                       │
            filling_top_bottom = columns_vertical ▲

    ┌───────────────────────────────────────────────────────────────────────┐
    │@carl    @jessika @maddy   %Diego   %Melody  +Max      celia    Eva    │
    │ freddy   Harold^  henry4   jimmy17  jodie    lee      louise   mario  │
    │ mark     peter    Rachel   richard  sheryl   Vince    warren   zack   │
    │───────────────────────────────────────────────────────────────────────│
    │                                                                       │
          filling_top_bottom = columns_horizontal ▲

#### Conditions

L’option conditions est une chaîne qui est évaluée pour savoir si la barre doit être affichée ou non.

La chaîne peut être :

- active : la fenêtre doit être active

- inactive : la fenêtre doit être inactive

- nicklist : le tampon affiché dans la fenêtre doit avoir une liste de pseudos

- une expression : elle est évaluée comme booléen (voir la commande /eval)

Pour une expression, les variables suivantes sont disponibles :

- `${active}` : vrai si la fenêtre est active

- `${inactive}` : vrai si la fenêtre est inactive

- `${nicklist}` : vrai si le tampon affiché dans la fenêtre a une liste de pseudos

Les pointeurs suivants sont disponibles :

- `${window}` : la fenêtre où la condition est évaluée

- `${buffer}` : le tampon de la fenêtre où la condition est évaluée

Exemple pour afficher la liste de pseudos dans tous les tampons possédant une liste de pseudos, et seulement si la largeur du terminal est supérieure à 100 :

    /set weechat.bar.nicklist.conditions "${nicklist} && ${info:term_width} > 100"

Même condition, mais afficher toujours la liste de pseudos sur le tampon &bitlbee (même si le terminal est petit) :

    /set weechat.bar.nicklist.conditions "${nicklist} && (${info:term_width} > 100 || ${buffer.full_name} == irc.bitlbee.&bitlbee)"

### 7.10. Données sécurisées

#### Stockage

WeeChat peut chiffrer les mots de passe ou les données sensibles en utilisant des données sécurisées, stockées dans le fichier sec.conf.

Ce fichier de configuration est lu avant tout autre fichier, et les valeurs ici stockées peuvent être utilisées dans diverses options de WeeChat ou des extensions/scripts.

Vous pouvez définir une phrase secrète pour chiffrer les données dans le fichier sec.conf. Ce n’est pas obligatoire, mais fortement recommandé, sinon les données sont stockées sous forme de texte en clair dans le fichier.

    /secure passphrase ceci est ma phrase secrète

##### Phrase secrète au démarrage

Lorsqu’une phrase secrète est définie, WeeChat vous demandera de la saisir lors du démarrage (mais pas sur `/upgrade`).

Si vous utilisez un gestionnaire de mots de passe, vous pouvez lancer un programme externe pour lire la phrase secrète au lieu d’avoir à l’entrer manuellement au démarrage de WeeChat.
Par exemple avec password-store (command `pass`) :

    /set sec.crypt.passphrase_command "/usr/bin/pass show weechat/passphrase"

Le programme peut vous demander de déverrouiller votre clé GPG ou d’entrer une autre phrase secrète. WeeChat attendra la fin de la commande pour lire la phrase secrète sur la sortie standard (elle doit être sur la première ligne et sans caractère supplémentaire).
Si la sortie ne contient pas de phrase secrète ou si celle-ci est erronée, WeeChat vous demandera alors de la saisir.

##### Chiffrement

Le chiffrement des données se fait en 3 étapes :

1. Dériver une clé de la phrase secrète (avec du salage en option).

2. Calculer la somme de contrôle des données à chiffrer.

3. Chiffrer la somme de contrôle + les données (la sortie est : sel + somme de contrôle et données chiffrées).

Note | Le mode de chiffrement par bloc est CFB.

Le résultat est stocké sous forme d’une chaîne hexadécimale dans le fichier sec.conf, par exemple :

    [data]
    __passphrase__ = on
    libera = "53B1C86FCDA28FC122A95B0456ABD79B5AB74654F21C3D099A6CCA8173239EEA59533A1D83011251F96778AC3F5166A394"

##### Déchiffrement

Le déchiffrement des données se fait en 3 étapes :

1. Dériver une clé en utilisant le sel et la phrase secrète.

2. Déchiffrer la somme de contrôle et les données.

3. Vérifier que la somme de contrôle déchiffrée correspond à la somme de contrôle des données.

#### Gérer les données sécurisées

Pour ajouter une donnée sécurisée, utilisez la commande `/secure set`, par exemple un mot de passe pour le serveur IRC libera :

    /secure set libera motdepasse

Pour plus de confort, les données sécurisées peuvent être affichées dans un tampon dédié (touche `Alt`+`v` sur le tampon pour voir les valeurs), faites simplement :

    /secure

Les données sécurisées peuvent être utilisées dans quelques options qui peuvent contenir des données sensibles comme un mot de passe, en utilisant ce format : "${sec.data.xxx}" où "xxx" est le nom de la donnée sécurisée (utilisé dans la commande `/secure set xxx …​`).
Pour une liste complète des options supportées, voir la commande /secure.

Pour utiliser le mot de passe libera, par exemple avec l’authentification SASL :

    /set irc.server.libera.sasl_password "${sec.data.libera}"

### 7.11. Alias de commandes

L’extension Alias permet de définir des alias pour des commandes (WeeChat ou d’autres extensions).

Des alias sont créés par défaut, avec le nom en lettres majuscules (pour les différencier des commandes standard) ; les commandes ne sont pas sensibles à la casse dans WeeChat, donc par exemple `/close` lance l’alias `/CLOSE`.

Liste des alias par défaut :

Alias | Command | Completion
--- | --- | ---
`/aaway` | `/allserv /away` | -
`/anick` | `/allserv /nick` | -
`/beep` | `/print -beep` | -
`/bye` | `/quit` | -
`/c` | `/buffer clear` | -
`/cl` | `/buffer clear` | -
`/close` | `/buffer close` | -
`/chat` | `/dcc chat` | -
`/exit` | `/quit` | -
`/ig` | `/ignore` | -
`/j` | `/join` | -
`/k` | `/kick` | -
`/kb` | `/kickban` | -
`/leave` | `/part` | -
`/m` | `/msg` | -
`/mub` | `/unban *` | -
`/msgbuf` | `/command -buffer $1 * /input send $2-` | %(buffers_plugins_names)
`/n` | `/names` | -
`/q` | `/query` | -
`/redraw` | `/window refresh` | -
`/say` | `/msg *` | -
`/signoff` | `/quit` | -
`/t` | `/topic` | -
`/ub` | `/unban` | -
`/umode` | `/mode $nick` | -
`/v` | `/command core version` | -
`/w` | `/who` | -
`/wc` | `/window close` | -
`/wi` | `/whois` | -
`/wii` | `/whois $1 $1` | -
`/wm` | `/window merge` | -
`/ww` | `/whowas` | -

#### Commandes

- `alias`: list, add or remove command aliases

    /alias  list [<name>]
            add|addreplace <name> [<command>[;<command>...]]
            addcompletion|addreplacecompletion <completion> <name> [<command>[;<command>...]]
            del <name>|<mask>...
            rename <name> <new_name>
            missing

                    list: list aliases (without argument, this list is displayed)
                     add: add an alias
              addreplace: add or replace an existing alias
           addcompletion: add an alias with a custom completion
    addreplacecompletion: add or replace an existing alias with a custom completion
                    name: name of alias
              completion: completion for alias: by default completion is done with target command (you can use "%%command" to use the completion of an existing command)
                 command: command name with arguments (many commands can be separated by semicolons)
                     del: delete aliases
                    mask: name where wildcard "*" is allowed
                  rename: rename an alias
                 missing: add missing aliases (using default aliases)

    In command, special variables are replaced:
      $n: argument "n" (between 1 and 9)
      $-m: arguments from 1 to "m"
      $n-: arguments from "n" to last
      $n-m: arguments from "n" to "m"
      $*: all arguments
      $&: all arguments, with " replaced by \"
      $~: last argument
      $var: where "var" is a local variable of buffer (see /buffer listvar), examples: $nick, $channel, $server, $plugin, $name

    Examples:
      /alias add split /window splith
      /alias add hello /allchan -exclude=#weechat hello
      /alias rename hello Hello
      /alias addcompletion %%sajoin forcejoin /quote forcejoin

#### Options

Sections dans le fichier alias.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`cmd` | `/alias /set alias.cmd.*` | Commandes pour les alias.
`completion` | `/alias /set alias.completion.*` | Complétions pour les alias.

### 7.12. Commandes et options

#### Commandes WeeChat

- `allbuf`: execute a command on all buffers

    /allbuf  <command>

    command: command to execute (or text to send to buffer if command does not start with "/")

    Example:
      set read marker on all buffers:
        /allbuf /buffer set unread

- `away`: set or remove away status

    /away  [-all] [<message>]

       -all: set or remove away status on all connected servers
    message: message for away (if no message is given, away status is removed)

- `bar`: manage bars

    /bar  list|listfull|listitems
          add|addreplace <name> <type>[,<conditions>] <position> <size> <separator> <item1>[,<item2>...]
          default [input|title|status|nicklist]
          rename <name> <new_name>
          del <name>|<mask>...
          set <name> <option> <value>
          hide|show|toggle <name>
          scroll <name> <window> <scroll_value>

            list: list all bars
        listfull: list all bars (verbose)
       listitems: list all bar items
             add: add a new bar
      addreplace: add or replace an existing bar
            name: name of bar (must be unique)
            type: type of bar:
                  root: outside windows
                  window: inside windows, with optional conditions (see below)
      conditions: the conditions to display the bar (without conditions, the bar is always displayed):
                  active: on active window
                  inactive: on inactive windows
                  nicklist: on windows with nicklist
                  other condition: see /help weechat.bar.xxx.conditions and /help eval
        position: bottom, top, left or right
            size: size of bar (in chars)
       separator: 1 for using separator (line), 0 or nothing means no separator
       item1,...: items for this bar (items can be separated by comma (space between items) or "+" (glued items))
         default: create a default bar (all default bars if no bar name is given)
          rename: rename a bar
             del: delete bars
            mask: name where wildcard "*" is allowed
             set: set a value for a bar property
          option: option to change (for options list, look at /set weechat.bar.<barname>.*)
           value: new value for option
            hide: hide a bar
            show: show an hidden bar
          toggle: hide/show a bar
          scroll: scroll bar
          window: window number ("*" for current window or for root bars)
    scroll_value: value for scroll: "x" or "y" (optional), followed by "+", "-", "b" (beginning) or "e" (end), value (for +/-), and optional "%" (to scroll by % of width/height, otherwise value is number of chars)

    Examples:
      create a bar with time, buffer number + name, and completion:
        /bar add mybar root bottom 1 0 [time],buffer_number+:+buffer_name,completion
      scroll nicklist 10 lines down on current buffer:
        /bar scroll nicklist * y+10
      scroll to end of nicklist on current buffer:
        /bar scroll nicklist * ye

- `buffer`: manage buffers

    /buffer  list
             add [-free] [-switch] <name>
             clear [<id>|<number>|<name>|-merged|-all [<id>|<number>|<name>...]]
             move <number>|-|+
             swap <id1>|<number1>|<name1> [<id2>|<number2>|<name2>]
             cycle <id>|<number>|<name>...
             merge <id>|<number>|<name>
             unmerge [<number>|-all]
             hide [<id>|<number>|<name>|-all [<id>|<number>|<name>...]]
             unhide [<id>|<number>|<name>|-all [<id>|<number>|<name>...]]
             switch [-previous]
             zoom
             renumber [<number1> [<number2> [<start>]]]
             close [<n1>[-<n2>]|<name>...]
             notify [<level>]
             listvar [<id>|<number>|<name>]
             setvar <name> [<value>]
             delvar <name>
             set <property> [<value>]
             setauto <property> [<value>]
             get <property>
             jump smart|last_displayed|prev_visited|next_visited
             <id>|<number>|-|+|<name>

        list: list buffers (without argument, this list is displayed)
         add: add a new buffer (it can be closed with "/buffer close" or input "q")
       clear: clear buffer content (number for a buffer, "-merged" for merged buffers, "-all" for all buffers, or nothing for current buffer)
        move: move buffer in the list (may be relative, for example -1); "-" = move to first buffer number, "+" = move to last buffer number + 1
        swap: swap two buffers (swap with current buffer if only one number/name given)
       cycle: jump loop between a list of buffers
       merge: merge current buffer to another buffer (chat area will be mix of both buffers); by default ctrl-x switches between merged buffers
     unmerge: unmerge buffer from other buffers which have same number
        hide: hide the buffer
      unhide: unhide the buffer
      switch: switch to next merged buffer (or to previous buffer with "-previous")
        zoom: zoom on merged buffer
    renumber: renumber buffers (works only if option weechat.look.buffer_auto_renumber is off)
       close: close buffer (number/range or name is optional)
      notify: display or set notify level for current buffer: this level determines whether buffer will be added to hotlist or not:
              none: never
              highlight: for highlights only
              message: for messages from users + highlights
              all: for all messages
              reset: reset to default value (all)
     listvar: display local variables in a buffer
      setvar: set a local variable in the current buffer
      delvar: delete a local variable from the current buffer
         set: set a property in the current buffer
     setauto: like "set" and also define option "weechat.buffer.<name>.<property>" so that the property is saved in configuration and applied each time this buffer is opened
         get: display a property of current buffer
        jump: jump to another buffer:
              smart: next buffer with activity
              last_displayed: last buffer displayed (before last jump to a buffer)
              prev_visited: previously visited buffer
              next_visited: jump to next visited buffer
          id: jump to buffer by id
      number: jump to buffer by number, possible prefix:
              "+": relative jump, add number to current
              "-": relative jump, sub number to current
              "*": jump to number, using option "weechat.look.jump_current_to_previous_buffer"
           -: jump to first buffer number
           +: jump to last buffer number
        name: jump to buffer by (partial) name; if the name starts with "(?i)", the search is case-insensitive (for example "(?i)upper" will find buffer "irc.libera.#UPPERCASE")

    Examples:
      /buffer move 5
      /buffer swap 1 3
      /buffer swap #weechat
      /buffer cycle #chan1 #chan2 #chan3
      /buffer merge 1
      /buffer merge #weechat
      /buffer close 5-7
      /buffer #weechat
      /buffer +1
      /buffer +

- `color`: define color aliases and display palette of colors

    /color  alias <color> <name>
            unalias <color>
            reset
            term2rgb <color>
            rgb2term <rgb> [<limit>]
            -o

       alias: add an alias for a color
     unalias: delete an alias
       color: color number (greater than or equal to 0, max depends on terminal, commonly 63 or 255)
        name: alias name for color (for example: "orange")
       reset: reset all color pairs (required when no more color pairs are available if automatic reset is disabled, see option "weechat.look.color_pairs_auto_reset")
    term2rgb: convert a terminal color (0-255) to RGB color
    rgb2term: convert a RGB color to terminal color (0-255)
       limit: number of colors to use in terminal table (starting from 0); default is 256
          -o: send terminal/colors info to current buffer as input

    Without argument, this command displays colors in a new buffer.

    Examples:
      /color alias 214 orange
      /color unalias 214

- `command`: launch explicit WeeChat or plugin command

    /command  [-buffer <name>] <plugin> <command>
              -s <command>[;<command>...]

    -buffer: execute the command on this buffer
     plugin: execute the command from this plugin; "core" for a WeeChat command, "*" for automatic plugin (it depends on the buffer where the command is executed)
    command: command to execute (a "/" is automatically added if not found at beginning of command)
         -s: execute one or multiple commands separated by semicolons (the semicolon can be escaped with "\;")

- `cursor`: free movement of cursor on screen to execute actions on specific areas of screen

    /cursor  go chat|<bar> [top_left|top_right|bottom_left|bottom_right]
             go <x>,<y>
             move up|down|left|right|top_left|top_right|bottom_left|bottom_right|edge_top|edge_bottom|edge_left|edge_right|area_up|area_down|area_left|area_right
             stop

      go: move cursor to chat area, a bar (using bar name) or coordinates "x,y"
    move: move cursor with direction
    stop: stop cursor mode

    Without argument, this command toggles cursor mode.

    When mouse is enabled (see /help mouse), by default a middle click will start cursor mode at this point.

    See chapter on key bindings in User's guide for a list of keys that can be used in cursor mode.

    Examples:
      /cursor go chat bottom_left
      /cursor go nicklist
      /cursor go 10,5

- `debug`: debug functions

    /debug  list
            set <plugin> <level>
            dump [<plugin>]
            hooks [<plugin_mask> [<hook_type>...]]
            buffer|certs|color|dirs|infolists|key|libs|memory|tags|term|url|windows
            callbacks <duration>[<unit>]
            mouse|cursor [verbose]
            hdata [free]
            time <command>
            unicode <string>
            whitespace

           list: list plugins with debug levels
            set: set debug level for plugin
         plugin: name of plugin ("core" for WeeChat core)
          level: debug level for plugin (0 = disable debug)
           dump: save memory dump in WeeChat log file (same dump is written when WeeChat crashes)
          hooks: display infos about hooks (with a plugin: display detailed info about hooks created by the plugin)
    plugin_mask: plugin mask, "*" for all plugins
      hook_type: hook type
         buffer: dump buffer content with hexadecimal values in WeeChat log file
      callbacks: write hook and bar item callbacks that took more than "duration" in the WeeChat log file (0 = disable), where optional unit is one of:
                 us: microseconds (default)
                 ms: milliseconds
                 s: seconds
                 m: minutes
                 h: hours
          certs: display number of loaded trusted certificate authorities
          color: display infos about current color pairs
         cursor: toggle debug for cursor mode
           dirs: display directories
          hdata: display infos about hdata (with free: remove all hdata in memory)
      infolists: display infos about infolists
            key: enable keyboard and mouse debug: display raw codes, expanded key name and associated command ("q" to quit this mode)
           libs: display infos about external libraries used
         memory: display infos about memory usage
          mouse: toggle debug for mouse
           tags: display tags for lines
           term: display infos about terminal
            url: toggle debug for calls to hook_url (display output hashtable)
        windows: display windows tree
           time: measure time to execute a command or to send text to the current buffer
        unicode: display information about string and unicode chars (evaluated, see /help eval)
     whitespace: toggle whitespace mode: make spaces and tabulations visible in buffers and bars (see options weechat.look.whitespace_char and weechat.look.tab_whitespace_char)

    Examples:
      /debug set irc 1
      /debug mouse verbose
      /debug time /filter toggle
      /debug hooks * process connect url
      /debug unicode ${chars:${\u26C0}-${\u26CF}}

- `eval`: evaluate expression

    /eval  [-n|-s] [-d] <expression>
           [-n] [-d [-d]] -c <expression1> <operator> <expression2>

            -n: display result without sending it to buffer (debug mode)
            -s: split expression before evaluating it (many commands can be separated by semicolons)
            -d: display debug output after evaluation (with two -d: more verbose debug)
            -c: evaluate as condition: use operators and parentheses, return a boolean value ("0" or "1")
    expression: expression to evaluate, variables with format ${variable} are replaced (see below)
      operator: a logical or comparison operator (see below)

    An expression is considered as "true" if it is not NULL, not empty, and different from "0".
    The comparison is made using floating point numbers if the two expressions are valid numbers, with one of the following formats: integer (examples: 5, -7), floating point number (examples: 5.2, -7.5, 2.83e-2), hexadecimal number (examples: 0xA3, -0xA3).
    To force a string comparison, you can add double quotes around each expression, for example: 50 > 100 == 0 and "50" > "100" == 1

    Some variables are replaced in expression, using the format ${variable}, which can be, by order of priority:
      - ${raw_hl:string}: the string itself without evaluation but with syntax highlighting
      - ${raw:string}: the string itself without evaluation
      - ${hl:string}: the string with syntax highlighting
      - ${name}: the user-defined variable
      - ${weechat_config_dir}: WeeChat config directory
      - ${weechat_data_dir}: WeeChat data directory
      - ${weechat_state_dir}: WeeChat state directory
      - ${weechat_cache_dir}: WeeChat cache directory
      - ${weechat_runtime_dir}: WeeChat runtime directory
      - ${eval:string}: the evaluated string
      - ${eval_cond:string}: the evaluated condition
      - ${esc:string} or ${\string}: the string with escaped chars
      - ${chars:range}: the string with a range of chars, "range" is one of: "digit", "xdigit", "lower", "upper", "alpha", "alnum" or "c1-c2" ("c1" and "c2" are code points with c1 ≤ c2)
      - ${lower:string}: the string converted to lower case
      - ${upper:string}: the string converted to upper case
      - ${hide:char,string}: the string with hidden chars
      - ${cut:max,suffix,string}: the string with max chars (excluding the suffix)
      - ${cut:+max,suffix,string}: the string with max chars (including the suffix)
      - ${cutscr:max,suffix,string}: the string with max chars displayed on screen (excluding the suffix)
      - ${cutscr:+max,suffix,string}: the string with max chars displayed on screen (including the suffix)
      - ${rev:string}: the reversed string
      - ${revscr:string}: the reversed string for display (color codes are not reversed)
      - ${repeat:count,string}: the repeated string
      - ${length:string}: the length of the string (number of UTF-8 chars)
      - ${lengthscr:string}: the length of the string on screen (sum of the width of each UTF-8 char displayed on screen, colors codes are ignored)
      - ${split:N,separators,flags,string}: Nth item of the split string (N is an integer ≥ 1 or ≤ -1, if negative, counts from the last item)
      - ${split:random,separators,flags,string}: random item of the split string
      - ${split:count,separators,flags,string}: number of items of the split string
      - ${split_shell:N,string}: Nth item of the split shell arguments (N is an integer ≥ 1 or ≤ -1, if negative, counts from the last item)
      - ${split_shell:random,string}: random item of the split shell arguments
      - ${split_shell:count,string}: number of items of the split shell arguments
      - ${color:name}: the color (see "Plugin API reference", function "color")
      - ${modifier:name,data,string}: the modifier
      - ${info:name,arguments}: the info (arguments are optional)
      - ${base_encode:base,string}: the string encoded to base: 16, 32, 64 or 64url
      - ${base_decode:base,string}: the string decoded from base: 16, 32, 64 or 64url
      - ${date} or ${date:format}: current date/time
      - ${env:NAME}: the environment variable
      - ${if:condition?value_if_true:value_if_false}: the result of ternary operator
      - ${calc:expression}: the result of the expression with parentheses and operators (+, -, *, /, //, %, **)
      - ${random:min,max}: a random integer number between "min" and "max" (inclusive)
      - ${translate:string}: the translated string
      - ${define:name,value}: declaration of a user variable (return an empty string)
      - ${hdata_count:name[list]}: number of items in this hdata with list
      - ${hdata_count:name[ptr]}: number of items in this hdata with pointer
      - ${sec.data.xxx}: the value of the secured data "xxx"
      - ${file.section.option}: the value of the config option
      - ${name}: the local variable in buffer
      - the hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer.

    Format for hdata can be one of following:
      - ${hdata.var1.var2...}: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed)
      - ${hdata[list].var1.var2...}: start with a hdata using a list/pointer/pointer name, for example:
        - ${buffer[gui_buffers].full_name}: full name of first buffer in linked list of buffers
        - ${plugin[weechat_plugins].name}: name of first plugin in linked list of plugins
      - ${hdata[pointer].var1.var2...}: start with a hdata using a pointer, for example:
        - ${buffer[0x1234abcd].full_name}: full name of the buffer with this pointer (can be used in triggers)
        - ${buffer[my_pointer].full_name}: full name of the buffer with this pointer name (can be used in triggers)
      - ${hdata[pointer].var1.method()}: when var1 is a hashtable, methods can be called: "keys()", "values()", "keys_sorted()", "keys_values()" and "keys_values_sorted()"
    For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get".

    Logical operators (by order of priority):
      &&   boolean "and"
      ||   boolean "or"

    Comparison operators (by order of priority):
      =~   is matching POSIX extended regex
      !~   is NOT matching POSIX extended regex
      ==*  is matching mask, case-sensitive (wildcard "*" is allowed)
      !!*  is NOT matching mask, case-sensitive (wildcard "*" is allowed)
      =*   is matching mask, case-insensitive (wildcard "*" is allowed)
      !*   is NOT matching mask, case-insensitive (wildcard "*" is allowed)
      ==-  is included, case-sensitive
      !!-  is NOT included, case-sensitive
      =-   is included, case-insensitive
      !-   is NOT included, case-insensitive
      ==   equal
      !=   not equal
      <=   less or equal
      <    less
      >=   greater or equal
      >    greater

    Examples (simple strings):
      /eval -n ${raw:${info:version}}                  ==> ${info:version}
      /eval -n ${eval_cond:${window.win_width}>100}    ==> 1
      /eval -n ${info:version}                         ==> 4.6.3
      /eval -n ${env:HOME}                             ==> /home/user
      /eval -n ${weechat.look.scroll_amount}           ==> 3
      /eval -n ${sec.data.password}                    ==> secret
      /eval -n ${window}                               ==> 0x2549aa0
      /eval -n ${window.buffer}                        ==> 0x2549320
      /eval -n ${window.buffer.full_name}              ==> core.weechat
      /eval -n ${window.buffer.number}                 ==> 1
      /eval -n ${buffer.local_variables.keys_values()} ==> plugin:core,name:weechat
      /eval -n ${buffer.local_variables.plugin}        ==> core
      /eval -n ${hdata_count:buffer[gui_buffers]}      ==> 15
      /eval -n ${\t}                                   ==> <tab>
      /eval -n ${chars:digit}                          ==> 0123456789
      /eval -n ${chars:J-T}                            ==> JKLMNOPQRST
      /eval -n ${lower:TEST}                           ==> test
      /eval -n ${upper:test}                           ==> TEST
      /eval -n ${hide:-,${relay.network.password}}     ==> --------
      /eval -n ${cut:3,+,test}                         ==> tes+
      /eval -n ${cut:+3,+,test}                        ==> te+
      /eval -n ${date:%H:%M:%S}                        ==> 07:46:40
      /eval -n ${if:${info:term_width}>80?big:small}   ==> big
      /eval -n ${rev:Hello}                            ==> olleH
      /eval -n ${repeat:5,-}                           ==> -----
      /eval -n ${length:test}                          ==> 4
      /eval -n ${split:1,,,abc,def,ghi}                ==> abc
      /eval -n ${split:-1,,,abc,def,ghi}               ==> ghi
      /eval -n ${split:count,,,abc,def,ghi}            ==> 3
      /eval -n ${split:random,,,abc,def,ghi}           ==> def
      /eval -n ${split_shell:1,"arg 1" arg2}           ==> arg 1
      /eval -n ${split_shell:-1,"arg 1" arg2}          ==> arg2
      /eval -n ${split_shell:count,"arg 1" arg2}       ==> 2
      /eval -n ${split_shell:random,"arg 1" arg2}      ==> arg2
      /eval -n ${calc:(5+2)*3}                         ==> 21
      /eval -n ${random:0,10}                          ==> 3
      /eval -n ${base_encode:64,test}                  ==> dGVzdA==
      /eval -n ${base_decode:64,dGVzdA==}              ==> test
      /eval -n ${define:len,${calc:5+3}}${len}x${len}  ==> 8x8

    Examples (conditions):
      /eval -n -c ${window.buffer.number} > 2 ==> 0
      /eval -n -c ${window.win_width} > 100   ==> 1
      /eval -n -c (8 > 12) || (5 > 2)         ==> 1
      /eval -n -c (8 > 12) && (5 > 2)         ==> 0
      /eval -n -c abcd =~ ^ABC                ==> 1
      /eval -n -c abcd =~ (?-i)^ABC           ==> 0
      /eval -n -c abcd =~ (?-i)^abc           ==> 1
      /eval -n -c abcd !~ abc                 ==> 0
      /eval -n -c abcd =* a*d                 ==> 1
      /eval -n -c abcd =- bc                  ==> 1

- `filter`: filter messages in buffers, to hide/show them according to tags or regex

    /filter  list
             enable|disable|toggle [<name>|<mask>|@...]
             add|addreplace <name> <buffer>[,<buffer>...] <tags> <regex>
             rename <name> <new_name>
             recreate <name>
             del <name>|<mask>...

          list: list all filters
        enable: enable filters (filters are enabled by default)
       disable: disable filters
        toggle: toggle filters
          mask: name where wildcard "*" is allowed ("@" = enable/disable all filters in current buffer)
           add: add a filter
    addreplace: add or replace an existing filter
          name: filter name
        rename: rename a filter
      recreate: set input with the command used to edit the filter
           del: delete filters
        buffer: comma separated list of buffers where filter is active:
                - this is full name including plugin (example: "irc.libera.#weechat" or "irc.server.libera")
                - "*" means all buffers
                - a name starting with "!" is excluded
                - wildcard "*" is allowed
          tags: comma separated list of tags (for example "irc_join,irc_part,irc_quit"):
                - logical "and": "+" between tags (for example: "nick_toto+irc_action")
                - wildcard "*" is allowed
                - if tag starts with "!", then it is excluded and must NOT be in message
         regex: POSIX extended regular expression to search in line:
                - use "\t" to separate prefix from message, special chars like "|" must be escaped: "\|"
                - if regex starts with "!", then matching result is reversed (use "\!" to start with "!")
                - two regular expressions are created: one for prefix and one for message
                - regex are case-insensitive, they can start by "(?-i)" to become case-sensitive

    The default key alt+"=" toggles filtering on/off globally and alt+"-" toggles filtering on/off in the current buffer.

    Tags most commonly used: no_filter, no_highlight, no_log, log0..log9 (log level), notify_none, notify_message, notify_private, notify_highlight, self_msg, nick_xxx (xxx is nick in message), prefix_nick_ccc (ccc is color of nick), host_xxx (xxx is username + host in message), irc_xxx (xxx is command name or number, see /server raw or /debug tags), irc_numeric, irc_error, irc_action, irc_ctcp, irc_ctcp_reply, irc_smart_filter, away_info.
    To see tags for lines in buffers: /debug tags

    Examples:
      use IRC smart filter on all buffers:
        /filter add irc_smart * irc_smart_filter *
      use IRC smart filter on all buffers except those with "#weechat" in name:
        /filter add irc_smart *,!*#weechat* irc_smart_filter *
      filter all IRC join/part/quit messages:
        /filter add joinquit * irc_join,irc_part,irc_quit *
      filter nicks displayed when joining channels or with /names:
        /filter add nicks * irc_366 *
      filter nick "toto" on IRC channel #weechat:
        /filter add toto irc.libera.#weechat nick_toto *
      filter IRC join/action messages from nick "toto":
        /filter add toto * nick_toto+irc_join,nick_toto+irc_action *
      filter lines containing "weechat sucks" on IRC channel #weechat:
        /filter add sucks irc.libera.#weechat * weechat sucks
      filter lines that are strictly equal to "WeeChat sucks" on all buffers:
        /filter add sucks2 * * (?-i)^WeeChat sucks$

- `help`: display help about commands and options

    /help  -list|-listfull [<plugin>...]]
           <command>
           <option>

        -list: list commands, by plugin (without argument, this list is displayed)
    -listfull: list commands with description, by plugin
       plugin: list commands for this plugin
      command: a command name
       option: an option name (use /set to see list)

- `history`: show buffer command history

    /history  clear
              <value>

    clear: clear history
    value: number of history entries to show

- `hotlist`: manage hotlist

    /hotlist  add [low|message|private|highlight]
              clear [<level>]
              remove
              restore [-all]

        add: add current buffer in hotlist (default level: "low", conditions defined in option weechat.look.hotlist_add_conditions are NOT checked)
      clear: clear hotlist
      level: "lowest" to clear only lowest level in hotlist, highest" to clear only highest level in hotlist, or level mask: integer which is a combination of 1=join/part, 2=message, 4=private, 8=highlight
     remove: remove current buffer from hotlist
    restore: restore latest hotlist removed in the current buffer (or all buffers with "-all")

- `input`: functions for command line

    /input  <action> [<arguments>]

       action: the action, one of:
               return: simulate key "enter"
               split_return: split input on newlines then simulate key "enter" for each line
               complete_next: complete word with next completion
               complete_previous: complete word with previous completion
               search_text_here: search text in buffer at current position
               search_text: search text in buffer
               search_history: search text in command line history
               search_switch_case: switch exact case for search
               search_switch_regex: switch search type: string/regular expression
               search_switch_where: switch search in messages/prefixes
               search_previous: search previous line
               search_next: search next line
               search_stop_here: stop search at current position
               search_stop: stop search
               delete_previous_char: delete previous char
               delete_next_char: delete next char
               delete_previous_word: delete previous word
               delete_previous_word_whitespace: delete previous word (until whitespace)
               delete_next_word: delete next word
               delete_beginning_of_line: delete from beginning of line until cursor
               delete_beginning_of_input: delete from beginning of input until cursor
               delete_end_of_line: delete from cursor until end of line
               delete_end_of_input: delete from cursor until end of input
               delete_line: delete current line
               delete_input: delete entire input
               clipboard_paste: paste from the internal clipboard
               transpose_chars: transpose two chars
               undo: undo last command line action
               redo: redo last command line action
               move_beginning_of_line: move cursor to beginning of line
               move_beginning_of_input: move cursor to beginning of input
               move_end_of_line: move cursor to end of line
               move_end_of_input: move cursor to end of input
               move_previous_char: move cursor to previous char
               move_next_char: move cursor to next char
               move_previous_word: move cursor to previous word
               move_next_word: move cursor to next word
               move_previous_line: move cursor to previous line
               move_next_line: move cursor to next line
               history_previous: recall previous command in current buffer history
               history_next: recall next command in current buffer history
               history_global_previous: recall previous command in global history
               history_global_next: recall next command in global history
               history_use_get_next: send the current history entry (found with search or recalled with "up"key) and insert the next history entry in the command line without sending it
               grab_key: grab a key (optional argument: delay for end of grab, default is 500 milliseconds)
               grab_key_command: grab a key with its associated command (optional argument: delay for end of grab, default is 500 milliseconds)
               grab_mouse: grab mouse event code
               grab_mouse_area: grab mouse event code with area
               insert: insert text in command line (escaped chars are allowed, see /help print)
               send: send text to the buffer
    arguments: optional arguments for the action

    This command is used by key bindings or plugins.

- `item`: manage custom bar items

    /item  list
           add|addreplace <name> "<conditions>" "<content>"
           rename <name> <new_name>
           refresh <name>|<mask>...
           recreate <name>
           del <name>|<mask>...

          list: list all custom bar items
           add: add a custom bar item
    addreplace: add or replace an existing custom bar item
          name: custom bar item name
          mask: name where wildcard "*" is allowed
    conditions: evaluated conditions to display the bar item (for example to display the bar item only in specific buffers)
       content: content (evaluated, see /help eval)
        rename: rename a custom bar item
       refresh: update content of item in all bars where the item is displayed; any item can be refreshed: default/plugin/custom bar items
      recreate: set input with the command used to edit the custom bar item
           del: delete custom bar items

    Examples:
      add item with terminal size, displayed only in buffers with number = 1:
        /item add terminfo "${buffer.number} == 1" "term:${info:term_width}x${info:term_height}"
      add item with buffer info:
        /item add bufinfo "" "${buffer.number}:${buffer.name}${if:${buffer.zoomed}?(Z)}"
      add item with date/time using format "Dec 25, 12:34 +0100", refreshed every minute:
        /item add datetime "" "${date:%b %d, %H:%M %z}"
        /trigger add datetime_refresh timer "60000;60" "" "" "/item refresh datetime"
      add item with number of lines in buffer (displayed/total), refreshed each time a new line is displayed or if filtered lines have changed:
        /item add lines_count "" "${calc:${buffer.lines.lines_count}-${buffer.lines.lines_hidden}}/${buffer.lines.lines_count} lines"
        /trigger add lines_count_refresh_print print "" "" "" "/item refresh lines_count"
        /trigger add lines_count_refresh_signal signal "window_switch;buffer_switch;buffer_lines_hidden;filters_*" "" "" "/item refresh lines_count"
      force refresh of item "lines_count":
        /item refresh lines_count
      recreate item "lines_count" with different conditions or content:
        /item recreate lines_count
      delete item "lines_count":
        /item del lines_count

- `key`: bind/unbind keys

    /key  [list|listdefault|listdiff] [<context>]
          bind <key> [<command> [<args>]]
          bindctxt <context> <key> [<command> [<args>]]
          unbind <key>
          unbindctxt <context> <key>
          reset <key>
          resetctxt <context> <key>
          resetall -yes [<context>]
          missing [<context>]
          legacy <key>...

           list: list all current keys
    listdefault: list default keys
       listdiff: list differences between current and default keys (keys added, redefined or deleted)
        context: name of context ("default" or "search")
           bind: bind a command to a key or display command bound to key (for context "default")
       bindctxt: bind a command to a key or display command bound to key, for given context
        command: command (many commands can be separated by semicolons); quotes can be used to preserve spaces at the beginning/end of command
         unbind: remove a key binding (for context "default")
     unbindctxt: remove a key binding for given context
          reset: reset a key to default binding (for context "default")
      resetctxt: reset a key to default binding, for given context
       resetall: restore bindings to the default values and delete ALL personal bindings (use carefully!)
        missing: add missing keys (using default bindings), useful after installing new WeeChat version
         legacy: display new name for legacy keys

    When binding a command to a key, it is recommended to use key alt+k (or Esc then k), and then press the key to bind: this will insert key name in command line.

    For some keys you might need to use /debug key, this displays the raw key code that can be used (for example the key ctrl+backspace could be "ctrl-h" or "ctrl-?", depending on your terminal and other settings).

    Modifiers allowed (in this order when multiple are used):
      "meta-": alt key
      "ctrl-": control key
      "shift-": shift key, can only be used with key names below

    Key names allowed: f0 to f20, home, insert, delete, end, backspace, pgup, pgdn, up, down, right, left, tab, return, comma, space.

    Combo of keys must be separated by a comma.

    For context "mouse" (possible in context "cursor" too), key has format: "@area:key" or "@area1>area2:key" where area can be:
      *: any area on screen
      chat: chat area (any buffer)
      chat(xxx): chat area for buffer with name "xxx" (full name including plugin)
      bar(*): any bar
      bar(xxx): bar "xxx"
      item(*): any bar item
      item(xxx): bar item "xxx"
    Wildcard "*" is allowed in key to match many mouse events.
    A special value for command with format "hsignal:name" can be used for context mouse, this will send the hsignal "name" with the focus hashtable as argument.
    Another special value "-" can be used to disable key (it will be ignored when looking for keys).

    Examples:
      /key bind meta-r /buffer #weechat
      /key reset meta-r
      /key bind meta-v,f1 /help
      /key bindctxt search f12 /input search_stop
      /key bindctxt mouse @item(buffer_nicklist):button3 /msg nickserv info ${nick}

- `layout`: manage buffers/windows layouts

    /layout  store [<name>] [buffers|windows]
             apply [<name>] [buffers|windows]
             leave
             del [<name>] [buffers|windows]
             rename <name> <new_name>

      store: store current buffers/windows in a layout
      apply: apply stored layout
      leave: leave current layout (does not update any layout)
        del: delete buffers and/or windows in a stored layout (if neither "buffers" nor "windows" is given after the name, the layout is deleted)
     rename: rename a layout
       name: name for stored layout (default is "default")
    buffers: store/apply only buffers (order of buffers)
    windows: store/apply only windows (buffer displayed by each window)

    Without argument, this command displays stored layouts.

    The current layout can be saved on /quit command with the option "weechat.look.save_layout_on_exit".

    Note: the layout only remembers windows split and buffers numbers. It does not open buffers. That means for example you must still auto-join IRC channels to open the buffers, the saved layout only applies once the buffers are opened.

- `mouse`: mouse control

    /mouse  enable|disable|toggle [<delay>]

     enable: enable mouse
    disable: disable mouse
     toggle: toggle mouse
      delay: delay (in seconds) after which initial mouse state is restored (useful to temporarily disable mouse)

    The mouse state is saved in option "weechat.look.mouse".

    Examples:
      /mouse enable
      /mouse toggle 5

- `mute`: execute a command silently

    /mute  [-core|-current|-buffer <name>] <command>

       -core: no output on WeeChat core buffer
    -current: no output on current buffer
     -buffer: no output on specified buffer
        name: full buffer name (examples: "irc.server.libera", "irc.libera.#weechat")
     command: command to execute silently (a "/" is automatically added if not found at beginning of command)

    If no target is specified ("-core", "-current" or "-buffer"), then default is to mute all buffers.

    Examples:
      /mute save
      /mute -current msg * hi!
      /mute -buffer irc.libera.#weechat msg #weechat hi!

- `pipe`: redirect command output to a buffer, a file or a hsignal

    /pipe  [-buffer <name>|-file <filename>|-hsignal <name>] [-color strip|keep|ansi] [-concat <separator>] [-strip <chars>] [-skipempty] [-c] [-o] [-g] [-nl] <command>

       -buffer: display command output on this buffer
          name: full buffer name (examples: "core.weechat", "irc.server.libera", "irc.libera.#weechat")
         -file: write command output in this file
      -hsignal: send command output as hsignal; keys: "command", "output" (lines separated by separator) and "tags" (tags of each line separated by newline)
        -color: convert colors
            -o: send command output to the buffer as input; colors are stripped and commands are NOT executed (used only with -buffer)
       -concat: concatenate all lines displayed using a separator; chars can be escaped (example: \x20 for space)
        -strip: strip chars from lines (beginning/end); chars can be escaped (example: \x20 for space)
    -skipempty: skip empty lines when lines are concatenated
            -c: alias for "-concat \x20 -strip \x20 -skipempty"
           -nl: display messages in English during the command execution (do not use the current locale)
       command: command to execute (a "/" is automatically added if not found at beginning of command)

    If no target is specified ("-buffer", "-file" or "-hsignal"), then the command output is sent on the current buffer.

    Note: for commands that display messages in an asynchronous way (like /exec and many IRC commands), the output will not be caught by this command.
    For example "/pipe /whois nick" will NOT redirect the answer from IRC server to the current buffer.

    Examples:
      write info about external libraries in a file:
        /pipe -file /tmp/libs.txt /debug libs
      send output of "/debug libs" as a single line on current channel:
        /pipe -o -c /debug libs
      display info about all buffers on current buffer:
        /pipe /allbuf /eval /print ${buffer.full_name} -> ${buffer.number}. ${buffer.short_name} (${buffer})
      send list of filters on current channel, in English:
        /pipe -o -nl /filter

- `plugin`: list/load/unload plugins

    /plugin  list [-o|-ol|-i|-il|<name>]
             listfull [<name>]
             load <filename> [<arguments>]
             autoload [<arguments>]
             reload [<name>|* [<arguments>]]
             unload [<name>]

         list: list loaded plugins
           -o: send list of loaded plugins to buffer (string in English)
          -ol: send list of loaded plugins to buffer (translated string)
           -i: copy list of loaded plugins in command line (for sending to buffer) (string in English)
          -il: copy list of loaded plugins in command line (for sending to buffer) (translated string)
         name: a plugin name
     listfull: list loaded plugins (verbose)
         load: load a plugin
     filename: plugin (file) to load
    arguments: arguments given to plugin on load
     autoload: autoload plugins in system or user directory
       reload: reload a plugin (if no name given, unload all plugins, then autoload plugins)
       unload: unload a plugin (if no name given, unload all plugins)

    Without argument, this command lists loaded plugins.

- `print`: display text on a buffer

    /print  [-buffer <id>|<number>|<name>] [-newbuffer <name>] [-free] [-switch] [-core|-current] [-y <line>] [-escape] [-date <date>] [-tags <tags>] [-action|-error|-join|-network|-quit] [<text>]
            -stdout|-stderr [<text>]
            -beep

       -buffer: display text in this buffer (default: buffer where command is executed)
    -newbuffer: create a new buffer and display text in this buffer
         -free: create a buffer with free content (with -newbuffer only)
       -switch: switch to the buffer
         -core: alias of "-buffer core.weechat"
      -current: display text on current buffer
            -y: display on a custom line (for buffer with free content only)
          line: line number for buffer with free content (first line is 0, a negative number displays after last line: -1 = after last line, -2 = two lines after last line, etc.)
       -escape: interpret escaped chars (for example \a, \07, \x07)
         -date: message date, format can be:
                -n: "n" seconds before now
                +n: "n" seconds in the future
                n: "n" seconds since the Epoch (see man time)
                date and/or time (ISO 8601): see function "util_parse_time" in Plugin API reference (examples: "11:29:09", "2023-12-25T10:29:09.456789Z")
         -tags: comma-separated list of tags (see /help filter for a list of tags most commonly used)
          text: text to display (prefix and message must be separated by "\t", if text starts with "-", then add a "\" before)
       -stdout: display text on stdout (escaped chars are interpreted)
       -stderr: display text on stderr (escaped chars are interpreted)
         -beep: alias of "-stderr \a"

    The options -action ... -quit use the prefix defined in options "weechat.look.prefix_*".

    Following escaped chars are supported:
      \" \\ \a \b \e \f \n \r \t \v \0ooo \xhh \uhhhh \Uhhhhhhhh

    Examples:
      display a reminder on core buffer with a highlight:
        /print -core -tags notify_highlight Reminder: buy milk
      display an error on core buffer:
        /print -core -error Some error here
      display message on core buffer with prefix "abc":
        /print -core abc\tThe message
      display a message on channel #weechat:
        /print -buffer irc.libera.#weechat Message on #weechat
      display a snowman (U+2603):
        /print -escape \u2603
      send alert (BEL):
        /print -beep

- `proxy`: manage proxies

    /proxy  list
            add|addreplace <name> <type> <address> <port> [<username> [<password>]]
            del <name>|<mask>...
            set <name> <option> <value>

          list: list all proxies
           add: add a new proxy
    addreplace: add or replace an existing proxy
          name: name of proxy (must be unique)
          type: http, socks4 or socks5
       address: IP or hostname
          port: port number
      username: username (optional)
      password: password (optional)
           del: delete proxies
          mask: name where wildcard "*" is allowed
           set: set a value for a proxy property
        option: option to change (for options list, look at /set weechat.proxy.<proxyname>.*)
         value: new value for option

    Examples:
      add a http proxy, running on local host, port 8888:
        /proxy add local http 127.0.0.1 8888
      add a http proxy using IPv6 protocol only:
        /proxy add local http ::1 8888
        /proxy set local ipv6 force
      add a socks5 proxy with username/password:
        /proxy add myproxy socks5 sample.host.org 3128 myuser mypass
      delete a proxy:
        /proxy del myproxy

- `quit`: quit WeeChat

    /quit  [-yes] [<arguments>]

         -yes: required if option "weechat.look.confirm_quit" is enabled
    arguments: text sent with signal "quit" (for example irc plugin uses this text to send quit message to server)

    By default when quitting the configuration files are saved (see option "weechat.look.save_config_on_exit") and the current layout can be saved (see option "weechat.look.save_layout_on_exit").

- `reload`: reload configuration files from disk

    /reload  [<file>...]

    file: configuration file to reload (without extension ".conf")

    Without argument, all files (WeeChat and plugins) are reloaded.

- `repeat`: execute a command several times

    /repeat  [-interval <delay>[<unit>]] <count> <command>

      delay: delay between execution of commands (minimum: 1 millisecond)
       unit: optional, values are:
             us: microseconds
             ms: milliseconds
             s: seconds (default)
             m: minutes
             h: hours
      count: number of times to execute command
    command: command to execute (or text to send to buffer if command does not start with "/"), evaluated and the following variables are set each time the command is executed:
             ${buffer}: buffer pointer
             ${repeat_count}: number of times the command is executed
             ${repeat_index}: current index (from 1 to "count")
             ${repeat_index0}: current index (from 0 to "count" - 1)
             ${repeat_revindex}: current index from the end (from "count" to 1)
             ${repeat_revindex0}: current index from the end (from "count" - 1 to 0)
             ${repeat_first}: "1" for the first execution, "0" for the others
             ${repeat_last}: "1" for the last execution, "0" for the others

    Note: the command is executed on buffer where /repeat was executed (if the buffer does not exist anymore, the command is not executed).

    Examples:
      scroll 2 pages up:
        /repeat 2 /window page_up
      print a countdown, starting at 5:
        /repeat -interval 1 6 /print ${if:${repeat_last}?Boom!:${repeat_revindex0}}

- `reset`: reset config options

    /reset  <option>
            -mask <option>

    option: name of an option
     -mask: use a mask in option (wildcard "*" is allowed to mass-reset options, use carefully!)

    Examples:
      /reset weechat.look.item_time_format
      /reset -mask weechat.color.*

- `save`: save configuration files to disk

    /save  [<file>...]

    file: configuration file to save (without extension ".conf")

    Without argument, all files (WeeChat and plugins) are saved.

    By default all configuration files are saved to disk on /quit command (see option "weechat.look.save_config_on_exit").

- `secure`: manage secured data (passwords or private data encrypted in file sec.conf)

    /secure  passphrase <passphrase>|-delete
             decrypt <passphrase>|-discard
             set <name> <value>
             del <name>

    passphrase: change the passphrase (without passphrase, data is stored as plain text in file sec.conf)
       -delete: delete passphrase
       decrypt: decrypt data still encrypted (it happens only if passphrase was not given on startup)
      -discard: discard all data still encrypted
           set: add or change secured data
           del: delete secured data

    Without argument, this command displays secured data in a new buffer.

    Keys on secure buffer:
      alt+v  toggle values

    When a passphrase is used (data encrypted), it is asked by WeeChat on startup.
    It is possible to set environment variable "WEECHAT_PASSPHRASE" to prevent the prompt (this same variable is used by WeeChat on /upgrade), or to set option sec.crypt.passphrase_command to read the passphrase from the output of an external command like a password manager (see /help sec.crypt.passphrase_command).

    Secured data with format ${sec.data.xxx} can be used in:
      - command /eval
      - command line argument "--run-command"
      - options weechat.startup.command_{before|after}_plugins
      - other options that may contain a password or sensitive data (for example proxy, irc server and relay); see /help on the options to check if they are evaluated.

    Examples:
      set a passphrase:
        /secure passphrase this is my passphrase
      use program "pass" to read the passphrase on startup:
        /set sec.crypt.passphrase_command "/usr/bin/pass show weechat/passphrase"
      encrypt libera SASL password:
        /secure set libera mypassword
        /set irc.server.libera.sasl_password "${sec.data.libera}"
      encrypt oftc password for nickserv:
        /secure set oftc mypassword
        /set irc.server.oftc.command "/msg nickserv identify ${sec.data.oftc}"
      alias to ghost the nick "mynick":
        /alias add ghost /eval /msg -server libera nickserv ghost mynick ${sec.data.libera}

- `set`: set config options and environment variables

    /set  [<option> [<value>]]
          diff [<option>...]
          env [<variable> [<value>]]

    option: name of an option (wildcard "*" is allowed to list options, if no value is specified)
     value: new value for option, according to type:
            boolean: on, off or toggle
            integer: number, ++number or --number
            string: any string ("" for empty string)
            color: color name, ++number or --number
      diff: display only changed options
       env: display or set an environment variable ("" to unset a variable)

    Note: the value "null" (without quotes) can be used to remove option value (undefined value). This works only for some special plugin variables.

    Examples:
      /set *highlight*
      /set weechat.look.highlight "word"
      /set diff
      /set diff irc.*
      /set env LANG
      /set env LANG fr_FR.UTF-8
      /set env ABC ""

- `sys`: system actions

    /sys  get rlimit|rusage
          malloc_trim [<size>]
          suspend
          waitpid <number>

            get: display system info
         rlimit: display resource limits (see /help weechat.startup.sys_rlimit and "man getrlimit")
         rusage: display resource usage (see "man getrusage")
    malloc_trim: call function malloc_trim to release free memory from the heap
           size: amount of free space to leave untrimmed at the top of the heap (default is 0: only the minimum amount of memory is maintained at the top of the heap)
        suspend: suspend WeeChat and go back to the shell, by sending signal SIGTSTP to the WeeChat process
        waitpid: acknowledge the end of children processes (to prevent "zombie" processes)
         number: number of processes to clean

- `toggle`: toggle value of a config option

    /toggle  <option> [<value>...]

    option: name of an option
     value: possible values for the option (values are split like the shell command arguments: quotes can be used to preserve spaces at the beginning/end of values)

    Behavior:
      - only an option of type boolean or string can be toggled without a value:
        - boolean: toggle between on/off according to current value
        - string: toggle between empty string and default value (works only if empty string is allowed for the option)
      - with a single value given, toggle between this value and the default value of option
      - with multiple values given, toggle between these values: the value used is the one following the current value of option; if the current value of option is not in list, the first value in the list is used
      - the special value "null" can be given, but only as first value in the list and without quotes around.

    Examples:
      toggle display of time in chat area (without displaying the new value used):
        /mute /toggle weechat.look.buffer_time_format
      switch format of time in chat area (with seconds, without seconds, disabled):
        /toggle weechat.look.buffer_time_format "%H:%M:%S" "%H:%M" ""
      toggle autojoin of #weechat channel on libera server:
        /toggle irc.server.libera.autojoin null #weechat

- `unset`: unset/reset config options

    /unset  <option>
            -mask <option>

    option: name of an option
     -mask: use a mask in option (wildcard "*" is allowed to mass-reset options, use carefully!)

    According to option, it's reset (for standard options) or removed (for optional settings, like server values).

    Examples:
      /unset weechat.look.item_time_format
      /unset -mask weechat.color.*

- `upgrade`: save WeeChat session and reload the WeeChat binary without disconnecting from servers

    /upgrade  [-yes] [<path_to_binary>|-save|-quit]
              -o|-ol

              -yes: required if option "weechat.look.confirm_upgrade" is enabled
    path_to_binary: path to WeeChat binary (default is current binary)
            -dummy: do nothing (option used to prevent accidental completion with "-quit")
             -save: only save the session, neither quit nor reload WeeChat; the configuration files are not saved (if needed you can use /save before this command)
             -quit: close *ALL* connections, save session and quit WeeChat, which makes possible a delayed restoration (see below)
                -o: send number of upgrades and date of first/last start to current buffer as input (English string)
               -ol: send number of upgrades and date of first/last start to current buffer as input (translated string)

    This command upgrades and reloads a running WeeChat session. The new WeeChat binary must have been compiled or installed with a package manager before running this command.

    Note: TLS connections are lost during upgrade (except with -save), because the reload of TLS sessions is currently not possible with GnuTLS. There is automatic reconnection after upgrade.

    Important: use of option "-save" can be dangerous, it is recommended to use only /upgrade (or with "-quit") for a standard upgrade and a restart; the option "-save" can be used to save the session regularly and restore it in case of after abnormal exit (power outage, crash, etc.).

    Upgrade process has 4 steps:
      1. save session into files for core and plugins (buffers, history, ..)
      2. unload all plugins (configuration files (*.conf) are written on disk)
      3. save WeeChat configuration (weechat.conf)
      4. execute new WeeChat binary and reload session.

    With option "-quit", the process is:
      1. close *ALL* connections (irc, xfer, relay, ...)
      2. save session into files (*.upgrade)
      3. unload all plugins
      4. save WeeChat configuration
      5. quit WeeChat

    With option "-save", the process is:
      1. save session into files (*.upgrade) with a disconnected state for IRC servers and Relay clients (but no disconnection is made)

    With -quit or -save, you can restore the session later with this command: weechat --upgrade
    IMPORTANT: you must restore the session with exactly same configuration (files *.conf) and if possible the same WeeChat version (or a more recent one).
    It is possible to restore WeeChat session on another machine if you copy the content of WeeChat home directories (see /debug dirs).

- `uptime`: show WeeChat uptime

    /uptime  [-o|-ol]

     -o: send uptime to current buffer as input (English string)
    -ol: send uptime to current buffer as input (translated string)

- `version`: show WeeChat version and compilation date

    /version  [-o|-ol] [-v]

     -o: send version to current buffer as input (English string)
    -ol: send version to current buffer as input (translated string)
     -v: verbose mode: display information about upgrades of WeeChat with /upgrade

    The default alias /v can be used to execute this command on all buffers (otherwise the irc command /version is used on irc buffers).

- `wait`: schedule a command execution in future

    /wait  <number>[<unit>] <command>

     number: amount of time to wait (minimum: 1 millisecond)
       unit: optional, values are:
             us: microseconds
             ms: milliseconds
             s: seconds (default)
             m: minutes
             h: hours
    command: command to execute (or text to send to buffer if command does not start with "/")

    Note: the command is executed on buffer where /wait was executed (if the buffer does not exist anymore, the command is not executed).

    Examples:
      join channel #test in 10 seconds:
        /wait 10 /join #test
      set away in 15 minutes:
        /wait 15m /away -all I'm away
      say "hello" in 2 minutes:
        /wait 2m hello

- `window`: manage windows

    /window  list
             -1|+1|b#|up|down|left|right [-window <number>]
             <number>
             splith|splitv [-window <number>] [<pct>]
             resize [-window <number>] [h|v][+|-]<pct>
             balance
             merge [-window <number>] [all]
             close [-window <number>]
             page_up|page_down [-window <number>]
             refresh
             scroll [-window <number>] [+|-]<value>[s|m|h|d|M|y]
             scroll_horiz [-window <number>] [+|-]<value>[%]
             scroll_up|scroll_down|scroll_top|scroll_bottom|scroll_beyond_end|scroll_previous_highlight|scroll_next_highlight|scroll_unread [-window <number>]
             swap [-window <number>] [up|down|left|right]
             zoom [-window <number>]
             bare [<delay>]

                         list: list opened windows (without argument, this list is displayed)
                           -1: jump to previous window
                           +1: jump to next window
                           b#: jump to next window displaying buffer number #
                           up: switch to window above current one
                         down: switch to window below current one
                         left: switch to window on the left
                        right: switch to window on the right
                       number: window number (see /window list)
                       splith: split current window horizontally (to undo: /window merge)
                       splitv: split current window vertically (to undo: /window merge)
                       resize: resize window size, new size is <pct> percentage of parent window; if "h" or "v" is specified, the resize affects the nearest parent window with a split of this type (horizontal/vertical)
                      balance: balance the sizes of all windows
                        merge: merge window with another (all = keep only one window)
                        close: close window
                      page_up: scroll one page up
                    page_down: scroll one page down
                      refresh: refresh screen
                       scroll: scroll a number of lines (+/-N) or with time: s=seconds, m=minutes, h=hours, d=days, M=months, y=years
                 scroll_horiz: scroll horizontally a number of columns (+/-N) or percentage of window size (this scrolling is possible only on buffers with free content)
                    scroll_up: scroll a few lines up
                  scroll_down: scroll a few lines down
                   scroll_top: scroll to top of buffer
                scroll_bottom: scroll to bottom of buffer
            scroll_beyond_end: scroll beyond the end of buffer
    scroll_previous_highlight: scroll to previous highlight
        scroll_next_highlight: scroll to next highlight
                scroll_unread: scroll to unread marker
                         swap: swap buffers of two windows (with optional direction for target window)
                         zoom: zoom on window
                         bare: toggle bare display (with optional delay in seconds for automatic return to standard display mode)

    For splith and splitv, pct is a percentage which represents size of new window, computed with current window as size reference. For example 25 means create a new window with size = current_size / 4

    Examples:
      /window b1
      /window scroll -2
      /window scroll -2d
      /window scroll -d
      /window zoom -window 2
      /window splith 30
      /window resize 75
      /window resize v+10
      /window bare 2

#### Options des données sécurisées

Sections dans le fichier sec.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`crypt` | `/set sec.crypt.*` | Options pour le chiffrement.
`data` | `/secure` | Données sécurisées.

Options :

- sec.crypt.cipher

  - description: cipher used to crypt data (the number after algorithm is the size of the key in bits)

  - type: enum

  - values: aes128, aes192, aes256

  - default value: `aes256`

- sec.crypt.hash_algo

  - description: hash algorithm used to check the decrypted data; some of them require a specific libgcrypt version: sha3-*: libgcrypt >= 1.7.0, blake2*: libgcrypt >= 1.8.0, sha512-*: libgcrypt >= 1.9.4

  - type: enum

  - values: sha224, sha256, sha384, sha512, sha512-224, sha512-256, sha3-224, sha3-256, sha3-384, sha3-512, blake2b-160, blake2b-256, blake2b-384, blake2b-512, blake2s-128, blake2s-160, blake2s-224, blake2s-256

  - default value: `sha256`

- sec.crypt.passphrase_command

  - description: read the passphrase from the output of this system command (only the first line is used and it must not contain any extra character); this option is used only when reading file sec.conf and if the environment variable "WEECHAT_PASSPHRASE" is not set (the environment variable has higher priority); example with password-store: "/usr/bin/pass show weechat/passphrase"

  - type: string

  - values: any string

  - default value: `""`

- sec.crypt.salt

  - description: use salt when generating key used in encryption (recommended for maximum security); when enabled, the content of crypted data in file sec.conf will be different on each write of the file; if you put the file sec.conf in a version control system, then you can turn off this option to have always same content in file

  - type: boolean

  - values: on, off

  - default value: `on`

#### Options WeeChat

Sections dans le fichier weechat.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`debug` | `/debug set /set weechat.debug.*` | Niveau de debug, pour le cœur et les extensions (les options peuvent être ajoutées/supprimées dans la section).
`startup` | `/set weechat.startup.*` | Options de démarrage.
`look` | `/set weechat.look.*` | Aspect/présentation.
`palette` | `/color alias /set weechat.palette.*` | Alias de couleurs (les options peuvent être ajoutées/supprimées dans la section).
`color` | `/set weechat.color.*` | Couleurs.
`completion` | `/set weechat.completion.*` | Options de complétion.
`history` | `/set weechat.history.*` | Options d’historique (commandes et tampons).
`proxy` | `/proxy /set weechat.proxy.*` | Options des proxies.
`network` | `/set weechat.network.*` | Options réseau/TLS.
`plugin` | `/set weechat.plugin.*` | Options sur les extensions.
`signal` | `/set weechat.signal.*` | Options sur les signaux.
`bar` | `/bar /set weechat.bar.*` | Options des barres.
`layout` | `/layout` | Dispositions.
`buffer` | `/buffer setauto` | Propriétés appliquées automatiquement sur les tampons lorsqu’ils sont ouverts.
`notify` | `/buffer notify` | Niveaux de notification des tampons (les options peuvent être ajoutées/supprimées dans la section).
`filter` | `/filter` | Filtres.
`key` | `/key` | Touches pour le contexte "default".
`key_search` | `/key` | Touches pour le contexte "search".
`key_cursor` | `/key` | Touches pour le contexte "cursor".
`key_mouse` | `/key` | Touches pour le contexte "mouse".

Options :

- weechat.color.bar_more

  - description: text color for "+" when scrolling bars

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightmagenta`

- weechat.color.chat

  - description: text color for chat

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.chat_bg

  - description: background color for chat

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.chat_buffer

  - description: text color for buffer names

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- weechat.color.chat_channel

  - description: text color for channel names

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- weechat.color.chat_day_change

  - description: text color for message displayed when the day has changed

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- weechat.color.chat_delimiters

  - description: text color for delimiters

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `22`

- weechat.color.chat_highlight

  - description: text color for highlighted prefix

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- weechat.color.chat_highlight_bg

  - description: background color for highlighted prefix

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `124`

- weechat.color.chat_host

  - description: text color for hostnames

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- weechat.color.chat_inactive_buffer

  - description: text color for chat when line is inactive (buffer is merged with other buffers and is not selected)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.chat_inactive_window

  - description: text color for chat when window is inactive (not current selected window)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `240`

- weechat.color.chat_nick

  - description: text color for nicks in chat window: used in some server messages and as fallback when a nick color is not found; most of times nick color comes from option weechat.color.chat_nick_colors

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightcyan`

- weechat.color.chat_nick_colors

  - description: text color for nicks (comma separated list of colors, background is allowed with format: "fg:bg", for example: "lightred:blue")

  - type: string

  - values: any string

  - default value: `"cyan,magenta,green,brown,lightblue,lightcyan,lightmagenta,lightgreen,31,35,38,40,49,63,70,80,92,99,112,126,130,138,142,148,160,162,167,169,174,176,178,184,186,210,212,215,248"`

- weechat.color.chat_nick_offline

  - description: text color for offline nick (not in nicklist anymore); this color is used only if option weechat.look.color_nick_offline is enabled

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `242`

- weechat.color.chat_nick_offline_highlight

  - description: text color for offline nick with highlight; this color is used only if option weechat.look.color_nick_offline is enabled

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.chat_nick_offline_highlight_bg

  - description: background color for offline nick with highlight; this color is used only if option weechat.look.color_nick_offline is enabled

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `17`

- weechat.color.chat_nick_other

  - description: text color for other nick in private buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- weechat.color.chat_nick_prefix

  - description: color for nick prefix (string displayed before nick in prefix)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- weechat.color.chat_nick_self

  - description: text color for local nick in chat window

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- weechat.color.chat_nick_suffix

  - description: color for nick suffix (string displayed after nick in prefix)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- weechat.color.chat_prefix_action

  - description: text color for action prefix

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- weechat.color.chat_prefix_buffer

  - description: text color for buffer name (before prefix, when many buffers are merged with same number)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `180`

- weechat.color.chat_prefix_buffer_inactive_buffer

  - description: text color for inactive buffer name (before prefix, when many buffers are merged with same number and if buffer is not selected)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.chat_prefix_error

  - description: text color for error prefix

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- weechat.color.chat_prefix_join

  - description: text color for join prefix

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightgreen`

- weechat.color.chat_prefix_more

  - description: text color for "+" when prefix is too long

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightmagenta`

- weechat.color.chat_prefix_network

  - description: text color for network prefix

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `magenta`

- weechat.color.chat_prefix_quit

  - description: text color for quit prefix

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightred`

- weechat.color.chat_prefix_suffix

  - description: text color for suffix (after prefix)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `24`

- weechat.color.chat_read_marker

  - description: text color for unread data marker

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `magenta`

- weechat.color.chat_read_marker_bg

  - description: background color for unread data marker

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.chat_server

  - description: text color for server names

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- weechat.color.chat_status_disabled

  - description: text color for "disabled" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `red`

- weechat.color.chat_status_enabled

  - description: text color for "enabled" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- weechat.color.chat_tags

  - description: text color for tags after messages (displayed with command /debug tags)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `red`

- weechat.color.chat_text_found

  - description: text color for marker on lines where text sought is found

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- weechat.color.chat_text_found_bg

  - description: background color for marker on lines where text sought is found

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightmagenta`

- weechat.color.chat_time

  - description: text color for time in chat window

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.chat_time_delimiters

  - description: text color for time delimiters

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- weechat.color.chat_value

  - description: text color for values

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- weechat.color.chat_value_null

  - description: text color for null values (undefined)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `blue`

- weechat.color.emphasized

  - description: text color for emphasized text (for example when searching text); this option is used only if option weechat.look.emphasized_attributes is an empty string (default value)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- weechat.color.emphasized_bg

  - description: background color for emphasized text (for example when searching text); used only if option weechat.look.emphasized_attributes is an empty string (default value)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `54`

- weechat.color.eval_syntax_colors

  - description: text color for syntax highlighting in evaluated strings, with "${raw_hl:...}" and "${hl:...}" (comma separated list of colors, background is allowed with format: "fg:bg", for example: "lightred:blue")

  - type: string

  - values: any string

  - default value: `"green,lightred,lightblue,lightmagenta,yellow,cyan"`

- weechat.color.input_actions

  - description: text color for actions in input line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightgreen`

- weechat.color.input_text_not_found

  - description: text color for unsuccessful text search in input line

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `red`

- weechat.color.item_away

  - description: text color for away item

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- weechat.color.nicklist_away

  - description: text color for away nicknames

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `240`

- weechat.color.nicklist_group

  - description: text color for groups in nicklist

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- weechat.color.separator

  - description: color for window separators (when split) and separators beside bars (like nicklist)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `236`

- weechat.color.status_count_highlight

  - description: text color for count of highlight messages in hotlist (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `magenta`

- weechat.color.status_count_msg

  - description: text color for count of messages in hotlist (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- weechat.color.status_count_other

  - description: text color for count of other messages in hotlist (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.status_count_private

  - description: text color for count of private messages in hotlist (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- weechat.color.status_data_highlight

  - description: text color for buffer with highlight (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightmagenta`

- weechat.color.status_data_msg

  - description: text color for buffer with new messages (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- weechat.color.status_data_other

  - description: text color for buffer with new data (not messages) (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.status_data_private

  - description: text color for buffer with private message (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightgreen`

- weechat.color.status_filter

  - description: text color for filter indicator in status bar

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- weechat.color.status_modes

  - description: text color for buffer modes in status bar

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.status_more

  - description: text color for buffer with new data (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- weechat.color.status_mouse

  - description: text color for mouse indicator in status bar

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightgreen`

- weechat.color.status_name

  - description: text color for current buffer name in status bar

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- weechat.color.status_name_insecure

  - description: text color for current buffer name in status bar, if data are exchanged and not secured with a protocol like TLS

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightmagenta`

- weechat.color.status_name_tls

  - description: text color for current buffer name in status bar, if data are exchanged and secured with a protocol like TLS

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- weechat.color.status_nicklist_count

  - description: text color for number of nicks in nicklist (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.color.status_number

  - description: text color for current buffer number in status bar

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- weechat.color.status_time

  - description: text color for time (status bar)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- weechat.completion.base_word_until_cursor

  - description: if enabled, the base word to complete ends at char before cursor; otherwise the base word ends at first space after cursor

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.completion.case_sensitive

  - description: if enabled, the completion is case-sensitive by default

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.completion.command_inline

  - description: if enabled, the commands inside command line are completed (the command at beginning of line has higher priority and is used first); note: when this option is enabled, there is no more automatic completion of paths beginning with "/" (outside commands arguments)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.completion.default_template

  - description: default completion template (please see documentation for template codes and values: plugin API reference, function "weechat_hook_command")

  - type: string

  - values: any string

  - default value: `"%(nicks)|%(irc_channels)"`

- weechat.completion.nick_add_space

  - description: add space after nick completion (when nick is not first word on command line)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.completion.nick_case_sensitive

  - description: case-sensitive completion for nicks

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.completion.nick_completer

  - description: string inserted after nick completion (when nick is first word on command line)

  - type: string

  - values: any string

  - default value: `": "`

- weechat.completion.nick_first_only

  - description: complete only with first nick found

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.completion.nick_ignore_chars

  - description: chars ignored for nick completion

  - type: string

  - values: any string

  - default value: `"[]`_-^"`

- weechat.completion.nick_ignore_words

  - description: comma-separated list of nicks to ignore (not completed); the whole nick must be set in this option even if chars are ignored in completion with option weechat.completion.nick_ignore_chars; look up for nicks is with exact case then lower case, so it's possible to use only lower case for nicks in this option

  - type: string

  - values: any string

  - default value: `""`

- weechat.completion.partial_completion_alert

  - description: send alert (BEL) when a partial completion occurs

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.completion.partial_completion_command

  - description: partially complete command names (stop when many commands found begin with same letters)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.completion.partial_completion_command_arg

  - description: partially complete command arguments (stop when many arguments found begin with same prefix)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.completion.partial_completion_count

  - description: display count for each partial completion in bar item

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.completion.partial_completion_other

  - description: partially complete outside commands (stop when many words found begin with same letters)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.completion.partial_completion_templates

  - description: comma-separated list of templates for which partial completion is enabled by default (with Tab key instead of shift-Tab); the list of templates is in documentation: plugin API reference, function "weechat_hook_command"

  - type: string

  - values: any string

  - default value: `"config_options"`

- weechat.history.display_default

  - description: maximum number of commands to display by default in history listing (0 = unlimited)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `5`

- weechat.history.max_buffer_lines_minutes

  - description: maximum number of minutes in history per buffer (0 = unlimited); examples: 1440 = one day, 10080 = one week, 43200 = one month, 525600 = one year; use 0 ONLY if option weechat.history.max_buffer_lines_number is NOT set to 0

  - type: integer

  - values: 0 .. 2147483647

  - default value: `0`

- weechat.history.max_buffer_lines_number

  - description: maximum number of lines in history per buffer (0 = unlimited); use 0 ONLY if option weechat.history.max_buffer_lines_minutes is NOT set to 0

  - type: integer

  - values: 0 .. 2147483647

  - default value: `4096`

- weechat.history.max_commands

  - description: maximum number of user commands in history (0 = unlimited, NOT RECOMMENDED: no limit in memory usage)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `100`

- weechat.history.max_visited_buffers

  - description: maximum number of visited buffers to keep in memory

  - type: integer

  - values: 0 .. 1000

  - default value: `50`

- weechat.key.backspace

  - description: "backspace" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_previous_char"`

- weechat.key.ctrl-_

  - description: "ctrl-_" (default)

  - type: string

  - values: any string

  - default value: `"/input undo"`

- weechat.key.ctrl-a

  - description: "ctrl-a" (default)

  - type: string

  - values: any string

  - default value: `"/input move_beginning_of_line"`

- weechat.key.ctrl-b

  - description: "ctrl-b" (default)

  - type: string

  - values: any string

  - default value: `"/input move_previous_char"`

- weechat.key.ctrl-c,_

  - description: "ctrl-c,_" (default)

  - type: string

  - values: any string

  - default value: `"/input insert \x1F"`

- weechat.key.ctrl-c,b

  - description: "ctrl-c,b" (default)

  - type: string

  - values: any string

  - default value: `"/input insert \x02"`

- weechat.key.ctrl-c,c

  - description: "ctrl-c,c" (default)

  - type: string

  - values: any string

  - default value: `"/input insert \x03"`

- weechat.key.ctrl-c,d

  - description: "ctrl-c,d" (default)

  - type: string

  - values: any string

  - default value: `"/input insert \x04"`

- weechat.key.ctrl-c,i

  - description: "ctrl-c,i" (default)

  - type: string

  - values: any string

  - default value: `"/input insert \x1D"`

- weechat.key.ctrl-c,o

  - description: "ctrl-c,o" (default)

  - type: string

  - values: any string

  - default value: `"/input insert \x0F"`

- weechat.key.ctrl-c,v

  - description: "ctrl-c,v" (default)

  - type: string

  - values: any string

  - default value: `"/input insert \x16"`

- weechat.key.ctrl-d

  - description: "ctrl-d" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_next_char"`

- weechat.key.ctrl-down

  - description: "ctrl-down" (default)

  - type: string

  - values: any string

  - default value: `"/input history_global_next"`

- weechat.key.ctrl-e

  - description: "ctrl-e" (default)

  - type: string

  - values: any string

  - default value: `"/input move_end_of_line"`

- weechat.key.ctrl-f

  - description: "ctrl-f" (default)

  - type: string

  - values: any string

  - default value: `"/input move_next_char"`

- weechat.key.ctrl-f1

  - description: "ctrl-f1" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll buflist * -100%"`

- weechat.key.ctrl-f11

  - description: "ctrl-f11" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist * -100%"`

- weechat.key.ctrl-f12

  - description: "ctrl-f12" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist * +100%"`

- weechat.key.ctrl-f2

  - description: "ctrl-f2" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll buflist * +100%"`

- weechat.key.ctrl-k

  - description: "ctrl-k" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_end_of_line"`

- weechat.key.ctrl-l

  - description: "ctrl-l" (default)

  - type: string

  - values: any string

  - default value: `"/window refresh"`

- weechat.key.ctrl-left

  - description: "ctrl-left" (default)

  - type: string

  - values: any string

  - default value: `"/input move_previous_word"`

- weechat.key.ctrl-n

  - description: "ctrl-n" (default)

  - type: string

  - values: any string

  - default value: `"/buffer +1"`

- weechat.key.ctrl-o

  - description: "ctrl-o" (default)

  - type: string

  - values: any string

  - default value: `"/input history_use_get_next"`

- weechat.key.ctrl-p

  - description: "ctrl-p" (default)

  - type: string

  - values: any string

  - default value: `"/buffer -1"`

- weechat.key.ctrl-r

  - description: "ctrl-r" (default)

  - type: string

  - values: any string

  - default value: `"/input search_history"`

- weechat.key.ctrl-right

  - description: "ctrl-right" (default)

  - type: string

  - values: any string

  - default value: `"/input move_next_word"`

- weechat.key.ctrl-s

  - description: "ctrl-s" (default)

  - type: string

  - values: any string

  - default value: `"/input search_text_here"`

- weechat.key.ctrl-t

  - description: "ctrl-t" (default)

  - type: string

  - values: any string

  - default value: `"/input transpose_chars"`

- weechat.key.ctrl-u

  - description: "ctrl-u" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_beginning_of_line"`

- weechat.key.ctrl-up

  - description: "ctrl-up" (default)

  - type: string

  - values: any string

  - default value: `"/input history_global_previous"`

- weechat.key.ctrl-w

  - description: "ctrl-w" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_previous_word_whitespace"`

- weechat.key.ctrl-x

  - description: "ctrl-x" (default)

  - type: string

  - values: any string

  - default value: `"/buffer switch"`

- weechat.key.ctrl-y

  - description: "ctrl-y" (default)

  - type: string

  - values: any string

  - default value: `"/input clipboard_paste"`

- weechat.key.ctrl-z

  - description: "ctrl-z" (default)

  - type: string

  - values: any string

  - default value: `"/sys suspend"`

- weechat.key.delete

  - description: "delete" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_next_char"`

- weechat.key.down

  - description: "down" (default)

  - type: string

  - values: any string

  - default value: `"/input history_next"`

- weechat.key.end

  - description: "end" (default)

  - type: string

  - values: any string

  - default value: `"/input move_end_of_line"`

- weechat.key.f1

  - description: "f1" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll buflist * -100%"`

- weechat.key.f10

  - description: "f10" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll title * +30%"`

- weechat.key.f11

  - description: "f11" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist * -100%"`

- weechat.key.f12

  - description: "f12" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist * +100%"`

- weechat.key.f2

  - description: "f2" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll buflist * +100%"`

- weechat.key.f5

  - description: "f5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer -1"`

- weechat.key.f6

  - description: "f6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer +1"`

- weechat.key.f7

  - description: "f7" (default)

  - type: string

  - values: any string

  - default value: `"/window -1"`

- weechat.key.f8

  - description: "f8" (default)

  - type: string

  - values: any string

  - default value: `"/window +1"`

- weechat.key.f9

  - description: "f9" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll title * -30%"`

- weechat.key.home

  - description: "home" (default)

  - type: string

  - values: any string

  - default value: `"/input move_beginning_of_line"`

- weechat.key.left

  - description: "left" (default)

  - type: string

  - values: any string

  - default value: `"/input move_previous_char"`

- weechat.key.meta--

  - description: "meta--" (default)

  - type: string

  - values: any string

  - default value: `"/filter toggle @"`

- [[option_weechat.key.meta-/]] weechat.key.meta-/

  - description: "meta-/" (default)

  - type: string

  - values: any string

  - default value: `"/buffer jump last_displayed"`

- weechat.key.meta-0

  - description: "meta-0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *10"`

- weechat.key.meta-1

  - description: "meta-1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *1"`

- weechat.key.meta-2

  - description: "meta-2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *2"`

- weechat.key.meta-3

  - description: "meta-3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *3"`

- weechat.key.meta-4

  - description: "meta-4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *4"`

- weechat.key.meta-5

  - description: "meta-5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *5"`

- weechat.key.meta-6

  - description: "meta-6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *6"`

- weechat.key.meta-7

  - description: "meta-7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *7"`

- weechat.key.meta-8

  - description: "meta-8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *8"`

- weechat.key.meta-9

  - description: "meta-9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *9"`

- [[option_weechat.key.meta-<]] weechat.key.meta-<

  - description: "meta-<" (default)

  - type: string

  - values: any string

  - default value: `"/buffer jump prev_visited"`

- [[option_weechat.key.meta-=]] weechat.key.meta-=

  - description: "meta-=" (default)

  - type: string

  - values: any string

  - default value: `"/filter toggle"`

- [[option_weechat.key.meta→]] weechat.key.meta->

  - description: "meta->" (default)

  - type: string

  - values: any string

  - default value: `"/buffer jump next_visited"`

- weechat.key.meta-B

  - description: "meta-B" (default)

  - type: string

  - values: any string

  - default value: `"/buflist toggle"`

- weechat.key.meta-N

  - description: "meta-N" (default)

  - type: string

  - values: any string

  - default value: `"/bar toggle nicklist"`

- weechat.key.meta-R

  - description: "meta-R" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_input"`

- weechat.key.meta-U

  - description: "meta-U" (default)

  - type: string

  - values: any string

  - default value: `"/allbuf /buffer set unread"`

- weechat.key.meta-_

  - description: "meta-_" (default)

  - type: string

  - values: any string

  - default value: `"/input redo"`

- weechat.key.meta-a

  - description: "meta-a" (default)

  - type: string

  - values: any string

  - default value: `"/buffer jump smart"`

- weechat.key.meta-b

  - description: "meta-b" (default)

  - type: string

  - values: any string

  - default value: `"/input move_previous_word"`

- weechat.key.meta-backspace

  - description: "meta-backspace" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_previous_word"`

- weechat.key.meta-ctrl-k

  - description: "meta-ctrl-k" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_end_of_input"`

- weechat.key.meta-ctrl-l

  - description: "meta-ctrl-l" (default)

  - type: string

  - values: any string

  - default value: `"/remote togglecmd"`

- weechat.key.meta-ctrl-u

  - description: "meta-ctrl-u" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_beginning_of_input"`

- weechat.key.meta-d

  - description: "meta-d" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_next_word"`

- weechat.key.meta-down

  - description: "meta-down" (default)

  - type: string

  - values: any string

  - default value: `"/buffer +1"`

- weechat.key.meta-end

  - description: "meta-end" (default)

  - type: string

  - values: any string

  - default value: `"/window scroll_bottom"`

- weechat.key.meta-f

  - description: "meta-f" (default)

  - type: string

  - values: any string

  - default value: `"/input move_next_word"`

- weechat.key.meta-f1

  - description: "meta-f1" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll buflist * b"`

- weechat.key.meta-f11

  - description: "meta-f11" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist * b"`

- weechat.key.meta-f12

  - description: "meta-f12" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist * e"`

- weechat.key.meta-f2

  - description: "meta-f2" (default)

  - type: string

  - values: any string

  - default value: `"/bar scroll buflist * e"`

- weechat.key.meta-h,meta-R

  - description: "meta-h,meta-R" (default)

  - type: string

  - values: any string

  - default value: `"/hotlist restore -all"`

- weechat.key.meta-h,meta-c

  - description: "meta-h,meta-c" (default)

  - type: string

  - values: any string

  - default value: `"/hotlist clear"`

- weechat.key.meta-h,meta-m

  - description: "meta-h,meta-m" (default)

  - type: string

  - values: any string

  - default value: `"/hotlist remove"`

- weechat.key.meta-h,meta-r

  - description: "meta-h,meta-r" (default)

  - type: string

  - values: any string

  - default value: `"/hotlist restore"`

- weechat.key.meta-home

  - description: "meta-home" (default)

  - type: string

  - values: any string

  - default value: `"/window scroll_top"`

- weechat.key.meta-j,0,1

  - description: "meta-j,0,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *1"`

- weechat.key.meta-j,0,2

  - description: "meta-j,0,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *2"`

- weechat.key.meta-j,0,3

  - description: "meta-j,0,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *3"`

- weechat.key.meta-j,0,4

  - description: "meta-j,0,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *4"`

- weechat.key.meta-j,0,5

  - description: "meta-j,0,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *5"`

- weechat.key.meta-j,0,6

  - description: "meta-j,0,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *6"`

- weechat.key.meta-j,0,7

  - description: "meta-j,0,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *7"`

- weechat.key.meta-j,0,8

  - description: "meta-j,0,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *8"`

- weechat.key.meta-j,0,9

  - description: "meta-j,0,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *9"`

- weechat.key.meta-j,1,0

  - description: "meta-j,1,0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *10"`

- weechat.key.meta-j,1,1

  - description: "meta-j,1,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *11"`

- weechat.key.meta-j,1,2

  - description: "meta-j,1,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *12"`

- weechat.key.meta-j,1,3

  - description: "meta-j,1,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *13"`

- weechat.key.meta-j,1,4

  - description: "meta-j,1,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *14"`

- weechat.key.meta-j,1,5

  - description: "meta-j,1,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *15"`

- weechat.key.meta-j,1,6

  - description: "meta-j,1,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *16"`

- weechat.key.meta-j,1,7

  - description: "meta-j,1,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *17"`

- weechat.key.meta-j,1,8

  - description: "meta-j,1,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *18"`

- weechat.key.meta-j,1,9

  - description: "meta-j,1,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *19"`

- weechat.key.meta-j,2,0

  - description: "meta-j,2,0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *20"`

- weechat.key.meta-j,2,1

  - description: "meta-j,2,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *21"`

- weechat.key.meta-j,2,2

  - description: "meta-j,2,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *22"`

- weechat.key.meta-j,2,3

  - description: "meta-j,2,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *23"`

- weechat.key.meta-j,2,4

  - description: "meta-j,2,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *24"`

- weechat.key.meta-j,2,5

  - description: "meta-j,2,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *25"`

- weechat.key.meta-j,2,6

  - description: "meta-j,2,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *26"`

- weechat.key.meta-j,2,7

  - description: "meta-j,2,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *27"`

- weechat.key.meta-j,2,8

  - description: "meta-j,2,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *28"`

- weechat.key.meta-j,2,9

  - description: "meta-j,2,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *29"`

- weechat.key.meta-j,3,0

  - description: "meta-j,3,0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *30"`

- weechat.key.meta-j,3,1

  - description: "meta-j,3,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *31"`

- weechat.key.meta-j,3,2

  - description: "meta-j,3,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *32"`

- weechat.key.meta-j,3,3

  - description: "meta-j,3,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *33"`

- weechat.key.meta-j,3,4

  - description: "meta-j,3,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *34"`

- weechat.key.meta-j,3,5

  - description: "meta-j,3,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *35"`

- weechat.key.meta-j,3,6

  - description: "meta-j,3,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *36"`

- weechat.key.meta-j,3,7

  - description: "meta-j,3,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *37"`

- weechat.key.meta-j,3,8

  - description: "meta-j,3,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *38"`

- weechat.key.meta-j,3,9

  - description: "meta-j,3,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *39"`

- weechat.key.meta-j,4,0

  - description: "meta-j,4,0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *40"`

- weechat.key.meta-j,4,1

  - description: "meta-j,4,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *41"`

- weechat.key.meta-j,4,2

  - description: "meta-j,4,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *42"`

- weechat.key.meta-j,4,3

  - description: "meta-j,4,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *43"`

- weechat.key.meta-j,4,4

  - description: "meta-j,4,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *44"`

- weechat.key.meta-j,4,5

  - description: "meta-j,4,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *45"`

- weechat.key.meta-j,4,6

  - description: "meta-j,4,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *46"`

- weechat.key.meta-j,4,7

  - description: "meta-j,4,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *47"`

- weechat.key.meta-j,4,8

  - description: "meta-j,4,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *48"`

- weechat.key.meta-j,4,9

  - description: "meta-j,4,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *49"`

- weechat.key.meta-j,5,0

  - description: "meta-j,5,0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *50"`

- weechat.key.meta-j,5,1

  - description: "meta-j,5,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *51"`

- weechat.key.meta-j,5,2

  - description: "meta-j,5,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *52"`

- weechat.key.meta-j,5,3

  - description: "meta-j,5,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *53"`

- weechat.key.meta-j,5,4

  - description: "meta-j,5,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *54"`

- weechat.key.meta-j,5,5

  - description: "meta-j,5,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *55"`

- weechat.key.meta-j,5,6

  - description: "meta-j,5,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *56"`

- weechat.key.meta-j,5,7

  - description: "meta-j,5,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *57"`

- weechat.key.meta-j,5,8

  - description: "meta-j,5,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *58"`

- weechat.key.meta-j,5,9

  - description: "meta-j,5,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *59"`

- weechat.key.meta-j,6,0

  - description: "meta-j,6,0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *60"`

- weechat.key.meta-j,6,1

  - description: "meta-j,6,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *61"`

- weechat.key.meta-j,6,2

  - description: "meta-j,6,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *62"`

- weechat.key.meta-j,6,3

  - description: "meta-j,6,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *63"`

- weechat.key.meta-j,6,4

  - description: "meta-j,6,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *64"`

- weechat.key.meta-j,6,5

  - description: "meta-j,6,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *65"`

- weechat.key.meta-j,6,6

  - description: "meta-j,6,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *66"`

- weechat.key.meta-j,6,7

  - description: "meta-j,6,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *67"`

- weechat.key.meta-j,6,8

  - description: "meta-j,6,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *68"`

- weechat.key.meta-j,6,9

  - description: "meta-j,6,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *69"`

- weechat.key.meta-j,7,0

  - description: "meta-j,7,0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *70"`

- weechat.key.meta-j,7,1

  - description: "meta-j,7,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *71"`

- weechat.key.meta-j,7,2

  - description: "meta-j,7,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *72"`

- weechat.key.meta-j,7,3

  - description: "meta-j,7,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *73"`

- weechat.key.meta-j,7,4

  - description: "meta-j,7,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *74"`

- weechat.key.meta-j,7,5

  - description: "meta-j,7,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *75"`

- weechat.key.meta-j,7,6

  - description: "meta-j,7,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *76"`

- weechat.key.meta-j,7,7

  - description: "meta-j,7,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *77"`

- weechat.key.meta-j,7,8

  - description: "meta-j,7,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *78"`

- weechat.key.meta-j,7,9

  - description: "meta-j,7,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *79"`

- weechat.key.meta-j,8,0

  - description: "meta-j,8,0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *80"`

- weechat.key.meta-j,8,1

  - description: "meta-j,8,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *81"`

- weechat.key.meta-j,8,2

  - description: "meta-j,8,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *82"`

- weechat.key.meta-j,8,3

  - description: "meta-j,8,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *83"`

- weechat.key.meta-j,8,4

  - description: "meta-j,8,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *84"`

- weechat.key.meta-j,8,5

  - description: "meta-j,8,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *85"`

- weechat.key.meta-j,8,6

  - description: "meta-j,8,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *86"`

- weechat.key.meta-j,8,7

  - description: "meta-j,8,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *87"`

- weechat.key.meta-j,8,8

  - description: "meta-j,8,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *88"`

- weechat.key.meta-j,8,9

  - description: "meta-j,8,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *89"`

- weechat.key.meta-j,9,0

  - description: "meta-j,9,0" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *90"`

- weechat.key.meta-j,9,1

  - description: "meta-j,9,1" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *91"`

- weechat.key.meta-j,9,2

  - description: "meta-j,9,2" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *92"`

- weechat.key.meta-j,9,3

  - description: "meta-j,9,3" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *93"`

- weechat.key.meta-j,9,4

  - description: "meta-j,9,4" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *94"`

- weechat.key.meta-j,9,5

  - description: "meta-j,9,5" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *95"`

- weechat.key.meta-j,9,6

  - description: "meta-j,9,6" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *96"`

- weechat.key.meta-j,9,7

  - description: "meta-j,9,7" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *97"`

- weechat.key.meta-j,9,8

  - description: "meta-j,9,8" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *98"`

- weechat.key.meta-j,9,9

  - description: "meta-j,9,9" (default)

  - type: string

  - values: any string

  - default value: `"/buffer *99"`

- weechat.key.meta-j,meta-f

  - description: "meta-j,meta-f" (default)

  - type: string

  - values: any string

  - default value: `"/buffer -"`

- weechat.key.meta-j,meta-l

  - description: "meta-j,meta-l" (default)

  - type: string

  - values: any string

  - default value: `"/buffer +"`

- weechat.key.meta-j,meta-r

  - description: "meta-j,meta-r" (default)

  - type: string

  - values: any string

  - default value: `"/server raw"`

- weechat.key.meta-j,meta-s

  - description: "meta-j,meta-s" (default)

  - type: string

  - values: any string

  - default value: `"/server jump"`

- weechat.key.meta-k

  - description: "meta-k" (default)

  - type: string

  - values: any string

  - default value: `"/input grab_key_command"`

- weechat.key.meta-l

  - description: "meta-l" (default)

  - type: string

  - values: any string

  - default value: `"/window bare"`

- weechat.key.meta-left

  - description: "meta-left" (default)

  - type: string

  - values: any string

  - default value: `"/buffer -1"`

- weechat.key.meta-m

  - description: "meta-m" (default)

  - type: string

  - values: any string

  - default value: `"/mute mouse toggle"`

- weechat.key.meta-n

  - description: "meta-n" (default)

  - type: string

  - values: any string

  - default value: `"/window scroll_next_highlight"`

- weechat.key.meta-p

  - description: "meta-p" (default)

  - type: string

  - values: any string

  - default value: `"/window scroll_previous_highlight"`

- weechat.key.meta-pgdn

  - description: "meta-pgdn" (default)

  - type: string

  - values: any string

  - default value: `"/window scroll_down"`

- weechat.key.meta-pgup

  - description: "meta-pgup" (default)

  - type: string

  - values: any string

  - default value: `"/window scroll_up"`

- weechat.key.meta-r

  - description: "meta-r" (default)

  - type: string

  - values: any string

  - default value: `"/input delete_line"`

- weechat.key.meta-return

  - description: "meta-return" (default)

  - type: string

  - values: any string

  - default value: `"/input insert \n"`

- weechat.key.meta-right

  - description: "meta-right" (default)

  - type: string

  - values: any string

  - default value: `"/buffer +1"`

- weechat.key.meta-s

  - description: "meta-s" (default)

  - type: string

  - values: any string

  - default value: `"/mute spell toggle"`

- weechat.key.meta-u

  - description: "meta-u" (default)

  - type: string

  - values: any string

  - default value: `"/window scroll_unread"`

- weechat.key.meta-up

  - description: "meta-up" (default)

  - type: string

  - values: any string

  - default value: `"/buffer -1"`

- weechat.key.meta-w,meta-b

  - description: "meta-w,meta-b" (default)

  - type: string

  - values: any string

  - default value: `"/window balance"`

- weechat.key.meta-w,meta-down

  - description: "meta-w,meta-down" (default)

  - type: string

  - values: any string

  - default value: `"/window down"`

- weechat.key.meta-w,meta-left

  - description: "meta-w,meta-left" (default)

  - type: string

  - values: any string

  - default value: `"/window left"`

- weechat.key.meta-w,meta-right

  - description: "meta-w,meta-right" (default)

  - type: string

  - values: any string

  - default value: `"/window right"`

- weechat.key.meta-w,meta-s

  - description: "meta-w,meta-s" (default)

  - type: string

  - values: any string

  - default value: `"/window swap"`

- weechat.key.meta-w,meta-up

  - description: "meta-w,meta-up" (default)

  - type: string

  - values: any string

  - default value: `"/window up"`

- weechat.key.meta-x

  - description: "meta-x" (default)

  - type: string

  - values: any string

  - default value: `"/buffer zoom"`

- weechat.key.meta-z

  - description: "meta-z" (default)

  - type: string

  - values: any string

  - default value: `"/window zoom"`

- weechat.key.pgdn

  - description: "pgdn" (default)

  - type: string

  - values: any string

  - default value: `"/window page_down"`

- weechat.key.pgup

  - description: "pgup" (default)

  - type: string

  - values: any string

  - default value: `"/window page_up"`

- weechat.key.return

  - description: "return" (default)

  - type: string

  - values: any string

  - default value: `"/input return"`

- weechat.key.right

  - description: "right" (default)

  - type: string

  - values: any string

  - default value: `"/input move_next_char"`

- weechat.key.shift-down

  - description: "shift-down" (default)

  - type: string

  - values: any string

  - default value: `"/input move_next_line"`

- weechat.key.shift-end

  - description: "shift-end" (default)

  - type: string

  - values: any string

  - default value: `"/input move_end_of_input"`

- weechat.key.shift-home

  - description: "shift-home" (default)

  - type: string

  - values: any string

  - default value: `"/input move_beginning_of_input"`

- weechat.key.shift-left

  - description: "shift-left" (default)

  - type: string

  - values: any string

  - default value: `"/input move_previous_char"`

- weechat.key.shift-right

  - description: "shift-right" (default)

  - type: string

  - values: any string

  - default value: `"/input move_next_char"`

- weechat.key.shift-tab

  - description: "shift-tab" (default)

  - type: string

  - values: any string

  - default value: `"/input complete_previous"`

- weechat.key.shift-up

  - description: "shift-up" (default)

  - type: string

  - values: any string

  - default value: `"/input move_previous_line"`

- weechat.key.tab

  - description: "tab" (default)

  - type: string

  - values: any string

  - default value: `"/input complete_next"`

- weechat.key.up

  - description: "up" (default)

  - type: string

  - values: any string

  - default value: `"/input history_previous"`

- weechat.key_cursor.@chat:Q

  - description: "@chat:Q" (cursor)

  - type: string

  - values: any string

  - default value: `"hsignal:chat_quote_time_prefix_message;/cursor stop"`

- weechat.key_cursor.@chat:l

  - description: "@chat:l" (cursor)

  - type: string

  - values: any string

  - default value: `"hsignal:chat_quote_focused_line;/cursor stop"`

- weechat.key_cursor.@chat:m

  - description: "@chat:m" (cursor)

  - type: string

  - values: any string

  - default value: `"hsignal:chat_quote_message;/cursor stop"`

- weechat.key_cursor.@chat:q

  - description: "@chat:q" (cursor)

  - type: string

  - values: any string

  - default value: `"hsignal:chat_quote_prefix_message;/cursor stop"`

- weechat.key_cursor.@item(buffer_nicklist):K

  - description: "@item(buffer_nicklist):K" (cursor)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/kickban ${nick}"`

- weechat.key_cursor.@item(buffer_nicklist):b

  - description: "@item(buffer_nicklist):b" (cursor)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/ban ${nick}"`

- weechat.key_cursor.@item(buffer_nicklist):k

  - description: "@item(buffer_nicklist):k" (cursor)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/kick ${nick}"`

- weechat.key_cursor.@item(buffer_nicklist):q

  - description: "@item(buffer_nicklist):q" (cursor)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/query ${nick};/cursor stop"`

- weechat.key_cursor.@item(buffer_nicklist):w

  - description: "@item(buffer_nicklist):w" (cursor)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/whois ${nick}"`

- weechat.key_cursor.down

  - description: "down" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move down"`

- weechat.key_cursor.left

  - description: "left" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move left"`

- weechat.key_cursor.meta-down

  - description: "meta-down" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move edge_bottom"`

- weechat.key_cursor.meta-end

  - description: "meta-end" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move bottom_right"`

- weechat.key_cursor.meta-home

  - description: "meta-home" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move top_left"`

- weechat.key_cursor.meta-left

  - description: "meta-left" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move edge_left"`

- weechat.key_cursor.meta-right

  - description: "meta-right" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move edge_right"`

- weechat.key_cursor.meta-shift-down

  - description: "meta-shift-down" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move area_down"`

- weechat.key_cursor.meta-shift-left

  - description: "meta-shift-left" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move area_left"`

- weechat.key_cursor.meta-shift-right

  - description: "meta-shift-right" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move area_right"`

- weechat.key_cursor.meta-shift-up

  - description: "meta-shift-up" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move area_up"`

- weechat.key_cursor.meta-up

  - description: "meta-up" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move edge_top"`

- weechat.key_cursor.return

  - description: "return" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor stop"`

- weechat.key_cursor.right

  - description: "right" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move right"`

- weechat.key_cursor.up

  - description: "up" (cursor)

  - type: string

  - values: any string

  - default value: `"/cursor move up"`

- weechat.key_histsearch.ctrl-o

  - description: "ctrl-o" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input history_use_get_next"`

- weechat.key_histsearch.ctrl-q

  - description: "ctrl-q" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input search_stop"`

- weechat.key_histsearch.ctrl-r

  - description: "ctrl-r" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input search_previous"`

- weechat.key_histsearch.ctrl-s

  - description: "ctrl-s" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input search_next"`

- weechat.key_histsearch.ctrl-x

  - description: "ctrl-x" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input search_switch_regex"`

- weechat.key_histsearch.down

  - description: "down" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input search_next"`

- weechat.key_histsearch.meta-c

  - description: "meta-c" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input search_switch_case"`

- weechat.key_histsearch.return

  - description: "return" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input search_stop_here"`

- weechat.key_histsearch.tab

  - description: "tab" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input search_switch_where"`

- weechat.key_histsearch.up

  - description: "up" (histsearch)

  - type: string

  - values: any string

  - default value: `"/input search_previous"`

- weechat.key_mouse.@*:button3

  - description: "@*:button3" (mouse)

  - type: string

  - values: any string

  - default value: `"/cursor go ${_x},${_y}"`

- weechat.key_mouse.@bar(buflist):ctrl-wheeldown

  - description: "@bar(buflist):ctrl-wheeldown" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@bar(buflist):ctrl-wheelup

  - description: "@bar(buflist):ctrl-wheelup" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@bar(input):button2

  - description: "@bar(input):button2" (mouse)

  - type: string

  - values: any string

  - default value: `"/input grab_mouse_area"`

- weechat.key_mouse.@bar(nicklist):button1-gesture-down

  - description: "@bar(nicklist):button1-gesture-down" (mouse)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist ${_window_number} +100%"`

- weechat.key_mouse.@bar(nicklist):button1-gesture-down-long

  - description: "@bar(nicklist):button1-gesture-down-long" (mouse)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist ${_window_number} e"`

- weechat.key_mouse.@bar(nicklist):button1-gesture-up

  - description: "@bar(nicklist):button1-gesture-up" (mouse)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist ${_window_number} -100%"`

- weechat.key_mouse.@bar(nicklist):button1-gesture-up-long

  - description: "@bar(nicklist):button1-gesture-up-long" (mouse)

  - type: string

  - values: any string

  - default value: `"/bar scroll nicklist ${_window_number} b"`

- weechat.key_mouse.@bar:wheeldown

  - description: "@bar:wheeldown" (mouse)

  - type: string

  - values: any string

  - default value: `"/bar scroll ${_bar_name} ${_window_number} +20%"`

- weechat.key_mouse.@bar:wheelup

  - description: "@bar:wheelup" (mouse)

  - type: string

  - values: any string

  - default value: `"/bar scroll ${_bar_name} ${_window_number} -20%"`

- weechat.key_mouse.@chat(fset.fset):button1

  - description: "@chat(fset.fset):button1" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/fset -go ${fset_option_index}"`

- weechat.key_mouse.@chat(fset.fset):button2*

  - description: "@chat(fset.fset):button2*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:fset_mouse"`

- weechat.key_mouse.@chat(fset.fset):wheeldown

  - description: "@chat(fset.fset):wheeldown" (mouse)

  - type: string

  - values: any string

  - default value: `"/fset -down 5"`

- weechat.key_mouse.@chat(fset.fset):wheelup

  - description: "@chat(fset.fset):wheelup" (mouse)

  - type: string

  - values: any string

  - default value: `"/fset -up 5"`

- weechat.key_mouse.@chat(irc.list_*):button1

  - description: "@chat(irc.list_*):button1" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/list -go ${_chat_line_y}"`

- weechat.key_mouse.@chat(irc.list_*):button2*

  - description: "@chat(irc.list_*):button2*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:irc_list_mouse"`

- weechat.key_mouse.@chat(irc.list_*):wheeldown

  - description: "@chat(irc.list_*):wheeldown" (mouse)

  - type: string

  - values: any string

  - default value: `"/list -down 5"`

- weechat.key_mouse.@chat(irc.list_*):wheelup

  - description: "@chat(irc.list_*):wheelup" (mouse)

  - type: string

  - values: any string

  - default value: `"/list -up 5"`

- weechat.key_mouse.@chat(script.scripts):button1

  - description: "@chat(script.scripts):button1" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/script -go ${_chat_line_y}"`

- weechat.key_mouse.@chat(script.scripts):button2

  - description: "@chat(script.scripts):button2" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/script -go ${_chat_line_y};/script installremove -q ${script_name_with_extension}"`

- weechat.key_mouse.@chat(script.scripts):wheeldown

  - description: "@chat(script.scripts):wheeldown" (mouse)

  - type: string

  - values: any string

  - default value: `"/script -down 5"`

- weechat.key_mouse.@chat(script.scripts):wheelup

  - description: "@chat(script.scripts):wheelup" (mouse)

  - type: string

  - values: any string

  - default value: `"/script -up 5"`

- weechat.key_mouse.@chat:button1

  - description: "@chat:button1" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number}"`

- weechat.key_mouse.@chat:button1-gesture-left

  - description: "@chat:button1-gesture-left" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/buffer -1"`

- weechat.key_mouse.@chat:button1-gesture-left-long

  - description: "@chat:button1-gesture-left-long" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/buffer 1"`

- weechat.key_mouse.@chat:button1-gesture-right

  - description: "@chat:button1-gesture-right" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/buffer +1"`

- weechat.key_mouse.@chat:button1-gesture-right-long

  - description: "@chat:button1-gesture-right-long" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/buffer +"`

- weechat.key_mouse.@chat:ctrl-wheeldown

  - description: "@chat:ctrl-wheeldown" (mouse)

  - type: string

  - values: any string

  - default value: `"/window scroll_horiz -window ${_window_number} +10%"`

- weechat.key_mouse.@chat:ctrl-wheelup

  - description: "@chat:ctrl-wheelup" (mouse)

  - type: string

  - values: any string

  - default value: `"/window scroll_horiz -window ${_window_number} -10%"`

- weechat.key_mouse.@chat:wheeldown

  - description: "@chat:wheeldown" (mouse)

  - type: string

  - values: any string

  - default value: `"/window scroll_down -window ${_window_number}"`

- weechat.key_mouse.@chat:wheelup

  - description: "@chat:wheelup" (mouse)

  - type: string

  - values: any string

  - default value: `"/window scroll_up -window ${_window_number}"`

- weechat.key_mouse.@item(buffer_nicklist):button1

  - description: "@item(buffer_nicklist):button1" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/query ${nick}"`

- weechat.key_mouse.@item(buffer_nicklist):button1-gesture-left

  - description: "@item(buffer_nicklist):button1-gesture-left" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/kick ${nick}"`

- weechat.key_mouse.@item(buffer_nicklist):button1-gesture-left-long

  - description: "@item(buffer_nicklist):button1-gesture-left-long" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/kickban ${nick}"`

- weechat.key_mouse.@item(buffer_nicklist):button2

  - description: "@item(buffer_nicklist):button2" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/whois ${nick}"`

- weechat.key_mouse.@item(buffer_nicklist):button2-gesture-left

  - description: "@item(buffer_nicklist):button2-gesture-left" (mouse)

  - type: string

  - values: any string

  - default value: `"/window ${_window_number};/ban ${nick}"`

- weechat.key_mouse.@item(buflist):button1*

  - description: "@item(buflist):button1*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@item(buflist):button2*

  - description: "@item(buflist):button2*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@item(buflist2):button1*

  - description: "@item(buflist2):button1*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@item(buflist2):button2*

  - description: "@item(buflist2):button2*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@item(buflist3):button1*

  - description: "@item(buflist3):button1*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@item(buflist3):button2*

  - description: "@item(buflist3):button2*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@item(buflist4):button1*

  - description: "@item(buflist4):button1*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@item(buflist4):button2*

  - description: "@item(buflist4):button2*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@item(buflist5):button1*

  - description: "@item(buflist5):button1*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_mouse.@item(buflist5):button2*

  - description: "@item(buflist5):button2*" (mouse)

  - type: string

  - values: any string

  - default value: `"hsignal:buflist_mouse"`

- weechat.key_search.ctrl-q

  - description: "ctrl-q" (search)

  - type: string

  - values: any string

  - default value: `"/input search_stop"`

- weechat.key_search.ctrl-r

  - description: "ctrl-r" (search)

  - type: string

  - values: any string

  - default value: `"/input search_previous"`

- weechat.key_search.ctrl-s

  - description: "ctrl-s" (search)

  - type: string

  - values: any string

  - default value: `"/input search_next"`

- weechat.key_search.ctrl-x

  - description: "ctrl-x" (search)

  - type: string

  - values: any string

  - default value: `"/input search_switch_regex"`

- weechat.key_search.down

  - description: "down" (search)

  - type: string

  - values: any string

  - default value: `"/input search_next"`

- weechat.key_search.meta-c

  - description: "meta-c" (search)

  - type: string

  - values: any string

  - default value: `"/input search_switch_case"`

- weechat.key_search.return

  - description: "return" (search)

  - type: string

  - values: any string

  - default value: `"/input search_stop_here"`

- weechat.key_search.tab

  - description: "tab" (search)

  - type: string

  - values: any string

  - default value: `"/input search_switch_where"`

- weechat.key_search.up

  - description: "up" (search)

  - type: string

  - values: any string

  - default value: `"/input search_previous"`

- weechat.look.align_end_of_lines

  - description: alignment for end of lines (all lines after the first): they are starting under this data (time, buffer, prefix, suffix, message (default))

  - type: enum

  - values: time, buffer, prefix, suffix, message

  - default value: `message`

- weechat.look.align_multiline_words

  - description: alignment for multiline words according to option weechat.look.align_end_of_lines; if disabled, the multiline words will not be aligned, which can be useful to not break long URLs

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.bar_more_down

  - description: string displayed when bar can be scrolled down (for bars with filling different from "horizontal")

  - type: string

  - values: any string

  - default value: `"+"+`

- weechat.look.bar_more_left

  - description: string displayed when bar can be scrolled to the left (for bars with filling "horizontal")

  - type: string

  - values: any string

  - default value: `"<<"`

- weechat.look.bar_more_right

  - description: string displayed when bar can be scrolled to the right (for bars with filling "horizontal")

  - type: string

  - values: any string

  - default value: `">>"`

- weechat.look.bar_more_up

  - description: string displayed when bar can be scrolled up (for bars with filling different from "horizontal")

  - type: string

  - values: any string

  - default value: `"--"`

- weechat.look.bare_display_exit_on_input

  - description: exit the bare display mode on any changes in input

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.bare_display_time_format

  - description: time format in bare display mode (see API man strftime for date/time specifiers, extra specifiers are supported, see function util_strftimeval in Plugin API reference)

  - type: string

  - values: any string

  - default value: `"%H:%M"`

- weechat.look.buffer_auto_renumber

  - description: automatically renumber buffers to have only consecutive numbers and start with number 1; if disabled, gaps between buffer numbers are allowed and the first buffer can have a number greater than 1

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.buffer_notify_default

  - description: default notify level for buffers (used to tell WeeChat if buffer must be displayed in hotlist or not, according to importance of message): all=all messages (default), message=messages+highlights, highlight=highlights only, none=never display in hotlist

  - type: enum

  - values: none, highlight, message, all

  - default value: `all`

- weechat.look.buffer_position

  - description: position of a new buffer: end = after the end of list (number = last number + 1) (default), first_gap = at first available number in the list (after the end of list if no number is available); this option is used only if the buffer has no layout number

  - type: enum

  - values: end, first_gap

  - default value: `end`

- weechat.look.buffer_search_case_sensitive

  - description: default text search in buffer: case-sensitive or not

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.buffer_search_force_default

  - description: force default values for text search in buffer (instead of using values from last search in buffer)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.buffer_search_history

  - description: default text search command line history: local (buffer) or global history

  - type: enum

  - values: local, global

  - default value: `local`

- weechat.look.buffer_search_regex

  - description: default text search in buffer: if enabled, search POSIX extended regular expression, otherwise search simple string

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.buffer_search_where

  - description: default text search in buffer: in message, prefix, prefix and message

  - type: enum

  - values: prefix, message, prefix_message

  - default value: `prefix_message`

- weechat.look.buffer_time_format

  - description: time format for each line displayed in buffers (see man strftime for date/time specifiers, extra specifiers are supported, see function util_strftimeval in Plugin API reference) (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval); variable "${highlight}" can be used in a condition to have a format specific to lines with highlight (see also option weechat.look.highlight_prefix); for example time using grayscale: "${color:252}%H${color:243}%M${color:237}%S", the same with milliseconds: "${color:252}%H${color:243}%M${color:237}%S.%.3", red background in case of highlight: "${if:${highlight}?${color:,red}}%H:%M:%S", red background in case of highlight with grayscale: ${if:${highlight}?${color:yellow,124}%H${color:187}%M${color:181}%S.%.3:${color:252}%H${color:243}%M${color:237}%S.%.3}

  - type: string

  - values: any string

  - default value: `"%H:%M:%S"`

- weechat.look.buffer_time_same

  - description: time displayed for a message with same time as previous message: use a space " " to hide time, another string to display this string instead of time, or an empty string to disable feature (display time) (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval)

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.chat_space_right

  - description: keep a space on the right side of chat area if there is a bar displayed on the right (for both text and read marker)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.color_basic_force_bold

  - description: force "bold" attribute for light colors and "darkgray" in basic colors (this option is disabled by default: bold is used only if terminal has less than 16 colors)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.color_inactive_buffer

  - description: use a different color for lines in inactive buffer (when line is from a merged buffer not selected)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.color_inactive_message

  - description: use a different color for inactive message (when window is not current window, or if line is from a merged buffer not selected)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.color_inactive_prefix

  - description: use a different color for inactive prefix (when window is not current window, or if line is from a merged buffer not selected)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.color_inactive_prefix_buffer

  - description: use a different color for inactive buffer name in prefix (when window is not current window, or if line is from a merged buffer not selected)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.color_inactive_time

  - description: use a different color for inactive time (when window is not current window, or if line is from a merged buffer not selected)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.color_inactive_window

  - description: use a different color for lines in inactive window (when window is not current window)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.color_nick_offline

  - description: use a different color for offline nicks (not in nicklist anymore)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.color_pairs_auto_reset

  - description: automatically reset table of color pairs when number of available pairs is lower or equal to this number (-1 = disable automatic reset, and then a manual "/color reset" is needed when table is full)

  - type: integer

  - values: -1 .. 256

  - default value: `5`

- weechat.look.color_real_white

  - description: if set, uses real white color, disabled by default for terms with white background (if you never use white background, you should turn on this option to see real white instead of default term foreground color)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.command_chars

  - description: chars used to determine if input string is a command or not: input must start with one of these chars; the slash ("/") is always considered as command prefix (example: ".$")

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.command_incomplete

  - description: if set, incomplete and unambiguous commands are allowed, for example /he for /help

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.config_permissions

  - description: permissions for configuration files (*.conf), as octal value (see man chmod); it must be a number with 3 digits, each digit can be 0 (no permissions), 2 (write only), 4 (read only) or 6 (read and write); the first digit must be 6 so that the user can read and write the file; by default configuration files can be read and written by the user only, for security reasons; for example 660 = "rw-rw-r--" = file readable and writable by the user and members of the group

  - type: string

  - values: any string

  - default value: `"600"`

- weechat.look.confirm_quit

  - description: if set, /quit command must be confirmed with extra argument "-yes" (see /help quit)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.confirm_upgrade

  - description: if set, /upgrade command must be confirmed with extra argument "-yes" (see /help upgrade)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.day_change

  - description: display special message when day changes

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.day_change_message_1date

  - description: message displayed when the day has changed, with one date displayed (for example at beginning of buffer) (see man strftime for date/time specifiers) (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval)

  - type: string

  - values: any string

  - default value: `"-- %a, %d %b %Y --"`

- weechat.look.day_change_message_2dates

  - description: message displayed when the day has changed, with two dates displayed (between two messages); the second date specifiers must start with two "%" because strftime is called two times on this string (see man strftime for date/time specifiers) (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval)

  - type: string

  - values: any string

  - default value: `"-- %%a, %%d %%b %%Y (%a, %d %b %Y) --"`

- weechat.look.eat_newline_glitch

  - description: if set, the eat_newline_glitch will be set to 0; this is used to not add new line char at end of each line, and then not break text when you copy/paste text from WeeChat to another application (this option is disabled by default because it can cause serious display bugs)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.emphasized_attributes

  - description: attributes for emphasized text: one or more attribute chars ("%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline); if the string is empty, the colors weechat.color.emphasized* are used

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.highlight

  - description: comma separated list of words to highlight; case-insensitive comparison (use "(?-i)" at beginning of words to make them case-sensitive), words may begin or end with "*" for partial match; example: "test,(?-i)*toto*,flash*"

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.highlight_disable_regex

  - description: POSIX extended regular expression used to prevent any highlight from a message: this option has higher priority over other highlight options (if the string is found in the message, the highlight is disabled and the other options are ignored), regular expression is case-insensitive (use "(?-i)" at beginning to make it case-sensitive), examples: "<flash.*>", "(?-i)<Flash.*>"

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.highlight_prefix

  - description: use a specific color for prefix of line in case of highlight (see also option weechat.look.buffer_time_format)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.highlight_regex

  - description: POSIX extended regular expression used to check if a message has highlight or not, at least one match in string must be surrounded by delimiters (chars different from: alphanumeric, "-", "_" and "|"), regular expression is case-insensitive (use "(?-i)" at beginning to make it case-sensitive), examples: "flashcode|flashy", "(?-i)FlashCode|flashy"

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.highlight_tags

  - description: comma separated list of tags to highlight; case-insensitive comparison; wildcard "*" is allowed in each tag; many tags can be separated by "+" to make a logical "and" between tags; examples: "nick_flashcode" for messages from nick "FlashCode", "irc_notice+nick_toto*" for notices from a nick starting with "toto"

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.hotlist_add_conditions

  - description: conditions to add a buffer in hotlist (if notify level is OK for the buffer); you can use in these conditions: "window" (current window pointer), "buffer" (buffer pointer to add in hotlist), "priority" (0 = low, 1 = message, 2 = private, 3 = highlight); by default a buffer is added to hotlist if you are away, or if the buffer is not visible on screen (not displayed in any window), or if at least one relay client is connected via the weechat protocol

  - type: string

  - values: any string

  - default value: `"${away} || ${buffer.num_displayed} == 0 || ${info:relay_client_count,weechat,connected} > 0"`

- weechat.look.hotlist_buffer_separator

  - description: string displayed between buffers in hotlist

  - type: string

  - values: any string

  - default value: `", "`

- weechat.look.hotlist_count_max

  - description: max number of messages count to display in hotlist for a buffer: 0 = never display messages count, other number = display max N messages count (from the highest to lowest priority)

  - type: integer

  - values: 0 .. 4

  - default value: `2`

- weechat.look.hotlist_count_min_msg

  - description: display messages count if number of messages is greater or equal to this value

  - type: integer

  - values: 1 .. 100

  - default value: `2`

- weechat.look.hotlist_names_count

  - description: max number of names in hotlist (0 = no name displayed, only buffer numbers)

  - type: integer

  - values: 0 .. 10000

  - default value: `3`

- weechat.look.hotlist_names_length

  - description: max length of names in hotlist (0 = no limit)

  - type: integer

  - values: 0 .. 32

  - default value: `0`

- weechat.look.hotlist_names_level

  - description: level for displaying names in hotlist (combination of: 1=join/part, 2=message, 4=private, 8=highlight, for example: 12=private+highlight)

  - type: integer

  - values: 1 .. 15

  - default value: `12`

- weechat.look.hotlist_names_merged_buffers

  - description: if set, force display of names in hotlist for merged buffers

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.hotlist_prefix

  - description: text displayed at the beginning of the hotlist

  - type: string

  - values: any string

  - default value: `"H: "`

- weechat.look.hotlist_remove

  - description: remove buffers in hotlist: buffer = remove buffer by buffer, merged = remove all visible merged buffers at once

  - type: enum

  - values: buffer, merged

  - default value: `merged`

- weechat.look.hotlist_short_names

  - description: if set, uses short names to display buffer names in hotlist (start after first "." in name)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.hotlist_sort

  - description: comma-separated list of fields to sort hotlist; each field is a hdata variable of hotlist ("var") or a hdata variable of buffer ("buffer.var"); char "-" can be used before field to reverse order, char "~" can be used to do a case-insensitive comparison; examples: "-priority,buffer.number" for sort on hotlist priority then by buffer number, "-~buffer.full_name" for case-insensitive and reverse sort on buffer full name

  - type: string

  - values: any string

  - default value: `"-priority,time,time_usec"`

- weechat.look.hotlist_suffix

  - description: text displayed at the end of the hotlist

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.hotlist_unique_numbers

  - description: keep only unique numbers in hotlist (this applies only on hotlist items where name is NOT displayed after number)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.hotlist_update_on_buffer_switch

  - description: update the hotlist when switching buffers

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.input_cursor_scroll

  - description: number of chars displayed after end of input line when scrolling to display end of line

  - type: integer

  - values: 0 .. 100

  - default value: `20`

- weechat.look.input_multiline_lead_linebreak

  - description: start the input text on a new line when the input contains multiple lines, so that the start of the lines align

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.input_share

  - description: share commands, text, or both in input for all buffers (there is still local history for each buffer)

  - type: enum

  - values: none, commands, text, all

  - default value: `none`

- weechat.look.input_share_overwrite

  - description: if set and input is shared, always overwrite input in target buffer

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.input_undo_max

  - description: max number of "undo" for command line, by buffer (0 = undo disabled)

  - type: integer

  - values: 0 .. 65535

  - default value: `32`

- weechat.look.item_away_message

  - description: display server away message in away bar item

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.item_buffer_filter

  - description: string used to show that some lines are filtered in current buffer (bar item "buffer_filter")

  - type: string

  - values: any string

  - default value: `"*"`

- weechat.look.item_buffer_zoom

  - description: string used to show zoom on merged buffer (bar item "buffer_zoom")

  - type: string

  - values: any string

  - default value: `"!"`

- weechat.look.item_mouse_status

  - description: string used to show if mouse is enabled (bar item "mouse_status")

  - type: string

  - values: any string

  - default value: `"M"`

- weechat.look.item_time_format

  - description: time format for "time" bar item (see man strftime for date/time specifiers) (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval)

  - type: string

  - values: any string

  - default value: `"%H:%M"`

- weechat.look.jump_current_to_previous_buffer

  - description: jump to previous buffer displayed when jumping to current buffer number with /buffer *N (where N is a buffer number), to easily switch to another buffer, then come back to current buffer

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.jump_previous_buffer_when_closing

  - description: jump to previously visited buffer when closing a buffer (if disabled, then jump to buffer number - 1)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.jump_smart_back_to_buffer

  - description: jump back to initial buffer after reaching end of hotlist

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.key_bind_safe

  - description: allow only binding of "safe" keys (beginning with a ctrl or meta code)

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.key_grab_delay

  - description: default delay (in milliseconds) to grab a key (using default key alt-k); this delay can be overridden in the /input command (see /help input)

  - type: integer

  - values: 1 .. 10000

  - default value: `800`

- weechat.look.mouse

  - description: enable mouse support

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.nick_color_force

  - description: force color for some nicks: hash computed with nickname to find color will not be used for these nicks (format is: "nick1:color1;nick2:color2"); look up for nicks is with exact case then lower case, so it's possible to use only lower case for nicks in this option; color can include background with the format "text,background", for example "yellow,red"

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.nick_color_hash

  - description: hash algorithm used to find the color for a nick: djb2 = variant of djb2 (position of letters matters: anagrams of a nick have different color), djb2_32 = variant of djb2 using 32-bit instead of 64-bit integer, sum = sum of letters, sum_32 = sum of letters using 32-bit instead of 64-bit integer

  - type: enum

  - values: djb2, sum, djb2_32, sum_32

  - default value: `djb2`

- weechat.look.nick_color_hash_salt

  - description: salt for the hash algorithm used to find nick colors (the nickname is appended to this salt and the hash algorithm operates on this string); modifying this shuffles nick colors

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.nick_color_stop_chars

  - description: chars used to stop in nick when computing color with letters of nick (at least one char outside this list must be in string before stopping) (example: nick "|nick|away" with "|" in chars will return color of nick "|nick"); this option has an impact on option weechat.look.nick_color_force, so the nick for the forced color must not contain the chars ignored by this option

  - type: string

  - values: any string

  - default value: `"_|["`

- weechat.look.nick_prefix

  - description: text to display before nick in prefix of message, example: "<"

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.nick_suffix

  - description: text to display after nick in prefix of message, example: ">"

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.paste_bracketed

  - description: enable terminal "bracketed paste mode" (not supported in all terminals/multiplexers): in this mode, pasted text is bracketed with control sequences so that WeeChat can differentiate pasted text from typed-in text ("ESC[200~", followed by the pasted text, followed by "ESC[201~")

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.paste_bracketed_timer_delay

  - description: force end of bracketed paste after this delay (in seconds) if the control sequence for end of bracketed paste ("ESC[201~") was not received in time

  - type: integer

  - values: 1 .. 60

  - default value: `10`

- weechat.look.paste_max_lines

  - description: max number of lines for paste without asking user (-1 = disable this feature); this option is used only if the bar item "input_paste" is used in at least one bar (by default it is used in "input" bar)

  - type: integer

  - values: -1 .. 2147483647

  - default value: `100`

- weechat.look.prefix_action

  - description: prefix for action messages (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval)

  - type: string

  - values: any string

  - default value: `" *"`

- weechat.look.prefix_align

  - description: prefix alignment (none, left, right (default))

  - type: enum

  - values: none, left, right

  - default value: `right`

- weechat.look.prefix_align_max

  - description: max size for prefix (0 = no max size)

  - type: integer

  - values: 0 .. 128

  - default value: `0`

- weechat.look.prefix_align_min

  - description: min size for prefix

  - type: integer

  - values: 0 .. 128

  - default value: `0`

- weechat.look.prefix_align_more

  - description: char to display if prefix is truncated (must be exactly one char on screen)

  - type: string

  - values: any string

  - default value: `""+`

- weechat.look.prefix_align_more_after

  - description: display the truncature char (by default "+") after the text (by replacing the space that should be displayed here); if disabled, the truncature char replaces last char of text

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.prefix_buffer_align

  - description: prefix alignment for buffer name, when many buffers are merged with same number (none, left, right (default))

  - type: enum

  - values: none, left, right

  - default value: `right`

- weechat.look.prefix_buffer_align_max

  - description: max size for buffer name, when many buffers are merged with same number (0 = no max size)

  - type: integer

  - values: 0 .. 128

  - default value: `0`

- weechat.look.prefix_buffer_align_more

  - description: char to display if buffer name is truncated (when many buffers are merged with same number) (must be exactly one char on screen)

  - type: string

  - values: any string

  - default value: `""+`

- weechat.look.prefix_buffer_align_more_after

  - description: display the truncature char (by default "+") after the text (by replacing the space that should be displayed here); if disabled, the truncature char replaces last char of text

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.prefix_error

  - description: prefix for error messages (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval)

  - type: string

  - values: any string

  - default value: `"=!="`

- weechat.look.prefix_join

  - description: prefix for join messages (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval)

  - type: string

  - values: any string

  - default value: `"-->"`

- weechat.look.prefix_network

  - description: prefix for network messages (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval)

  - type: string

  - values: any string

  - default value: `"--"`

- weechat.look.prefix_quit

  - description: prefix for quit messages (note: content is evaluated, so you can use colors with format "${color:xxx}", see /help eval)

  - type: string

  - values: any string

  - default value: `"<--"`

- weechat.look.prefix_same_nick

  - description: prefix displayed for a message with same nick as previous but not next message: use a space " " to hide prefix, another string to display this string instead of prefix, or an empty string to disable feature (display prefix)

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.prefix_same_nick_middle

  - description: prefix displayed for a message with same nick as previous and next message: use a space " " to hide prefix, another string to display this string instead of prefix, or an empty string to disable feature (display prefix)

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.prefix_suffix

  - description: string displayed after prefix

  - type: string

  - values: any string

  - default value: `"│"`

- weechat.look.quote_nick_prefix

  - description: text to display before nick when quoting a message (see /help cursor)

  - type: string

  - values: any string

  - default value: `"<"`

- weechat.look.quote_nick_suffix

  - description: text to display after nick when quoting a message (see /help cursor)

  - type: string

  - values: any string

  - default value: `">"`

- weechat.look.quote_time_format

  - description: time format when quoting a message (see /help cursor) (see man strftime for date/time specifiers, extra specifiers are supported, see function util_strftimeval in Plugin API reference)

  - type: string

  - values: any string

  - default value: `"%H:%M:%S"`

- weechat.look.read_marker

  - description: use a marker (line or char) on buffers to show first unread line

  - type: enum

  - values: none, line, char

  - default value: `line`

- weechat.look.read_marker_always_show

  - description: always show read marker, even if it is after last buffer line

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.read_marker_string

  - description: string used to draw read marker line (string is repeated until end of line)

  - type: string

  - values: any string

  - default value: `"- "`

- weechat.look.read_marker_update_on_buffer_switch

  - description: update the read marker when switching buffers

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.save_config_on_exit

  - description: save configuration file on exit

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.save_config_with_fsync

  - description: use fsync to synchronize the configuration file with the storage device (see man fsync); this is slower but should prevent any data loss in case of power failure during the save of configuration file

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.save_layout_on_exit

  - description: save layout on exit (buffers, windows, or both)

  - type: enum

  - values: none, buffers, windows, all

  - default value: `none`

- weechat.look.scroll_amount

  - description: how many lines to scroll by with scroll_up and scroll_down

  - type: integer

  - values: 1 .. 2147483647

  - default value: `3`

- weechat.look.scroll_bottom_after_switch

  - description: scroll to bottom of window after switch to another buffer (do not remember scroll position in windows); the scroll is done only for buffers with formatted content (not free content)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.scroll_page_percent

  - description: percent of screen to scroll when scrolling one page up or down (for example 100 means one page, 50 half-page)

  - type: integer

  - values: 1 .. 100

  - default value: `100`

- weechat.look.search_text_not_found_alert

  - description: alert user when text sought is not found in buffer

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.separator_horizontal

  - description: char used to draw horizontal separators around bars and windows (empty value will draw a real line with ncurses, but may cause bugs with URL selection under some terminals); width on screen must be exactly one char

  - type: string

  - values: any string

  - default value: `"-"`

- weechat.look.separator_vertical

  - description: char used to draw vertical separators around bars and windows (empty value will draw a real line with ncurses); width on screen must be exactly one char

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.tab_whitespace_char

  - description: first char to display for tabulations when whitespace mode is enabled with command `/debug whitespace`; width on screen must be exactly one char; subsequent chars are set by option weechat.look.whitespace_char

  - type: string

  - values: any string

  - default value: `"→"`

- weechat.look.tab_width

  - description: number of spaces used to display tabs in messages

  - type: integer

  - values: 1 .. 64

  - default value: `1`

- weechat.look.time_format

  - description: time format for dates converted to strings and displayed in messages (see man strftime for date/time specifiers)

  - type: string

  - values: any string

  - default value: `"%a, %d %b %Y %T"`

- weechat.look.whitespace_char

  - description: char to display for spaces when whitespace mode is enabled with command `/debug whitespace`; width on screen must be exactly one char; see also option weechat.look.tab_whitespace_char

  - type: string

  - values: any string

  - default value: `"·"`

- weechat.look.window_auto_zoom

  - description: automatically zoom on current window if the terminal becomes too small to display all windows (use alt-z to unzoom windows when the terminal is big enough)

  - type: boolean

  - values: on, off

  - default value: `off`

- weechat.look.window_separator_horizontal

  - description: display an horizontal separator between windows

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.window_separator_vertical

  - description: display a vertical separator between windows

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.look.window_title

  - description: title for window (terminal for Curses GUI), set on startup; an empty string will keep title unchanged (note: content is evaluated, see /help eval); example: "WeeChat ${info:version}"

  - type: string

  - values: any string

  - default value: `""`

- weechat.look.word_chars_highlight

  - description: comma-separated list of chars (or range of chars) that are considered part of words for highlights; each item can be a single char, a range of chars (format: a-z), a class of wide character (for example "alnum", see man wctype); a "!" before the item makes it negative (ie the char is NOT considered part of words); the value "*" matches any char; unicode chars are allowed with the format \u1234, for example \u00A0 for unbreakable space (see /help print for supported formats)

  - type: string

  - values: any string

  - default value: `"!\u00A0,-,_,|,alnum"`

- weechat.look.word_chars_input

  - description: comma-separated list of chars (or range of chars) that are considered part of words for command line; each item can be a single char, a range of chars (format: a-z), a class of wide character (for example "alnum", see man wctype); a "!" before the item makes it negative (ie the char is NOT considered part of words); the value "*" matches any char; unicode chars are allowed with the format \u1234, for example \u00A0 for unbreakable space (see /help print for supported formats)

  - type: string

  - values: any string

  - default value: `"!\u00A0,-,_,|,alnum"`

- weechat.network.connection_timeout

  - description: timeout (in seconds) for connection to a remote host (made in a child process)

  - type: integer

  - values: 1 .. 2147483647

  - default value: `60`

- weechat.network.gnutls_ca_system

  - description: load system's default trusted certificate authorities on startup; this can be turned off to save some memory only if you are not using TLS connections at all

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.network.gnutls_ca_user

  - description: extra file(s) with certificate authorities; multiple files must be separated by colons (each path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `""`

- weechat.network.gnutls_handshake_timeout

  - description: timeout (in seconds) for gnutls handshake

  - type: integer

  - values: 1 .. 2147483647

  - default value: `30`

- weechat.network.proxy_curl

  - description: name of proxy used for download of URLs with Curl (used to download list of scripts and in scripts calling function hook_process); the proxy must be defined with command /proxy

  - type: string

  - values: any string

  - default value: `""`

- weechat.plugin.autoload

  - description: comma separated list of plugins to load automatically at startup, "*" means all plugins found, a name beginning with "!" is a negative value to prevent a plugin from being loaded, wildcard "*" is allowed in names (examples: "*" or "*,!lua,!tcl")

  - type: string

  - values: any string

  - default value: `"*"`

- weechat.plugin.extension

  - description: comma separated list of file name extensions for plugins

  - type: string

  - values: any string

  - default value: `".so,.dll"`

- weechat.plugin.path

  - description: path for searching plugins (path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `"${weechat_data_dir}/plugins"`

- weechat.plugin.save_config_on_unload

  - description: save configuration files when unloading plugins

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.signal.sighup

  - description: command to execute when the signal is received, multiple commands can be separated by semicolons (note: commands are evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `"${if:${info:weechat_headless}?/reload:/quit -yes}"`

- weechat.signal.sigquit

  - description: command to execute when the signal is received, multiple commands can be separated by semicolons (note: commands are evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `"/quit -yes"`

- weechat.signal.sigterm

  - description: command to execute when the signal is received, multiple commands can be separated by semicolons (note: commands are evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `"/quit -yes"`

- weechat.signal.sigusr1

  - description: command to execute when the signal is received, multiple commands can be separated by semicolons (note: commands are evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `""`

- weechat.signal.sigusr2

  - description: command to execute when the signal is received, multiple commands can be separated by semicolons (note: commands are evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `""`

- weechat.startup.command_after_plugins

  - description: command executed when WeeChat starts, after loading plugins; multiple commands can be separated by semicolons (note: commands are evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `""`

- weechat.startup.command_before_plugins

  - description: command executed when WeeChat starts, before loading plugins; multiple commands can be separated by semicolons (note: commands are evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `""`

- weechat.startup.display_logo

  - description: display WeeChat logo at startup

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.startup.display_version

  - description: display WeeChat version at startup

  - type: boolean

  - values: on, off

  - default value: `on`

- weechat.startup.sys_rlimit

  - description: set resource limits for WeeChat process, format is: "res1:limit1,res2:limit2"; resource name is the end of constant (RLIMIT_XXX) in lower case (see man setrlimit for values); limit -1 means "unlimited"; example: set unlimited size for core file and max 1GB of virtual memory: "core:-1,as:1000000000"

  - type: string

  - values: any string

  - default value: `""`

## 8. IRC

L’extension IRC permet de dialoguer avec d’autres personnes via le protocole IRC.

Elle est multi-serveurs, et offre toutes les commandes IRC supportées, y compris la discussion directe (DCC chat) et le transfert de fichier DCC (via l’extension xfer, voir extension Xfer).

### 8.1. Options de ligne de commande

Il est possible de passer une URL pour un ou plusieurs serveurs, comme suit :

    irc[6][s]://[pseudo[:mot_passe]@]irc.example.org[:port][/canal][,canal[...]]

Exemple pour rejoindre #weechat et #weechat-fr sur le serveur irc.libera.chat, port par défaut (6667), avec le pseudo alice :

    weechat irc://alice@irc.libera.chat/#weechat,#weechat-fr

### 8.2. Serveurs

#### Ajout d’un serveur

Par défaut aucun serveur n’est défini. Vous pouvez ajouter autant de serveurs que vous le souhaitez avec la commande /server.

Par exemple pour vous connecter à libera.chat ↗ avec TLS (communications chiffrées) :

    /server add libera irc.libera.chat

Note | Le port par défaut est 6697 et TLS (communications chiffrées) est activé.

Vous pouvez demander à WeeChat de se connecter automatiquement à ce serveur au démarrage :

    /set irc.server.libera.autoconnect on

Pour vous authentifier, il est recommandé d’utiliser SASL (si le serveur le supporte), avec le mot de passe stocké sous forme de donnée sécurisée (voir aussi le chapitre sur l’authentification avec SASL) :

    /set irc.server.libera.sasl_username "alice"
    /secure set libera xxxxxxx
    /set irc.server.libera.sasl_password "${sec.data.libera}"

Si SASL n’est pas supporté, vous pouvez utiliser une commande pour envoyer un message à nickserv :

    /set irc.server.libera.command "/msg nickserv identify ${sec.data.libera}"

Note | En envoyant une commande à nickserv, vous pourriez être authentifié après avoir rejoint les canaux, ce qui peut être un problème sur certains canaux qui vous obligent à être authentifié pour les rejoindre. Dans ce cas, vous pouvez définir un délai après la commande : `/set irc.server.libera.command_delay 5`.

#### Options du serveur

Les options du serveur sont nommées `irc.server.<serveur>.<option>` où `<serveur>` est le nom interne du serveur et `<option>` le nom de l’option.
La valeur d’une option de serveur est héritée de `irc.server_default.xxx` si l’option de serveur a la valeur spéciale `null`.

Par exemple si vous avez créé le serveur libera avec les commandes ci-dessus, vous verrez ceci avec la commande `/fset libera` :

    irc.server.libera.addresses             chaîne   "irc.libera.chat"
    irc.server.libera.anti_flood            entier   null -> 2000
    irc.server.libera.autoconnect           booléen  on
    irc.server.libera.autojoin              chaîne   null -> ""
    irc.server.libera.autojoin_delay        entier   null -> 0
    irc.server.libera.autojoin_dynamic      booléen  null -> off
    irc.server.libera.autoreconnect         booléen  null -> on
    irc.server.libera.autoreconnect_delay   entier   null -> 10
    irc.server.libera.autorejoin            booléen  null -> off
    irc.server.libera.autorejoin_delay      entier   null -> 30
    irc.server.libera.away_check            entier   null -> 0
    irc.server.libera.away_check_max_nicks  entier   null -> 25
    irc.server.libera.capabilities          chaîne   null -> "*"
    irc.server.libera.charset_message       énuméré  null -> message
    irc.server.libera.command               chaîne   null -> ""
    irc.server.libera.command_delay         entier   null -> 0
    irc.server.libera.connection_timeout    entier   null -> 60
    irc.server.libera.default_chantypes     chaîne   null -> "#&"
    irc.server.libera.ipv6                  énuméré  null -> auto
    irc.server.libera.local_hostname        chaîne   null -> ""
    irc.server.libera.msg_kick              chaîne   null -> ""
    irc.server.libera.msg_part              chaîne   null -> "WeeChat ${info:version}"
    irc.server.libera.msg_quit              chaîne   null -> "WeeChat ${info:version}"
    irc.server.libera.nicks                 chaîne   null -> "${username},${username}2,${username}3,${username}4,${username}5"
    irc.server.libera.nicks_alternate       booléen  null -> on
    irc.server.libera.notify                chaîne   null -> ""
    irc.server.libera.password              chaîne   null -> ""
    irc.server.libera.proxy                 chaîne   null -> ""
    irc.server.libera.realname              chaîne   null -> ""
    irc.server.libera.registered_mode       chaîne   null -> "r"
    irc.server.libera.sasl_fail             énuméré  null -> reconnect
    irc.server.libera.sasl_key              chaîne   null -> ""
    irc.server.libera.sasl_mechanism        énuméré  null -> plain
    irc.server.libera.sasl_password         chaîne   "${sec.data.libera}"
    irc.server.libera.sasl_timeout          entier   null -> 15
    irc.server.libera.sasl_username         chaîne   "alice"
    irc.server.libera.split_msg_max_length  entier   null -> 512
    irc.server.libera.tls                   booléen  null -> on
    irc.server.libera.tls_cert              chaîne   null -> ""
    irc.server.libera.tls_dhkey_size        entier   null -> 2048
    irc.server.libera.tls_fingerprint       chaîne   null -> ""
    irc.server.libera.tls_password          chaîne   null -> ""
    irc.server.libera.tls_priorities        chaîne   null -> "NORMAL"
    irc.server.libera.tls_verify            booléen  null -> on
    irc.server.libera.usermode              chaîne   null -> ""
    irc.server.libera.username              chaîne   null -> "${username}"

Par exemple si vous voulez vous connecter automatiquement à tous les serveurs que vous ajoutez sans avoir à le faire sur chaque serveur, vous pouvez faire :

    /set irc.server_default.autoconnect on

Et puis vous pouvez réinitialiser l’option du serveur pour qu’elle utilise la valeur héritée, qui est maintenant `on` au lieu de la valeur par défaut `off` :

    /unset irc.server.libera.autoconnect

#### Certificats TLS

Lors de la connexion à un serveur IRC avec TLS, WeeChat vérifie par défaut que la connexion est entièrement de confiance.

Quelques options sont utilisées pour contrôler la connexion TLS :

weechat.network.gnutls_ca_system

  charger les certificats des autorités de certification système au démarrage

weechat.network.gnutls_ca_user

  fichier(s) supplémentaire(s) avec des autorités de certification

irc.server.xxx.tls_cert

  fichier de certificat TLS utilisé pour authentifier automatiquement votre pseudo (par exemple CertFP sur oftc, voir ci-dessous)

irc.server.xxx.tls_dhkey_size

  taille de clé utilisée pour l’échange de clé Diffie-Hellman (par défaut : 2048)

irc.server.xxx.tls_verify

  vérifier que la connexion TLS est entièrement de confiance (activé par défaut)

Note | L’option "tls_verify" est activée par défaut, donc la vérification est stricte et peut échouer, même si cela pouvait être OK dans les versions inférieures à 0.3.1.

##### Premier exemple : se connecter à oftc en vérifiant le certificat

- Importer le certificat sous le shell :

    mkdir -p ~/.config/weechat/tls
    wget -O ~/.config/weechat/tls/CAs.pem https://www.spi-inc.org/ca/spi-cacert.crt

Note | Vous devez remplacer `~/.config/weechat` par le chemin vers votre répertoire de config WeeChat qui peut aussi être par exemple `~/.weechat`.

Note | Il est possible de concaténer plusieurs certificats dans le fichier CAs.pem.

- Sous WeeChat, avec le serveur "oftc" déjà ajouté :

    /connect oftc

##### Second exemple : se connecter à oftc en utilisant CertFP

- Créer le certificat sous le shell :

    mkdir -p ~/.config/weechat/tls
    cd ~/.config/weechat/tls
    openssl req -nodes -newkey rsa:2048 -keyout nick.pem -x509 -days 365 -out nick.pem

Note | Vous devez remplacer `~/.config/weechat` par le chemin vers votre répertoire de config WeeChat qui peut aussi être par exemple `~/.weechat`.

- Sous WeeChat, avec le serveur "oftc" déjà ajouté :

    /set irc.server.oftc.tls_cert "${weechat_config_dir}/tls/nick.pem"
    /connect oftc
    /msg nickserv cert add

Pour plus d’informations, merci de consulter cette page ↗.

#### Authentification avec SASL

WeeChat supporte l’authentification avec SASL, en utilisant différents mécanismes :

- plain : mot de passe en clair (par défaut)

- scram-sha-1 : SCRAM avec algorithme de hachage SHA-1

- scram-sha-256 : SCRAM avec algorithme de hachage SHA-256

- scram-sha-512 : SCRAM avec algorithme de hachage SHA-512

- ecdsa-nist256p-challenge : challenge avec clé publique/privée

- external : certificat TLS côté client

Les options dans le serveur sont :

- sasl_mechanism : mécanisme à utiliser (voir ci-dessus)

- sasl_timeout : délai d’attente maximum (en secondes) pour l’authentification

- sasl_fail : action à effectuer si l’authentification échoue

- sasl_username : nom d’utilisateur (pseudo)

- sasl_password : mot de passe

- sasl_key : fichier avec la clé privée ECC (pour le mécanisme ecdsa-nist256p-challenge)

##### SASL ECDSA-NIST256P-CHALLENGE

Vous devez générer une clé privée pour vous authentifier avec le mécanisme ECDSA-NIST256P-CHALLENGE (aucun mot de passe n’est requis lors de la connexion).

Vous pouvez générer la clé avec cette commande :

    openssl ecparam -genkey -name prime256v1 -out ~/.config/weechat/ecdsa.pem

Note | Vous devez remplacer `~/.config/weechat` par le chemin vers votre répertoire de config WeeChat qui peut aussi être par exemple `~/.weechat`.

Récupérez la clé publique (encodée en base64) avec cette commande :

    openssl ec -noout -text -conv_form compressed -in ~/.config/weechat/ecdsa.pem | grep '^pub:' -A 3 | tail -n 3 | tr -d ' \n:' | xxd -r -p | base64

Connectez-vous au serveur, identifiez vous (par exemple avec "nickserv identify") et définissez la clé publique dans votre compte, en utilisant nickserv (remplacez la valeur base64 par votre clé publique) :

    /connect libera
    /msg nickserv identify votre_mot_de_passe
    /msg nickserv set pubkey Av8k1FOGetUDq7sPMBfufSIZ5c2I/QYWgiwHtNXkVe/q

Configurez les options SASL dans le serveur :

    /set irc.server.libera.sasl_mechanism ecdsa-nist256p-challenge
    /set irc.server.libera.sasl_username "votre_pseudo"
    /set irc.server.libera.sasl_key "${weechat_config_dir}/ecdsa.pem"

Reconnectez-vous au serveur :

    /reconnect libera

#### Connexion

Vous pouvez vous connecter au serveur avec la commande /connect :

    /connect libera

Pour vous déconnecter :

    /disconnect libera

Ou juste ceci si vous être sur un tampon appartenant au serveur libera (serveur, canal, privé) :

    /disconnect

Lorsque vous vous connectez à plusieurs serveurs à la fois, les tampons des serveurs sont mélangés par défaut et vous pouvez basculer entre eux avec la touche `Ctrl`+`x`.
Il est possible de désactiver le mélange des tampons serveurs pour avoir un tampon distinct par serveur :

    /set irc.look.server_buffer independent

#### Connexion avec Tor et SASL

Quelques serveurs acceptent les connexions avec Tor ↗, un réseau de tunnels virtuels qui permet aux personnes et groupes d’améliorer leur vie privée et sécurité sur Internet.

En premier lieu, installez Tor. Pour Debian (et dérivés) :

    sudo apt-get install tor

Sous WeeChat vous devez ajouter un proxy socks5 pour le service Tor (le nom/IP et port dépend de votre configuration de Tor) :

    /proxy add tor socks5 127.0.0.1 9050

Maintenant, ajoutez un nouveau serveur (remplacez le nom du serveur "irc-tor" et l’adresse par une valide) :

    /server add irc-tor this.is.the.address.onion

Définissez le proxy pour Tor :

    /set irc.server.irc-tor.proxy "tor"

Définissez l’authentification SASL avec ECDSA-NIST256P-CHALLENGE (voir le chapitre SASL ECDSA-NIST256P-CHALLENGE pour générer une clé privée) :

    /set irc.server.irc-tor.sasl_mechanism ecdsa-nist256p-challenge
    /set irc.server.irc-tor.sasl_username "your_nickname"
    /set irc.server.irc-tor.sasl_key "${weechat_config_dir}/ecdsa.pem"

Et enfin, connectez-vous au serveur :

    /connect irc-tor

### 8.3. Support IRCv3

WeeChat supporte les extensions IRCv3 ↗ suivantes :

- account-notify

- account-tag

- away-notify

- batch

- cap-notify

- chghost

- draft/multiline

- echo-message

- extended-join

- invite-notify

- message-tags

- monitor

- multi-prefix

- SASL v3.2

- server-time

- setname

- typing

- userhost-in-names

- WHOX

Par défaut toutes les capacités supportées par le serveur et WeeChat sont automatiquement activées (voir l’option irc.server_default.capabilities).

Des tableaux avec une comparaison des différents clients IRC, incluant WeeChat, sont disponibles sur cette page ↗.

#### account-notify

Spécification : account-notify ↗

Cette capacité autorise le serveur à envoyer des messages lorsque les utilisateurs s’identifient ou perdent l’identification sur le serveur.
WeeChat affiche ces messages si l’option irc.look.display_account_message est activée (valeur par défaut).

Exemples :

    -- alice s'est identifié en tant que Alice01

    -- alice n'est plus identifié

#### account-tag

Spécification : account-tag ↗

Cette capacité autorise le serveur à envoyer le compte comme étiquette de message dans les commandes envoyées au client.
WeeChat extrait cette étiquette et la sauve dans le message, mais elle n’est pas utilisée ni affichée. Elle peut être utilisée dans la commande /filter pour filtrer les messages correspondants à des comptes spécifiques.

Exemple de message IRC brut reçu :

    @account=Alice01 :user@example.com PRIVMSG #test :Bonjour !

Message affiché dans le canal :

    <alice> Bonjour !

Message avec les étiquettes :

    <alice> Bonjour ! [irc_privmsg,irc_tag_account_Alice01,notify_message,prefix_nick_lightcyan,nick_alice,host_user@example.com,log1]

#### away-notify

Spécification : away-notify ↗

Cette capacité autorise le serveur à envoyer des notifications d’absence pour les utilisateurs qui sont sur les mêmes canaux que vous.

Lorsque le statut d’absence est changé pour un utilisateur (absent ou de retour), cela est reflété avec une couleur spécifique dans la liste des pseudos, en utilisant les options suivantes :

- irc.server_default.away_check

- irc.server_default.away_check_max_nicks

- weechat.look.item_away_message

#### batch

Spécification : batch ↗

Cette capacité autorise le serveur à envoyer des évènements "batch" (regroupement de plusieurs messages qui sont liés).

Pour l’instant, WeeChat stocke seulement ces messages reçus dans un "batch" et les traite plus tard comme d’habitude, lorsque le "batch" prend fin.

#### cap-notify

Spécification : cap-notify ↗

Cette capacité autorise le serveur à avertir des nouvelles capacités ou celles supprimées sur le serveur (via les commandes `CAP NEW` et `CAP DEL`).

Exemples :

    -- irc : client capability, maintenant disponible : sasl

    -- irc : client capability, supprimé : sasl

#### chghost

Spécification : chghost ↗

Cette capacité autorise le serveur à envoyer des messages lorsque les utilisateurs changent de nom ou d’hôte.
Lorsque l’option irc.look.smart_filter_chghost est activée (valeur par défaut), les changements d’hôtes sont automatiquement masqués si le pseudo n’a pas parlé pendant plusieurs minutes.
La couleur du message de changement d’hôte est contrôlée par l’option irc.color.message_chghost.

Exemple :

    -- alice (user@example.com) a changé d'hôte pour test.com

#### draft/multiline

Spécification : multiline ↗

Cette capacité autorise le client et le serveur à envoyer des messages avec plusieurs lignes, en utilisant la capacité batch, qui doit être activée également.

Il y a des limites en terme d’octets ou nombre de lignes dans un message multi-lignes qui sont données dans la capacité envoyée par le serveur, par exemple :

    CAP alice LS * :draft/multiline=max-bytes=4096,max-lines=24

Cela fixe la limite à 4096 octets et 24 lignes pour un contenu "batch" multi-lignes.

Si les limites ne sont pas envoyées par le serveur, celles par défaut dans WeeChat sont :

- max octets : 4096

- max lignes : 24

Seuls les messages standards et ceux envoyés avec la commande /notice peuvent être multi-lignes.
Les messages ACTION CTCP envoyés par avec la commande /me ne sont pas affectés par cette capacité. Cela signifie que les actions multi-lignes sont envoyées sous forme de plusieurs actions.

Avertissement

Comme la spécification est un brouillon (« draft »), elle peut changer et le support "multiline" peut être cassé à tout moment dans WeeChat.
La capacité est automatiquement activée si le serveur la supporte et peut être désactivée avec cette commande : `/set irc.server_default.capabilities "*,!draft/multiline"`.
Lorsque la capacité est désactivée, un message multi-lignes est envoyé sous forme de plusieurs messages, comme s’ils avaient été envoyés séquentiellement au serveur.

Exemple de messages IRC envoyés pour un message utilisateur avec deux lignes (`ceci est un test` / `sur deux lignes`), envoyé au canal #test :

    BATCH +i8Je7M7gquddoyC9 draft/multiline #test
    @batch=i8Je7M7gquddoyC9 PRIVMSG #test :ceci est un test
    @batch=i8Je7M7gquddoyC9 PRIVMSG #test :sur deux lignes
    BATCH -i8Je7M7gquddoyC9

Affichage du message envoyé dans WeeChat :

    19:01:45 alice | ceci est un test
                   | sur deux lignes

#### echo-message

Spécification : echo-message ↗

Cette capacité oblige le serveur à renvoyer les messages PRIVMSG, NOTICE et TAGMSG à WeeChat.

WeeChat affiche seulement le message reçu et non pas le message envoyé, donc un délai peut être perçu entre l’envoi et l’affichage. Lorsque le message est affiché, cela signifie qu’il a bien été reçu par le serveur et également propagé aux autres clients connectés sur le serveur.

#### extended-join

Spécification : extended-join ↗

Cette capacité autorise le serveur à envoyer le compte et nom réel lorsque les utilisateurs rejoignent les canaux.
WeeChat affiche les informations additionnelles dans les messages de "join" si l’option irc.look.display_extended_join est activée (valeur par défaut).

Exemple :

    --> john [John01] (John Doe) (~user@example.com) a rejoint #test

#### invite-notify

Spécification : invite-notify ↗

Cette capacité autorise le serveur à envoyer des messages d’invitation lorsque les utilisateurs sont invités sur des canaux.

Exemple :

    -- alice a invité bob sur #test

#### message-tags

Spécification : message-tags ↗

Cette capacité autorise l’envoi de méta-données dans les messages.
Ces étiquettes peuvent être affichées avec la commande `/debug tags`.

Elle doit être activée pour utiliser les notifications de saisie.

#### monitor

Spécification : monitor ↗

Cette capacité autorise le serveur à envoyer des notifications lorsque les clients se connectent ou se déconnectent.
WeeChat utilise automatiquement cette extension si disponible lorsque la commande /notify est utilisée.

#### multi-prefix

Spécification : multi-prefix ↗

Cette capacité autorise le serveur à envoyer tous les modes utilisateur d’un coup dans les réponses à /names et /whois.

Note | Pour l’instant, WeeChat n’affiche pas les préfixes dans la sortie de `/names`, même s’ils sont reçus et correctement sauvegardés en interne.

Exemple : sortie de `/whois alice` :

    -- [alice] @%+#test

#### SASL

Spécification : SASL 3.2 ↗

Voir le chapitre dédié Authentification avec SASL.

#### server-time

Spécification : server-time ↗

Cette capacité autorise le serveur à envoyer l’heure pour les messages sous forme d’étiquette de message.
Lorsque l’heure est reçue dans un message, WeeChat l’utilise pour afficher le message (qui peut alors avoir une date dans le passé).

Le proxy IRC dans l’extension Relay supporte cette capacité, donc tout client IRC de Relay devrait l’activer pour afficher l’heure réelle des messages dans l’historique des messages envoyés à la connexion.

#### setname

Spécification : setname ↗

Cette capacité vous permet de changer votre nom réel en utilisant la commande /setname.

#### typing

Spécification : typing ↗

Voir le chapitre dédié Notifications de saisie.

#### userhost-in-names

Spécification : userhost-in-names ↗

Cette capacité autorise le serveur à envoyer les noms d’hôtes dans les réponses à /names.

Note | WeeChat n’affiche pas les noms d’hôtes dans la sortie de `/names`.

Exemple de message IRC brut reçu sans la capacité :

    :irc.server 353 alice = #test :@alice bob +carol

Exemple de message IRC brut reçu avec la capacité :

    :irc.server 353 alice = #test :@alice!user1@host1 bob!user2@host2 +carol!user3@host3

#### WHOX

Spécification : WHOX ↗

Cette capacité vous permet de demander des champs additionnels dans la réponse WHO (via la commande /who).
WeeChat affiche ces informations additionnelles reçus dans la sortie de WHO.

### 8.4. Canaux

Vous pouvez rejoindre des canaux avec la commande /join :

    /join #canal

Quitter un canal (en laissant le tampon ouvert) :

    /part [message de fin]

Les canaux que vous rejoignez ne sont pas sauvegardés. Si vous souhaitez les rejoindre automatiquement à la connexion au serveur, vous devez définir l’option `autojoin` du serveur :

    /set irc.server.libera.autojoin "#weechat,#weechat-fr"

Note | Certains scripts peuvent aider pour définir automatiquement cette option, voir `/script search autojoin`.

Attention, les espaces ne peuvent être utilisés que pour séparer les canaux des clés, par exemple si `#canal1` requiert une clé mais pas `#canal2`:

    /set irc.server.libera.autojoin "#canal1,#canal2 cle1"

Pour de l’aide sur le format, voir l’option irc.server_default.autojoin.

### 8.5. Messages privés

Vous pouvez envoyer un message privé avec la commande /query, qui ouvre un tampon séparé :

    /query bob salut, comment vas-tu ?

Sans paramètre la commande ouvre juste le tampon (ou le sélectionne s’il est déjà ouvert) :

    /query bob

Pour fermer le tampon privé, vous pouvez utiliser cette commande sur le tampon privé :

    /close

### 8.6. Filtre intelligent

Un filtre intelligent est disponible pour filtrer certains messages lorsqu’une personne n’a rien écrit sur le canal durant un délai configurable :

- join : l’utilisateur rejoint le canal

- part : l’utilisateur quitte le canal

- quit : l’utilisateur quitte le serveur

- account : l’utilisateur change de compte

- chghost : l’utilisateur change son nom ou hôte

- mode : changements de modes sur le canal

- nick : l’utilisateur change son pseudo

- setname : l’utilisateur change son nom réel

Le filtre intelligent est activé par défaut, mais vous devez ajouter un filtre pour cacher les lignes sur les tampons, par exemple :

    /filter add irc_smart * irc_smart_filter *

Il est possible de créer un filtre pour un canal seulement ou plusieurs canaux commençant par le même nom (voir la commande /filter) :

    /filter add irc_smart_weechat irc.libera.#weechat* irc_smart_filter *

Vous pouvez définir un délai plus long (en minutes) :

    /set irc.look.smart_filter_delay 10

Si quelqu’un n’a rien écrit durant les 10 dernières minutes, ses messages comme les join/part/quit seront cachés par défaut sur le canal, et vous pouvez utiliser la touche `Alt`+`=` (activer/désactiver les filtres) pour les voir.

### 8.7. Réponses CTCP

Il est possible de personnaliser les réponses CTCP, ou de bloquer certaines demandes CTCP (ne pas y répondre).

Par exemple, pour personnaliser la réponse au CTCP "VERSION", utilisez la commande suivante :

    /set irc.ctcp.version "Je suis sous WeeChat ${version}, ça déchire !"

Note | Le nom du CTCP doit être en minuscules. Cela signifie que l’option irc.ctcp.VERSION ne fonctionnerait pas.

Si vous voulez bloquer le CTCP "VERSION" (ne pas répondre à une demande), alors affectez une chaîne vide :

    /set irc.ctcp.version ""

Même un CTCP inconnu peut être personnalisé, par exemple vous pouvez répondre au CTCP "BLABLA" :

    /set irc.ctcp.blabla "C'est ma réponse au CTCP BLABLA"

Il est possible de personnaliser le CTCP pour un seul serveur, en utilisant son nom interne avant le nom du CTCP :

    /set irc.ctcp.libera.version "WeeChat ${version} (pour libera)"

Si vous voulez restaurer la réponse CTCP standard, alors supprimez l’option :

    /unset irc.ctcp.version

Les réponses CTCP sont évaluées (voir la commande /eval) et les variables supplémentaires suivantes sont disponibles :

Variable | Description | Valeur / exemple
--- | --- | ---
`${clientinfo}` | Liste des CTCP supportés | `ACTION DCC CLIENTINFO PING SOURCE TIME VERSION`
`${version}` | Version de WeeChat | `4.1.0-dev`
`${versiongit}` | Version de WeeChat + version Git (1) | `4.1.0-dev (git: v4.0.0-51-g8f98b922a)`
`${git}` | Version Git (1) | `v4.0.0-51-g8f98b922a`
`${compilation}` | Date de compilation WeeChat | `Jul 8 2023 20:14:23`
`${osinfo}` | Information sur l’OS | `Linux 5.10.0-23-amd64 / x86_64`
`${site}` | Site WeeChat | `https://weechat.org/`
`${download}` | Site WeeChat, page téléchargement | `https://weechat.org/download/`
`${time}` | Date/heure courante | `Sat, 08 Jul 2023 21:11:19 +0200`
`${username}` | Nom d’utilisateur sur le serveur | `nom`
`${realname}` | Nom réel sur le serveur | `John Doe`

Note | (1) La version Git est la sortie de la commande `git describe`. Elle est connue seulement si WeeChat a été compilé dans le dépôt Git et si Git était installé.

Les réponses CTCP par défaut sont :

CTCP | Format de réponse | Exemple
--- | --- | ---
CLIENTINFO | `${clientinfo}` | `ACTION DCC CLIENTINFO PING SOURCE TIME VERSION`
SOURCE | `${download}` | `https://weechat.org/download/`
TIME | `${time}` | `Sat, 08 Jul 2023 21:11:19 +0200`
VERSION | `WeeChat ${version}` | `WeeChat 4.1.0-dev`

### 8.8. Tampon cible pour les messages IRC

Il est possible de personnaliser le tampon cible pour les messages IRC (le tampon utilisé pour afficher le message) avec les options `irc.msgbuffer.*`.

Pour certains messages IRC (voir la liste ci-dessous), vous pouvez utiliser la valeur :

current

  tampon courant (si c’est un tampon IRC, sinon sur le tampon du serveur)

private

  tampon privé pour le pseudo, ou le tampon courant s’il n’est pas trouvé (selon l’option irc.look.msgbuffer_fallback)

server

  tampon du serveur

weechat

  tampon "core" WeeChat

Lorsque l’option n’est pas définie (par défaut), WeeChat choisira le tampon approprié, généralement le tampon du serveur ou du canal.

Liste non exhaustive des messages ou alias que vous pouvez paramétrer :

message | alias | description
--- | --- | ---
`error` |  | erreur
`invite` |  | invité sur un canal
`join` |  | join
`kick` |  | kick
`kill` |  | kill
`mode` |  | mode
`notice` |  | notice
`part` |  | part
`quit` |  | quit
`topic` |  | topic
`wallops` |  | wallops
| `ctcp` | ctcp (envoyé ou reçu, dans un message privmsg ou notice)
`221` |  | chaîne de mode utilisateur
`275` | `whois` | whois (connexion sécurisée)
`301` | `whois` | whois (absent)
`303` |  | ison
`305` | `unaway` | non absent
`306` | `away` | absent
`307` | `whois` | whois (pseudo enregistré)
`310` | `whois` | whois (mode aide)
`311` | `whois` | whois (utilisateur)
`312` | `whois` | whois (serveur)
`313` | `whois` | whois (opérateur)
`314` | `whowas` | whowas
`315` | `who` | who (fin)
`317` | `whois` | whois (inactivité)
`318` | `whois` | whois (fin)
`319` | `whois` | whois (canaux)
`320` | `whois` | whois (utilisateur identifié)
`321` | `list` | list (début)
`322` | `list` | list (canal)
`323` | `list` | list (fin)
`326` | `whois` | whois (a les privilèges oper)
`327` | `whois` | whois (machine)
`328` |  | URL du canal
`329` |  | date de création du canal
`330` | `whois` | whois (identifié comme)
`331` |  | pas de titre ("topic") pour le canal
`332` |  | titre du canal ("topic")
`333` |  | infos sur le titre ("topic")
`335` | `whois` | whois (est un robot sur)
`338` | `whois` | whois (machine)
`341` |  | invitation
`343` | `whois` | whois (est opéré comme)
`344` | `reop` | reop canal
`345` | `reop` | reop canal (fin)
`346` | `invitelist` | liste des invitations
`347` | `invitelist` | liste des invitations (fin)
`348` | `exceptionlist` | liste des exceptions
`349` | `exceptionlist` | liste des exceptions (fin)
`351` |  | version du serveur
`352` | `who` | who
`353` | `names` | liste des utilisateurs sur le canal
`366` | `names` | fin de la liste /names
`367` | `banlist` | liste de bannissement
`368` | `banlist` | fin de la liste de bannissement
`369` | `whowas` | whowas (fin)
`378` | `whois` | whois (connexion depuis)
`379` | `whois` | whois (utilise les modes)
`401` | `whois` | pas de tel pseudo/canal
`402` | `whois` | pas de tel serveur
`432` |  | pseudo erroné
`433` |  | pseudo déjà en cours d’utilisation
`438` |  | pas autorisé à changer de pseudo
`671` | `whois` | whois (connexion sécurisée)
`728` | `quietlist` | liste des "quiet"
`729` | `quietlist` | fin de la liste des "quiet"
`732` | `monitor` | liste des pseudos surveillés
`733` | `monitor` | liste des pseudos surveillés (fin)
`901` |  | vous êtes maintenant identifié

Les autres messages numériques peuvent être paramétrés de la même manière.

Le message peut être préfixé par le nom du serveur pour être spécifique à un serveur IRC (par exemple: `libera.whois`).

Quelques exemples :

- Afficher le résultat de `/whois` sur le tampon privé :

    /set irc.msgbuffer.whois private

- Restaurer le tampon par défaut pour whois (tampon du serveur) :

    /unset irc.msgbuffer.whois

- Afficher une invitation sur le tampon courant, pour le serveur "libera" seulement :

    /set irc.msgbuffer.libera.invite current

- Afficher le message "303" (ison) sur le tampon "core" WeeChat :

    /set irc.msgbuffer.303 weechat

### 8.9. Commandes

- `action`: send a CTCP action to a nick or channel

    /action  [-server <server>] <target>[,<target>...] <text>

    server: send to this server (internal name)
    target: nick or channel (may be mask, "*" = current channel)
      text: text to send

- `admin`: find information about the administrator of the server

    /admin  [<target>]

    target: server name

- `allchan`: execute a command on all channels of all connected servers

    /allchan  [-current] [-parted|-all] [-exclude=<channel>[,<channel>...]] <command>
              [-current] [-parted|-all] -include=<channel>[,<channel>...] <command>

    -current: execute command for channels of current server only
     -parted: execute command on parted channels (by default: execute command on active channels only)
        -all: execute command on all channels (active and parted)
    -exclude: exclude some channels (wildcard "*" is allowed)
    -include: include only some channels (wildcard "*" is allowed)
     command: command to execute (or text to send to buffer if command does not start with "/")

    Command and arguments are evaluated (see /help eval), the following variables are replaced:
      $server: server name
      $channel: channel name
      $nick: nick on server
      ${irc_server.xxx}: variable xxx in server
      ${irc_channel.xxx}: variable xxx in channel

    Examples:
      execute "/me is testing" on all channels:
        /allchan /me is testing
      say "hello" everywhere but not on #weechat:
        /allchan -exclude=#weechat hello
      say "hello" everywhere but not on #weechat and channels beginning with #linux:
        /allchan -exclude=#weechat,#linux* hello
      say "hello" on all channels beginning with #linux:
        /allchan -include=#linux* hello
      close all buffers with parted channels:
        /allchan -parted /close

- `allpv`: execute a command on all private buffers of all connected servers

    /allpv  [-current] [-exclude=<nick>[,<nick>...]] <command>
            [-current] -include=<nick>[,<nick>...] <command>

    -current: execute command for private buffers of current server only
    -exclude: exclude some nicks (wildcard "*" is allowed)
    -include: include only some nicks (wildcard "*" is allowed)
     command: command to execute (or text to send to buffer if command does not start with "/")

    Command and arguments are evaluated (see /help eval), the following variables are replaced:
      $server: server name
      $channel: channel name
      $nick: nick on server
      ${irc_server.xxx}: variable xxx in server
      ${irc_channel.xxx}: variable xxx in channel

    Examples:
      execute "/me is testing" on all private buffers:
        /allpv /me is testing
      say "hello" everywhere but not for nick foo:
        /allpv -exclude=foo hello
      say "hello" everywhere but not for nick foo and nicks beginning with bar:
        /allpv -exclude=foo,bar* hello
      say "hello" for all nicks beginning with bar:
        /allpv -include=bar* hello
      close all private buffers:
        /allpv /close

- `allserv`: execute a command on all connected servers

    /allserv  [-exclude=<server>[,<server>...]] <command>
              -include=<server>[,<server>...] <command>

    -exclude: exclude some servers (wildcard "*" is allowed)
    -include: include only some servers (wildcard "*" is allowed)
     command: command to execute (or text to send to buffer if command does not start with "/")

    Command and arguments are evaluated (see /help eval), the following variables are replaced:
      $server: server name
      $nick: nick on server
      ${irc_server.xxx}: variable xxx in server

    Examples:
      change nick on all servers:
        /allserv /nick newnick
      do a whois on my nick on all servers:
        /allserv /whois $nick

- `auth`: authenticate with SASL

    /auth  [<username> <password>]

    username: SASL username (content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)
    password: SASL password or path to file with private key (content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

    If username and password are not provided, the values from server options "sasl_username" and "sasl_password" (or "sasl_key") are used.

    Examples:
      authenticate with username/password defined in the server:
        /auth
      authenticate as a different user:
        /auth user2 password2
      authenticate as a different user with mechanism ecdsa-nist256p-challenge:
        /auth user2 ${weechat_config_dir}/ecdsa2.pem

- `autojoin`: configure the "autojoin" server option

    /autojoin  add [<channel>...]
               addraw <channel1>[,<channel2>...] [<key1>[,<key2>...]]
               del [<channel>...]
               apply
               join
               sort [buffer]

        add: add current channel or a list of channels (with optional keys) to the autojoin option; if you are on the channel and the key is not provided, the key is read in the channel
     addraw: use the IRC raw format (same as /join command): all channels separated by commas, optional keys separated by commas
        del: delete current channel or a list of channels from the autojoin option
    channel: channel name
        key: key for the channel
      apply: set currently joined channels in the autojoin option
       join: join the channels in the autojoin option
       sort: sort alphabetically channels in the autojoin option; with "buffer": first sort by buffer number, then alphabetically

    Examples:
      /autojoin add
      /autojoin add #test
      /autojoin add #chan1 #chan2
      /allchan /autojoin add
      /autojoin addraw #chan1,#chan2,#chan3 key1,key2
      /autojoin del
      /autojoin del #chan1
      /autojoin apply
      /autojoin join
      /autojoin sort
      /autojoin sort buffer

- `ban`: ban nicks or hosts

    /ban  [<channel>] [<nick>...]

    channel: channel name
       nick: nick or host

    Without argument, this command displays the ban list for current channel.

- `cap`: client capability negotiation

    /cap  ls
          list
          req|ack [<capability>...]
          end

      ls: list the capabilities supported by the server
    list: list the capabilities currently enabled
     req: request a new capability or remove a capability (if starting with "-", for example: "-multi-prefix")
     ack: acknowledge capabilities which require client-side acknowledgement
     end: end the capability negotiation

    Without argument, "ls" and "list" are sent.

    Capabilities supported by WeeChat are: account-notify, account-tag, away-notify, batch, cap-notify, chghost, draft/multiline, echo-message, extended-join, invite-notify, message-tags, multi-prefix, server-time, setname, userhost-in-names.

    The capabilities to automatically enable on servers can be set in option irc.server_default.capabilities (or by server in option irc.server.xxx.capabilities).

    Examples:
      display supported and enabled capabilities:
        /cap
      request capabilities multi-prefix and away-notify:
        /cap req multi-prefix away-notify
      request capability extended-join, remove capability multi-prefix:
        /cap req extended-join -multi-prefix
      remove capability away-notify:
        /cap req -away-notify

- `connect`: connect to IRC server(s)

    /connect  [<server>...] [-<option>[=<value>]] [-no<option>] [-nojoin] [-switch]
              -all|-auto|-open [-nojoin] [-switch]

      server: server name, which can be:
              - internal server name (added by /server add, recommended usage)
              - hostname/port or IP/port, port is 6697 by default for TLS, 6667 otherwise
              - URL with format: irc[6][s]://[nickname[:password]@]irc.example.org[:port][/#channel1][,#channel2[...]]
              Note: for an address/IP/URL, a temporary server is added (NOT SAVED), see /help irc.look.temporary_servers
      option: set option for server (for boolean option, value can be omitted)
    nooption: set boolean option to "off" (for example: -notls)
        -all: connect to all servers defined in configuration
       -auto: connect to servers with autoconnect enabled
       -open: connect to all opened servers that are not currently connected
     -nojoin: do not join any channel (even if autojoin is enabled on server)
     -switch: switch to next server address

    To disconnect from a server or stop any connection attempt, use command /disconnect.

    Examples:
      /connect libera
      /connect irc.oftc.net
      /connect irc.oftc.net/6667 -notls
      /connect irc6.oftc.net/9999 -ipv6=force
      /connect my.server.org -password=test
      /connect irc://nick@irc.oftc.net/#channel
      /connect -switch

- `ctcp`: send a CTCP message (Client-To-Client Protocol)

    /ctcp  [-server <server>] <target>[,<target>...] <type> [<arguments>]

       server: send to this server (internal name)
       target: nick or channel ("*" = current channel)
         type: CTCP type (examples: "version", "ping", etc.)
    arguments: arguments for CTCP

    Examples:
      /ctcp toto time
      /ctcp toto version
      /ctcp * version

- `cycle`: leave and rejoin a channel

    /cycle  [<channel>[,<channel>...]] [<message>]

    channel: channel name
    message: part message (displayed to other users)

- `dcc`: start a DCC (passive file transfer or direct chat)

    /dcc  chat <nick>
          send <nick> <file>

    nick: nick
    file: filename (on local host)

    Examples:
      /dcc chat toto
      /dcc send toto /home/foo/bar.txt

- `dehalfop`: remove channel half-operator status from nick(s)

    /dehalfop  <nick>...
               * -yes

    nick: nick or mask (wildcard "*" is allowed)
       *: remove channel half-operator status from everybody on channel except yourself

- `deop`: remove channel operator status from nick(s)

    /deop  <nick>...
           * -yes

    nick: nick or mask (wildcard "*" is allowed)
       *: remove channel operator status from everybody on channel except yourself

- `devoice`: remove voice from nick(s)

    /devoice  <nick>...
              * -yes

    nick: nick or mask (wildcard "*" is allowed)
       *: remove voice from everybody on channel

- `die`: shutdown the server

    /die  [<target>]

    target: server name

- `disconnect`: disconnect from one or all IRC servers

    /disconnect  [<server>|-all|-pending [<reason>]]

      server: internal server name
        -all: disconnect from all servers
    -pending: cancel auto-reconnection on servers currently reconnecting
      reason: reason for the "quit"

- `halfop`: give channel half-operator status to nick(s)

    /halfop  <nick>...
             * -yes

    nick: nick or mask (wildcard "*" is allowed)
       *: give channel half-operator status to everybody on channel

- `ignore`: ignore nicks/hosts from servers or channels

    /ignore  list
             add|addreplace [re:]<nick> [<server> [<channel>]]
             del <number>|-all

          list: list all ignores
           add: add an ignore
    addreplace: add or replace an existing ignore
          nick: nick or hostname; can be a POSIX extended regular expression if "re:" is given or a mask using "*" to replace zero or more chars (the regular expression can start with "(?-i)" to become case-sensitive)
           del: delete an ignore
        number: number of ignore to delete (look at list to find it)
          -all: delete all ignores
        server: internal server name where ignore is working
       channel: channel name where ignore is working

    Note: if option irc.look.ignore_tag_messages is enabled, the ignored messages are just tagged with "irc_ignored" instead of being completely removed.

    Examples:
      /ignore add toto
      /ignore add toto@domain.com libera
      /ignore add toto*@*.domain.com libera #weechat

- `info`: get information describing the server

    /info  [<target>]

    target: server name

- `invite`: invite a nick on a channel

    /invite  <nick>... [<channel>]

       nick: nick
    channel: channel name

- `ison`: check if a nick is currently on IRC

    /ison  <nick>...

    nick: nick

- `join`: join a channel

    /join  [-noswitch] [-server <server>] [<channel1>[,<channel2>...]] [<key1>[,<key2>...]]

    -noswitch: do not switch to new buffer
       server: send to this server (internal name)
      channel: channel name
          key: key to join the channel (channels with a key must be the first in list)

    Examples:
      /join #weechat
      /join #protectedchan,#weechat key
      /join -server libera #weechat
      /join -noswitch #weechat

- `kick`: kick a user out of a channel

    /kick  [<channel>] <nick> [<reason>]

    channel: channel name
       nick: nick
     reason: reason (evaluated, see /help eval; special variables ${nick} (self nick), ${target} (target nick), ${channel} and ${server} are replaced by their values)

- `kickban`: kick a user out of a channel and ban the host

    /kickban  [<channel>] <nick> [<reason>]

    channel: channel name
       nick: nick
     reason: reason (evaluated, see /help eval; special variables ${nick} (self nick), ${target} (target nick), ${channel} and ${server} are replaced by their values)

    It is possible to kick/ban with a mask, nick will be extracted from mask and replaced by "*".

    Example:
      /kickban toto!*@host.com

- `kill`: close client-server connection

    /kill  <nick> [<reason>]

      nick: nick
    reason: reason

- `knock`: send a notice to an invitation-only channel, requesting an invite

    /knock  <channel> [<message>]

    channel: channel name
    message: message to send

- `links`: list all server names which are known by the server answering the query

    /links  [[<target>] <server_mask>]

         target: this remote server should answer the query
    server_mask: list of servers must match this mask

- `list`: list channels and their topics

    /list  [-server <server>] [<channel>[,<channel>...]] [<target>]
           [-server <server>] [-raw *|<regex>]
           -up|-down [<number>]
           -left|-right [<percent>]
           -go <line>|end
           -join
           -export <filename>

     server: send to this server (internal name)
    channel: channel name
     target: server name
       -raw: display result on server buffer instead of a dedicated buffer
      regex: POSIX extended regular expression used to filter results (case-insensitive, can start by "(?-i)" to become case-sensitive); the special value "*" doesn't filter results
        -up: move the selected line up by "number" lines
      -down: move the selected line down by "number" lines
      -left: scroll the buffer by "percent" of width on the left
     -right: scroll the buffer by "percent" of width on the right
        -go: select a line by number, first line number is 0 ("end" to select the last line)
      -join: join the channel on the selected line
    -export: export list of channels to a file

    For keys, input and mouse actions on the buffer, see key bindings in User's guide.

    Sort keys on /list buffer:
      name: channel name (eg: "##test")
      name2: channel name without prefix (eg: "test")
      users: number of users on channel
      topic: channel topic

    Examples:
      list all channels on server buffer (no dedicated buffer and can be slow on large networks):
        /list -raw *
      list all channels beginning with "#weechat" on server buffer (no dedicated buffer and can be slow on large networks):
        /list -raw #weechat.*
      list all channels on a dedicated buffer (can be slow on large networks):
        /list
      list channel #weechat on a dedicated buffer:
        /list #weechat
      on /list buffer:
        channels with "weechat" in name:
          n:weechat
        channels with at least 100 users:
          u:100
        channels with "freebsd" (case-insensitive) in topic and more than 10 users:
          c:${topic} =- freebsd && ${users} > 10
        sort channels by users (big channels first), then name2 (name without prefix):
          s:-users,name2

- `lusers`: get statistics about the size of the IRC network

    /lusers  [<mask> [<target>]]

      mask: servers matching the mask only
    target: server for forwarding request

- `map`: show a graphical map of the IRC network

- `me`: send a CTCP action to the current channel

    /me  <message>

    message: message to send

- `mode`: change channel or user mode

    /mode  [<channel>] [+|-]o|p|s|i|t|n|m|l|b|e|v|k [<arguments>]
           <nick> [+|-]i|s|w|o

    channel: channel name to modify (default is current one)

    Channel modes:
      o: give/take channel operator privileges
      p: private channel
      s: secret channel
      i: invite-only channel
      t: topic settable by channel operator only
      n: no messages to channel from clients on the outside
      m: moderated channel
      l: set the user limit to channel
      b: set a ban mask to keep users out
      e: set exception mask
      v: give/take the ability to speak on a moderated channel
      k: set a channel key (password)

    User modes:
      nick: nick to modify
      i: invisible
      s: user receives server notices
      w: user receives wallops
      o: operator

    List of modes is not comprehensive, you should read documentation about your server to see all possible modes.

    Examples:
      /mode #weechat +t
      /mode nick +i

- `motd`: get the "Message Of The Day"

    /motd  [<target>]

    target: server name

- `msg`: send message to a nick or channel

    /msg  [-server <server>] <target>[,<target>...] <text>

    server: send to this server (internal name)
    target: nick or channel (may be mask, "*" = current channel)
      text: text to send

- `names`: list nicks on channels

    /names  [-count | -x] [<channel>[,<channel>...]]

     -count: display only number of users
         -x: display only users with this mode: -o for ops, -h for halfops, -v for voiced, etc. and -* for regular users
    channel: channel name

- `nick`: change current nick

    /nick  [-all] <nick>

    -all: set new nick for all connected servers
    nick: new nick

- `notice`: send notice message to user

    /notice  [-server <server>] <target> <text>

    server: send to this server (internal name)
    target: nick or channel name
      text: text to send

- `notify`: add a notification for presence or away status of nicks on servers

    /notify  add|addreplace <nick> [<server> [-away]]
             del <nick>|-all [<server>]

           add: add a notification
    addreplace: add or replace a notification
          nick: nick
        server: internal server name (by default current server)
         -away: notify when away message is changed (by doing whois on nick)
           del: delete a notification
          -all: delete all notifications

    Without argument, this command displays notifications for current server (or all servers if command is issued on core buffer).

    Examples:
      /notify add toto
      /notify add toto libera
      /notify add toto libera -away

- `op`: give channel operator status to nick(s)

    /op  <nick>...
         * -yes

    nick: nick or mask (wildcard "*" is allowed)
       *: give channel operator status to everybody on channel

- `oper`: get operator privileges

    /oper  <user> <password>

        user: user
    password: password

- `part`: leave a channel

    /part  [<channel>[,<channel>...]] [<message>]

    channel: channel name
    message: part message (displayed to other users)

- `ping`: send a ping to server

    /ping  <target1> [<target2>]

    target1: server
    target2: forward ping to this server

- `pong`: answer to a ping message

    /pong  <daemon> [<daemon2>]

     daemon: daemon who has responded to Ping message
    daemon2: forward message to this daemon

- `query`: send a private message to a nick

    /query  [-noswitch] [-server <server>] <nick>[,<nick>...] [<text>]

    -noswitch: do not switch to new buffer
       server: send to this server (internal name)
         nick: nick
         text: text to send

- `quiet`: quiet nicks or hosts

    /quiet  [<channel>] [<nick>...]

    channel: channel name
       nick: nick or host

    Without argument, this command displays the quiet list for current channel.

- `quote`: send raw data to server without parsing

    /quote  [-server <server>] <data>

    server: send to this server (internal name)
      data: raw data to send

- `reconnect`: reconnect to server(s)

    /reconnect  <server>... [-nojoin] [-switch]
                -all [-nojoin] [-switch]

     server: internal server name
       -all: reconnect to all servers
    -nojoin: do not join any channel (even if autojoin is enabled on server)
    -switch: switch to next server address

- `rehash`: tell the server to reload its config file

    /rehash  [<option>]

    option: extra option, for some servers

- `remove`: force a user to leave a channel

    /remove  [<channel>] <nick> [<reason>]

    channel: channel name
       nick: nick
     reason: reason (special variables $nick, $channel and $server are replaced by their values)

- `restart`: tell the server to restart itself

    /restart  [<target>]

    target: server name

- `rules`: request the server rules

- `sajoin`: force a user to join channel(s)

    /sajoin  <nick> <channel>[,<channel>...]

       nick: nick
    channel: channel name

- `samode`: change mode on channel, without having operator status

    /samode  [<channel>] <mode>

    channel: channel name
       mode: mode for channel

- `sanick`: force a user to use another nick

    /sanick  <nick> <new_nick>

        nick: nick
    new_nick: new nick

- `sapart`: force a user to leave channel(s)

    /sapart  <nick> <channel>[,<channel>...]

       nick: nick
    channel: channel name

- `saquit`: force a user to quit server with a reason

    /saquit  <nick> <reason>

      nick: nick
    reason: reason

- `server`: list, add or remove IRC servers

    /server  list|listfull [-connected] [<name>]
             add|addreplace <name> <hostname>[/<port>] [-temp] [-<option>[=<value>]] [-no<option>]
             copy|rename <name> <new_name>
             reorder <name>...
             open <name>|-all [<name>...]
             del|keep <name>
             deloutq|jump
             raw [<filter>]

          list: list servers (without argument, this list is displayed)
      listfull: list servers with detailed info for each server
    -connected: list only connected servers
           add: add a new server
    addreplace: add or replace an existing server
          name: server name, for internal and display use; this name is used to connect to the server (/connect name) and to set server options: irc.server.name.xxx
      hostname: name or IP address of server, with optional port (default: 6697 for TLS, 6667 otherwise), many addresses can be separated by a comma
         -temp: add a temporary server (not saved)
        option: set option for server (for boolean option, value can be omitted)
      nooption: set boolean option to "off" (for example: -notls)
          copy: duplicate a server
        rename: rename a server
       reorder: reorder list of servers
          open: open the server buffer without connecting
          keep: keep server in config file (for temporary servers only)
           del: delete a server
       deloutq: delete messages out queue for all servers (all messages WeeChat is currently sending)
          jump: jump to server buffer
           raw: open buffer with raw IRC data
        filter: set a new filter to see only matching messages (this filter can be used as input in raw IRC data buffer as well); allowed formats are:
                `*`: show all messages (no filter)
                `xxx`: show only messages containing "xxx"
                `s:xxx`: show only messages for server "xxx"
                `f:xxx`: show only messages with a flag: recv (message received), sent (message sent), modified (message modified by a modifier), redirected (message redirected)
                `m:xxx`: show only IRC command "xxx"
                `c:xxx`: show only messages matching the evaluated condition "xxx", using following variables: output of function irc_message_parse (like nick, command, channel, text, etc., see function info_get_hashtable in plugin API reference for the list of all variables), date (format: "%FT%T.%f", see function util_strftimeval in Plugin API reference), server, recv, sent, modified, redirected

    Examples:
      /server listfull
      /server list -connected
      /server add libera irc.libera.chat
      /server add libera irc.libera.chat/6667 -notls -autoconnect
      /server add chatspike irc.chatspike.net/6667,irc.duckspike.net/6667 -notls
      /server copy libera libera-test
      /server rename libera-test libera2
      /server reorder libera2 libera
      /server del libera
      /server deloutq
      /server raw
      /server raw s:libera
      /server raw c:${recv} && ${command}==PRIVMSG && ${nick}==foo

- `service`: register a new service

    /service  <nick> <reserved> <distribution> <type> <reserved> <info>

    distribution: visibility of service
            type: reserved for future usage

- `servlist`: list services currently connected to the network

    /servlist  [<mask> [<type>]]

    mask: list only services matching this mask
    type: list only services of this type

- `setname`: set real name

    /setname  <realname>

    realname: new real name

- `squery`: deliver a message to a service

    /squery  <service> <text>

    service: name of service
       text: text to send

- `squit`: disconnect server links

    /squit  <target> <comment>

     target: server name
    comment: comment

- `stats`: query statistics about server

    /stats  [<query> [<target>]]

     query: c/h/i/k/l/m/o/y/u (see RFC1459)
    target: server name

- `summon`: give users who are on a host running an IRC server a message asking them to please join IRC

    /summon  <user> [<target> [<channel>]]

       user: username
     target: server name
    channel: channel name

- `time`: query local time from server

    /time  [<target>]

    target: query time from specified server

- `topic`: get/set channel topic

    /topic  [<channel>] [<topic>|-delete]

    channel: channel name
      topic: new topic
    -delete: delete channel topic

- `trace`: find the route to specific server

    /trace  [<target>]

    target: server name

- `unban`: unban nicks or hosts

    /unban  [<channel>] <nick>|<number>|<n1>-<n2>...

    channel: channel name
       nick: nick or host
     number: ban number (as displayed by command /ban)
         n1: interval start number
         n2: interval end number

- `unquiet`: unquiet nicks or hosts

    /unquiet  [<channel>] <nick>|<number>|<n1>-<n2>...

    channel: channel name
       nick: nick or host
     number: quiet number (as displayed by command /quiet)
         n1: interval start number
         n2: interval end number

- `userhost`: return a list of information about nicks

    /userhost  <nick>...

    nick: nick

- `users`: list of users logged into the server

    /users  [<target>]

    target: server name

- `version`: give the version info of nick or server (current or specified)

    /version  [<target>|<nick>]

    target: server name
      nick: nick

- `voice`: give voice to nick(s)

    /voice  <nick>...
            * -yes

    nick: nick or mask (wildcard "*" is allowed)
       *: give voice to everybody on channel

- `wallchops`: send a notice to channel ops

    /wallchops  [<channel>] <text>

    channel: channel name
       text: text to send

- `wallops`: send a message to all currently connected users who have set the "w" user mode for themselves

    /wallops  <text>

    text: text to send

- `who`: generate a query which returns a list of information

    /who  [<mask> [o]]

    mask: only information which match this mask
       o: only operators are returned according to the mask supplied

- `whois`: query information about user(s)

    /whois  [<target>] [<nick>[,<nick>...]]

    target: server name
      nick: nick (may be a mask)

    Without argument, this command will do a whois on:
      - your own nick if buffer is a server/channel
      - remote nick if buffer is a private.

    If option irc.network.whois_double_nick is enabled, two nicks are sent (if only one nick is given), to get idle time in answer.

- `whowas`: ask for information about a nick which no longer exists

    /whowas  <nick>[,<nick>...] [<count> [<target>]]

      nick: nick
     count: number of replies to return (full search if negative number)
    target: reply should match this mask

### 8.10. Options

Sections dans le fichier irc.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set irc.look.*` | Aspect/présentation.
`color` | `/set irc.color.*` | Couleurs.
`network` | `/set irc.network.*` | Options réseau.
`msgbuffer` | `/set irc.msgbuffer.*` | Tampon cible pour les messages IRC (les options peuvent être ajoutées/supprimées dans la section).
`ctcp` | `/set irc.ctcp.*` | Réponses CTCP (les options peuvent être ajoutées/supprimées dans la section).
`ignore` | `/ignore` | Personnes ignorées.
`server_default` | `/set irc.server_default.*` | Valeurs par défaut pour serveurs (les options peuvent être ajoutées/supprimées dans la section).
`server` | `/server /set irc.server.*` | Serveurs.

Options :

- irc.color.input_nick

  - description: color for nick in input bar

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightcyan`

- irc.color.item_lag_counting

  - description: color for lag indicator, when counting (pong not received from server, lag is increasing)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- irc.color.item_lag_finished

  - description: color for lag indicator, when pong has been received from server

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- irc.color.item_nick_modes

  - description: color for nick modes in bar item "input_prompt"

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- irc.color.item_tls_version_deprecated

  - description: color for deprecated TLS versions in bar item "tls_version"

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- irc.color.item_tls_version_insecure

  - description: color for insecure TLS versions in bar item "tls_version"

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `red`

- irc.color.item_tls_version_ok

  - description: color for higher supported TLS version in bar item "tls_version"

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- irc.color.list_buffer_line_selected

  - description: color for selected line on /list buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- irc.color.list_buffer_line_selected_bg

  - description: background color for selected line on /list buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `24`

- irc.color.message_account

  - description: color for text in account messages

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- irc.color.message_chghost

  - description: color for text in "chghost" messages

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- irc.color.message_join

  - description: color for text in join messages

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- irc.color.message_kick

  - description: color for text in kick/kill messages

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `red`

- irc.color.message_quit

  - description: color for text in part/quit messages

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `red`

- irc.color.message_setname

  - description: color for text in "setname" messages

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- irc.color.mirc_remap

  - description: remap mirc colors in messages using a hashtable (used only for standard colors, not RGB colors): keys are "fg,bg" as integers between -1 (not specified) and 15, values are WeeChat color names or numbers (format is: "1,-1:color1;2,7:color2"), example: "1,-1:darkgray;1,2:white,blue" to remap black to "darkgray" and black on blue to "white,blue"; default WeeChat colors for IRC codes: 0=white, 1=black, 2=blue, 3=green, 4=lightred, 5=red, 6=magenta, 7=brown, 8=yellow, 9=lightgreen, 10=cyan, 11=lightcyan, 12=lightblue, 13=lightmagenta, 14=darkgray, 15=gray

  - type: string

  - values: any string

  - default value: `"1,-1:darkgray"`

- irc.color.nick_prefixes

  - description: color for nick prefixes using mode char (o=op, h=halfop, v=voice, ..), format is: "o:color1;h:color2;v:color3" (if a mode is not found, WeeChat will try with next modes received from server ("PREFIX"); a special mode "*" can be used as default color if no mode has been found in list)

  - type: string

  - values: any string

  - default value: `"y:lightred;q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"`

- irc.color.notice

  - description: color for text "Notice" in notices

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- irc.color.reason_kick

  - description: color for reason in kick/kill messages

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- irc.color.reason_quit

  - description: color for reason in part/quit messages

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `244`

- irc.color.term_remap

  - description: remap terminal color numbers in messages using a hashtable (used only for RGB colors as hexadecimal, which are first translated to terminal color numbers): keys are "fg,bg" as integers between -1 (not specified) and 255, values are WeeChat color names or numbers (format is: "1,-1:color1;2,7:color2"), example: "0,-1:darkgray;0,90:white,blue" to remap black to "darkgray" and black on dark magenta to "white,blue"

  - type: string

  - values: any string

  - default value: `"0,-1:darkgray"`

- irc.color.topic_current

  - description: color for current channel topic (when joining a channel or using /topic)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- irc.color.topic_new

  - description: color for new channel topic (when topic is changed)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `36`

- irc.color.topic_old

  - description: color for old channel topic (when topic is changed)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `244`

- irc.ctcp.clientinfo

  - description: format for CTCP reply or empty string for blocking CTCP (no reply); content is evaluated, see /help eval; following variables are replaced: ${clientinfo}: list of supported CTCP, ${version}: WeeChat version, ${git}: Git version, ${versiongit}: WeeChat version and Git version, ${compilation}: compilation date, ${osinfo}: info about OS, ${site}: WeeChat site, ${download}: WeeChat site, download page, ${time}: current date and time as text, ${username}: username on server, ${realname}: realname on server

  - type: string

  - values: any string

  - default value: `"${clientinfo}"`

- irc.ctcp.source

  - description: format for CTCP reply or empty string for blocking CTCP (no reply); content is evaluated, see /help eval; following variables are replaced: ${clientinfo}: list of supported CTCP, ${version}: WeeChat version, ${git}: Git version, ${versiongit}: WeeChat version and Git version, ${compilation}: compilation date, ${osinfo}: info about OS, ${site}: WeeChat site, ${download}: WeeChat site, download page, ${time}: current date and time as text, ${username}: username on server, ${realname}: realname on server

  - type: string

  - values: any string

  - default value: `"${download}"`

- irc.ctcp.time

  - description: format for CTCP reply or empty string for blocking CTCP (no reply); content is evaluated, see /help eval; following variables are replaced: ${clientinfo}: list of supported CTCP, ${version}: WeeChat version, ${git}: Git version, ${versiongit}: WeeChat version and Git version, ${compilation}: compilation date, ${osinfo}: info about OS, ${site}: WeeChat site, ${download}: WeeChat site, download page, ${time}: current date and time as text, ${username}: username on server, ${realname}: realname on server

  - type: string

  - values: any string

  - default value: `"${time}"`

- irc.ctcp.version

  - description: format for CTCP reply or empty string for blocking CTCP (no reply); content is evaluated, see /help eval; following variables are replaced: ${clientinfo}: list of supported CTCP, ${version}: WeeChat version, ${git}: Git version, ${versiongit}: WeeChat version and Git version, ${compilation}: compilation date, ${osinfo}: info about OS, ${site}: WeeChat site, ${download}: WeeChat site, download page, ${time}: current date and time as text, ${username}: username on server, ${realname}: realname on server

  - type: string

  - values: any string

  - default value: `"WeeChat ${version}"`

- irc.look.buffer_open_before_autojoin

  - description: open channel buffer before the JOIN is received from server when it is auto joined (with server option "autojoin"); this is useful to open channels with always the same buffer numbers on startup

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.buffer_open_before_join

  - description: open channel buffer before the JOIN is received from server when it is manually joined (with /join command)

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.buffer_switch_autojoin

  - description: auto switch to channel buffer when it is auto joined (with server option "autojoin")

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.buffer_switch_join

  - description: auto switch to channel buffer when it is manually joined (with /join command)

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.color_nicks_in_names

  - description: use nick color in output of /names (or list of nicks displayed when joining a channel)

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.color_nicks_in_nicklist

  - description: use nick color in nicklist

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.color_nicks_in_server_messages

  - description: use nick color in messages from server

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.color_pv_nick_like_channel

  - description: use same nick color for channel and private

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.ctcp_time_format

  - description: time format used in answer to message CTCP TIME (see man strftime for date/time specifiers, extra specifiers are supported, see function util_strftimeval in Plugin API reference)

  - type: string

  - values: any string

  - default value: `"%a, %d %b %Y %T %z"`

- irc.look.display_account_message

  - description: display ACCOUNT messages received when capability account-notify is enabled

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_away

  - description: display message when (un)marking as away (off: do not display/send anything, local: display locally, channel: send action to channels)

  - type: enum

  - values: off, local, channel

  - default value: `local`

- irc.look.display_ctcp_blocked

  - description: display CTCP message even if it is blocked

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_ctcp_reply

  - description: display CTCP reply sent by WeeChat

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_ctcp_unknown

  - description: display CTCP message even if it is unknown CTCP

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_extended_join

  - description: display extra information in the JOIN messages: account name and real name (capability extended-join must be enabled)

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_host_join

  - description: display host in join messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_host_join_local

  - description: display host in join messages from local client

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_host_notice

  - description: display host in notice messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_host_quit

  - description: display host in part/quit messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_host_wallops

  - description: display host in wallops messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_join_message

  - description: comma-separated list of messages to display after joining a channel: 324 = channel modes, 329 = channel creation date, 332 = topic, 333 = nick/date for topic, 353 = names on channel, 366 = names count

  - type: string

  - values: any string

  - default value: `"329,332,333,366"`

- irc.look.display_old_topic

  - description: display old topic when channel topic is changed

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_pv_away_once

  - description: display remote away message only once in private

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_pv_back

  - description: display a message in private when user is back (after quit on server)

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_pv_nick_change

  - description: display nick change in private

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.display_pv_warning_address

  - description: display a warning in private buffer if the address of remote nick has changed; this option is disabled by default because servers like bitlbee are causing this warning to be displayed when it is not expected (the address of remote nick changes multiple times on login)

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.highlight_channel

  - description: comma separated list of words to highlight in channel buffers (case-insensitive, use "(?-i)" at beginning of words to make them case-sensitive; special variables $nick, $channel and $server are replaced by their values), these words are added to buffer property "highlight_words" only when buffer is created (it does not affect current buffers), an empty string disables default highlight on nick, examples: "$nick", "(?-i)$nick"

  - type: string

  - values: any string

  - default value: `"$nick"`

- irc.look.highlight_pv

  - description: comma separated list of words to highlight in private buffers (case-insensitive, use "(?-i)" at beginning of words to make them case-sensitive; special variables $nick, $channel and $server are replaced by their values), these words are added to buffer property "highlight_words" only when buffer is created (it does not affect current buffers), an empty string disables default highlight on nick, examples: "$nick", "(?-i)$nick"

  - type: string

  - values: any string

  - default value: `"$nick"`

- irc.look.highlight_server

  - description: comma separated list of words to highlight in server buffers (case-insensitive, use "(?-i)" at beginning of words to make them case-sensitive; special variables $nick, $channel and $server are replaced by their values), these words are added to buffer property "highlight_words" only when buffer is created (it does not affect current buffers), an empty string disables default highlight on nick, examples: "$nick", "(?-i)$nick"

  - type: string

  - values: any string

  - default value: `"$nick"`

- irc.look.highlight_tags_restrict

  - description: restrict highlights to these tags on irc buffers (to have highlight on user messages but not server messages); tags must be separated by a comma and "+" can be used to make a logical "and" between tags; wildcard "*" is allowed in tags; an empty value allows highlight on any tag

  - type: string

  - values: any string

  - default value: `"irc_privmsg,irc_notice"`

- irc.look.ignore_tag_messages

  - description: add tag "irc_ignored" in ignored messages instead of removing them; that way messages can be filtered with /filter command and toggled on-demand

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.item_channel_modes_hide_args

  - description: hide channel modes arguments if at least one of these modes is in channel modes ("*" to always hide all arguments, empty value to never hide arguments); example: "kf" to hide arguments if "k" or "f" are in channel modes

  - type: string

  - values: any string

  - default value: `"k"`

- irc.look.item_display_server

  - description: name of bar item where IRC server is displayed (for status bar)

  - type: enum

  - values: buffer_plugin, buffer_name

  - default value: `buffer_plugin`

- irc.look.item_nick_modes

  - description: display nick modes in bar item "input_prompt"

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.item_nick_prefix

  - description: display nick prefix in bar item "input_prompt"

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.join_auto_add_chantype

  - description: automatically add channel type in front of channel name on command /join if the channel name does not start with a valid channel type for the server; for example: "/join weechat" will in fact send: "/join #weechat"

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.list_buffer

  - description: use a dedicated buffer for the output of /list

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.list_buffer_format_export

  - description: format of each channel exported in a file (note: content is evaluated, see /help list)

  - type: string

  - values: any string

  - default value: `"${name} (${users}): \"${topic}\""`

- irc.look.list_buffer_scroll_horizontal

  - description: left/right scroll in /list buffer (percent of width)

  - type: integer

  - values: 1 .. 100

  - default value: `10`

- irc.look.list_buffer_sort

  - description: comma-separated list of fields to sort channels (see /help list for a list of fields); char "-" can be used before field to reverse order, char "~" can be used to do a case-insensitive comparison; example: "-count,~name" for biggest channels first then case-insensitive sort on name

  - type: string

  - values: any string

  - default value: `"~name2"`

- irc.look.list_buffer_topic_strip_colors

  - description: strip channel topic colors in /list buffer

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.msgbuffer_fallback

  - description: default target buffer for msgbuffer options when target is private and that private buffer is not found

  - type: enum

  - values: current, server

  - default value: `current`

- irc.look.new_channel_position

  - description: force position of new channel in list of buffers (none = default position (should be last buffer), next = current buffer + 1, near_server = after last channel/pv of server)

  - type: enum

  - values: none, next, near_server

  - default value: `none`

- irc.look.new_list_position

  - description: force position of new /list buffer in list of buffers (none = default position (should be last buffer), next = current buffer + 1, near_server = after last channel/pv of server)

  - type: enum

  - values: none, next, near_server

  - default value: `none`

- irc.look.new_pv_position

  - description: force position of new private in list of buffers (none = default position (should be last buffer), next = current buffer + 1, near_server = after last channel/pv of server)

  - type: enum

  - values: none, next, near_server

  - default value: `none`

- irc.look.nick_completion_smart

  - description: smart completion for nicks (completes first with last speakers): speakers = all speakers (including highlights), speakers_highlights = only speakers with highlight

  - type: enum

  - values: off, speakers, speakers_highlights

  - default value: `speakers`

- irc.look.nick_mode

  - description: display nick mode (op, voice, ...) before nick (none = never, prefix = in prefix only (default), action = in action messages only, both = prefix + action messages)

  - type: enum

  - values: none, prefix, action, both

  - default value: `prefix`

- irc.look.nick_mode_empty

  - description: display a space if nick mode is enabled but nick has no mode (not op, voice, ...)

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.nicks_hide_password

  - description: comma separated list of nicks for which passwords will be hidden when a message is sent, for example to hide password in message displayed by "/msg nickserv identify password", example: "nickserv,nickbot"

  - type: string

  - values: any string

  - default value: `"nickserv"`

- irc.look.notice_as_pv

  - description: display notices as private messages (if auto, use private buffer if found)

  - type: enum

  - values: auto, never, always

  - default value: `auto`

- irc.look.notice_nicks_disable_notify

  - description: comma separated list of nicks for which notifications are disabled in notice messages (comparison is case-insensitive)

  - type: string

  - values: any string

  - default value: `"chanserv,nickserv"`

- irc.look.notice_welcome_redirect

  - description: automatically redirect channel welcome notices to the channel buffer; such notices have the nick as target but a channel name in beginning of notice message, for example the ENTRYMSG notices sent by Atheme IRC Services which look like: "[#channel] Welcome to this channel..."

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.notice_welcome_tags

  - description: comma separated list of tags used in a welcome notices redirected to a channel, for example: "notify_private"

  - type: string

  - values: any string

  - default value: `""`

- irc.look.notify_tags_ison

  - description: comma separated list of tags used in messages displayed by notify when a nick joins or quits server (result of command ison or monitor), for example: "notify_message", "notify_private" or "notify_highlight"

  - type: string

  - values: any string

  - default value: `"notify_message"`

- irc.look.notify_tags_whois

  - description: comma separated list of tags used in messages displayed by notify when a nick away status changes (result of command whois), for example: "notify_message", "notify_private" or "notify_highlight"

  - type: string

  - values: any string

  - default value: `"notify_message"`

- irc.look.open_pv_buffer_echo_msg

  - description: open a private buffer on self message when capability echo-message is enabled

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.part_closes_buffer

  - description: close buffer when /part is issued on a channel

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.pv_buffer

  - description: merge private buffers

  - type: enum

  - values: independent, merge_by_server, merge_all

  - default value: `independent`

- irc.look.pv_tags

  - description: comma separated list of tags used in private messages, for example: "notify_message", "notify_private" or "notify_highlight"

  - type: string

  - values: any string

  - default value: `"notify_private"`

- irc.look.raw_messages

  - description: number of raw messages to save in memory when raw data buffer is closed (messages will be displayed when opening raw data buffer)

  - type: integer

  - values: 0 .. 65535

  - default value: `256`

- irc.look.server_buffer

  - description: merge server buffers; this option has no effect if a layout is saved and is conflicting with this value (see /help layout)

  - type: enum

  - values: merge_with_core, merge_without_core, independent

  - default value: `merge_with_core`

- irc.look.smart_filter

  - description: filter join/part/quit/nick messages for a nick if not speaking for some minutes on channel (you must create a filter on tag "irc_smart_filter", see /help filter)

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.smart_filter_account

  - description: enable smart filter for "account" messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.smart_filter_chghost

  - description: enable smart filter for "chghost" messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.smart_filter_delay

  - description: delay for filtering join/part/quit messages (in minutes): if the nick did not speak during the last N minutes, the join/part/quit is filtered

  - type: integer

  - values: 1 .. 10080

  - default value: `5`

- irc.look.smart_filter_join

  - description: enable smart filter for "join" messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.smart_filter_join_unmask

  - description: delay for unmasking a join message that was filtered with tag "irc_smart_filter" (in minutes): if a nick has joined max N minutes ago and then says something on channel (message, notice or update on topic), the join is unmasked, as well as nick changes after this join (0 = disable: never unmask a join)

  - type: integer

  - values: 0 .. 10080

  - default value: `30`

- irc.look.smart_filter_mode

  - description: enable smart filter for "mode" messages: "*" to filter all modes, "+" to filter all modes in server prefixes (for example "ovh"), "xyz" to filter only modes x/y/z, "-xyz" to filter all modes but not x/y/z; examples: "ovh": filter modes o/v/h, "-bkl": filter all modes but not b/k/l

  - type: string

  - values: any string

  - default value: `""+`

- irc.look.smart_filter_nick

  - description: enable smart filter for "nick" messages (nick changes)

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.smart_filter_quit

  - description: enable smart filter for "part" and "quit" messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.smart_filter_setname

  - description: enable smart filter for "setname" messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.look.temporary_servers

  - description: enable automatic addition of temporary servers with command /connect

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.topic_strip_colors

  - description: strip colors in topic (used only when displaying buffer title)

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.typing_status_nicks

  - description: display nicks typing on the channel in bar item "typing" (option typing.look.enabled_nicks must be enabled and capability "message-tags" must be enabled on the server)

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.look.typing_status_self

  - description: send self typing status to channels so that other users see when you are typing a message (option typing.look.enabled_self must be enabled and capability "message-tags" must be enabled on the server)

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.network.autoreconnect_delay_growing

  - description: growing factor for autoreconnect delay to server (1 = always same delay, 2 = delay*2 for each retry, etc.)

  - type: integer

  - values: 1 .. 100

  - default value: `2`

- irc.network.autoreconnect_delay_max

  - description: maximum autoreconnect delay to server (in seconds, 0 = no maximum)

  - type: integer

  - values: 0 .. 604800

  - default value: `600`

- irc.network.ban_mask_default

  - description: default ban mask for commands /ban, /unban and /kickban; variables $nick, $user, $ident and $host are replaced by their values (extracted from "nick!user@host"); $ident is the same as $user if $user does not start with "~", otherwise it is set to "*"; this default mask is used only if WeeChat knows the host for the nick

  - type: string

  - values: any string

  - default value: `"*!$ident@$host"`

- irc.network.colors_receive

  - description: when off, colors codes are ignored in incoming messages

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.network.colors_send

  - description: allow user to send colors with special codes (ctrl-c + a code and optional color: b=bold, cxx=color, cxx,yy=color+background, i=italic, o=disable color/attributes, r=reverse, u=underline)

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.network.lag_check

  - description: interval between two checks for lag (in seconds, 0 = never check)

  - type: integer

  - values: 0 .. 604800

  - default value: `60`

- irc.network.lag_max

  - description: maximum lag (in seconds): if this lag is reached, WeeChat will consider that the answer from server (pong) will never be received and will give up counting the lag (0 = never give up)

  - type: integer

  - values: 0 .. 604800

  - default value: `1800`

- irc.network.lag_min_show

  - description: minimum lag to show (in milliseconds)

  - type: integer

  - values: 0 .. 86400000

  - default value: `500`

- irc.network.lag_reconnect

  - description: reconnect to server if lag is greater than or equal to this value (in seconds, 0 = never reconnect); this value must be less than or equal to irc.network.lag_max

  - type: integer

  - values: 0 .. 604800

  - default value: `300`

- irc.network.lag_refresh_interval

  - description: interval between two refreshes of lag item, when lag is increasing (in seconds)

  - type: integer

  - values: 1 .. 3600

  - default value: `1`

- irc.network.notify_check_ison

  - description: interval between two checks for notify with IRC command "ison" (in minutes)

  - type: integer

  - values: 1 .. 10080

  - default value: `1`

- irc.network.notify_check_whois

  - description: interval between two checks for notify with IRC command "whois" (in minutes)

  - type: integer

  - values: 1 .. 10080

  - default value: `5`

- irc.network.sasl_fail_unavailable

  - description: cause SASL authentication failure when SASL is requested but unavailable on the server; when this option is enabled, it has effect only if option "sasl_fail" is set to "reconnect" or "disconnect" in the server

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.network.send_unknown_commands

  - description: send unknown commands to server

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.network.whois_double_nick

  - description: double the nick in /whois command (if only one nick is given), to get idle time in answer; for example: "/whois nick" will send "whois nick nick"

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.server_default.addresses

  - description: list of hostname/port or IP/port for server (separated by comma) (note: content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.anti_flood

  - description: delay in milliseconds between two messages sent to server (anti-flood protection); 0 = disable protection and always send messages immediately (not recommended because the server can close the connection if you send several messages in a short time); internally there are queues with different priorities: when connecting to the server all messages are sent immediately and your messages have higher priority than some automatic messages that are sent in background by WeeChat

  - type: integer

  - values: 0 .. 60000

  - default value: `2000`

- irc.server_default.autoconnect

  - description: automatically connect to server when WeeChat is starting

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.server_default.autojoin

  - description: comma separated list of channels to join after connection to server (and after executing command + delay if they are set); the channels that require a key must be at beginning of the list, and all the keys must be given after the channels (separated by a space) (example: "#channel1,#channel2,#channel3 key1,key2" where #channel1 and #channel2 are protected by key1 and key2) (note: content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.autojoin_delay

  - description: delay (in seconds) before auto-join of channels (example: give some time for authentication before joining channels)

  - type: integer

  - values: 0 .. 3600

  - default value: `0`

- irc.server_default.autojoin_dynamic

  - description: set automatically the "autojoin" option according to the channels you manually join and part with commands /join and /part

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.server_default.autoreconnect

  - description: automatically reconnect to server when disconnected

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.server_default.autoreconnect_delay

  - description: delay (in seconds) before trying again to reconnect to server

  - type: integer

  - values: 1 .. 65535

  - default value: `10`

- irc.server_default.autorejoin

  - description: automatically rejoin channels after kick; you can define a buffer local variable on a channel to override this value (name of variable: "autorejoin", value: "on" or "off")

  - type: boolean

  - values: on, off

  - default value: `off`

- irc.server_default.autorejoin_delay

  - description: delay (in seconds) before autorejoin (after kick)

  - type: integer

  - values: 0 .. 86400

  - default value: `30`

- irc.server_default.away_check

  - description: interval between two checks for away (in minutes, 0 = never check)

  - type: integer

  - values: 0 .. 10080

  - default value: `0`

- irc.server_default.away_check_max_nicks

  - description: do not check away nicks on channels with high number of nicks (0 = unlimited)

  - type: integer

  - values: 0 .. 1000000

  - default value: `25`

- irc.server_default.capabilities

  - description: comma-separated list of client capabilities to enable for server if they are available (see /help cap for a list of capabilities supported by WeeChat); "*" enables all capabilities by default (supported by both server and WeeChat); wildcard "*" is allowed; a capability beginning with "!" is excluded (example: "*,!account-*,!extended-join")

  - type: string

  - values: any string

  - default value: `"*"`

- irc.server_default.charset_message

  - description: part of the IRC message (received or sent) which is decoded/encoded to the target charset; message = the whole IRC message (default), channel = starting from the channel name only (if found, with fallback on text), text = starting from the text only (you should try this value if you have issues with the channel name encoding)

  - type: enum

  - values: message, channel, text

  - default value: `message`

- irc.server_default.command

  - description: command(s) to run after connection to server and before auto-join of channels (many commands can be separated by ";", use "\;" for a semicolon, special variables $nick, $channel and $server are replaced by their values) (note: commands are evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.command_delay

  - description: delay (in seconds) before execution of command

  - type: integer

  - values: 0 .. 3600

  - default value: `0`

- irc.server_default.connection_timeout

  - description: timeout (in seconds) between TCP connection to server and message 001 received, if this timeout is reached before 001 message is received, WeeChat will disconnect from server

  - type: integer

  - values: 1 .. 3600

  - default value: `60`

- irc.server_default.default_chantypes

  - description: channel type prefixes to use if the server does not send them in message 005 (default is "#&")

  - type: string

  - values: any string

  - default value: `"#&"`

- irc.server_default.ipv6

  - description: use IPv6 protocol for server communication

  - type: enum

  - values: disable, auto, force

  - default value: `auto`

- irc.server_default.local_hostname

  - description: custom local hostname/IP for server (optional, if empty local hostname is used)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.msg_kick

  - description: default kick message used by commands "/kick" and "/kickban" (note: content is evaluated, see /help eval; special variables ${nick} (self nick), ${target} (target nick), ${channel} and ${server} are replaced by their values)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.msg_part

  - description: default part message (leaving channel) (note: content is evaluated, see /help eval; special variables ${nick}, ${channel} and ${server} are replaced by their values; "%v" is replaced by WeeChat version if there is no ${...} in string)

  - type: string

  - values: any string

  - default value: `"WeeChat ${info:version}"`

- irc.server_default.msg_quit

  - description: default quit message (disconnecting from server) (note: content is evaluated, see /help eval; special variables ${nick}, ${channel} and ${server} are replaced by their values; "%v" is replaced by WeeChat version if there is no ${...} in string)

  - type: string

  - values: any string

  - default value: `"WeeChat ${info:version}"`

- irc.server_default.nicks

  - description: nicknames to use on server (separated by comma) (note: content is evaluated, see /help eval; ${username} is replaced by system username (fallback to "weechat" if not found), server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `"${username},${username}2,${username}3,${username}4,${username}5"`

- irc.server_default.nicks_alternate

  - description: get an alternate nick when all the declared nicks are already used on server: add some "_" until the nick has a length of 9, and then replace last char (or the two last chars) by a number from 1 to 99, until we find a nick not used on server

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.server_default.notify

  - description: notify list for server (you should not change this option but use /notify command instead)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.password

  - description: password for server (note: content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.proxy

  - description: name of proxy used for this server (optional, proxy must be defined with command /proxy)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.realname

  - description: real name to use on server (note: content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.registered_mode

  - description: mode that is set on registered users (default is "r")

  - type: string

  - values: any string

  - default value: `"r"`

- irc.server_default.sasl_fail

  - description: action to perform if SASL authentication fails: "continue" to ignore the authentication problem, "reconnect" to schedule a reconnection to the server, "disconnect" to disconnect from server (see also option irc.network.sasl_fail_unavailable)

  - type: enum

  - values: continue, reconnect, disconnect

  - default value: `reconnect`

- irc.server_default.sasl_key

  - description: file with ECC private key for mechanism "ecdsa-nist256p-challenge" (path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.sasl_mechanism

  - description: mechanism for SASL authentication: "plain" for plain text password, "scram-sha-1" for SCRAM authentication with SHA-1 digest algorithm, "scram-sha-256" for SCRAM authentication with SHA-256 digest algorithm, "scram-sha-512" for SCRAM authentication with SHA-512 digest algorithm, "ecdsa-nist256p-challenge" for key-based challenge authentication, "external" for authentication using client side TLS certificate

  - type: enum

  - values: plain, scram-sha-1, scram-sha-256, scram-sha-512, ecdsa-nist256p-challenge, external

  - default value: `plain`

- irc.server_default.sasl_password

  - description: password for SASL authentication; this option is not used for mechanisms "ecdsa-nist256p-challenge" and "external" (note: content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.sasl_timeout

  - description: timeout (in seconds) before giving up SASL authentication

  - type: integer

  - values: 1 .. 3600

  - default value: `15`

- irc.server_default.sasl_username

  - description: username for SASL authentication; this option is not used for mechanism "external" (note: content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.split_msg_max_length

  - description: split outgoing IRC messages to fit in this number of chars; the default value is 512, this is a safe and recommended value; value 0 disables the split (not recommended, unless you know what you do); allowed values are 0 or any integer between 128 and 4096; this option should be changed only on non-standard IRC servers, for example gateways like bitlbee

  - type: integer

  - values: 0 .. 4096

  - default value: `512`

- irc.server_default.tls

  - description: use TLS for server communication

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.server_default.tls_cert

  - description: TLS certificate file used to automatically identify your nick (path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.tls_dhkey_size

  - description: size of the key used during the Diffie-Hellman Key Exchange

  - type: integer

  - values: 0 .. 2147483647

  - default value: `2048`

- irc.server_default.tls_fingerprint

  - description: fingerprint of certificate which is trusted and accepted for the server; only hexadecimal digits are allowed (0-9, a-f): 128 chars for SHA-512, 64 chars for SHA-256, 40 chars for SHA-1 (insecure, not recommended); many fingerprints can be separated by commas; if this option is set, the other checks on certificates are NOT performed (option "tls_verify") (note: content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.tls_password

  - description: password for TLS certificate's private key; only used with gnutls version >= 3.1.0 (note: content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.tls_priorities

  - description: string with priorities for gnutls (for syntax, see documentation of function gnutls_priority_init in gnutls manual, common strings are: "PERFORMANCE", "NORMAL", "SECURE128", "SECURE256", "EXPORT", "NONE")

  - type: string

  - values: any string

  - default value: `"NORMAL"`

- irc.server_default.tls_verify

  - description: check that the TLS connection is fully trusted

  - type: boolean

  - values: on, off

  - default value: `on`

- irc.server_default.usermode

  - description: user mode(s) to set after connection to server and before executing command and the auto-join of channels; examples: "+R" (to set mode "R"), "+R-i" (to set mode "R" and remove "i"); see /help mode for the complete mode syntax (note: content is evaluated, see /help eval; server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `""`

- irc.server_default.username

  - description: user name to use on server (note: content is evaluated, see /help eval; ${username} is replaced by system username (fallback to "weechat" if not found), server options are evaluated with ${irc_server.xxx} and ${server} is replaced by the server name)

  - type: string

  - values: any string

  - default value: `"${username}"`

## 9. Xfer

L’extension Xfer permet :

- la discussion directe (entre deux machines, sans serveur), par exemple le "DCC Chat" via l’extension IRC

- le transfert de fichiers, par exemple le "DCC" via l’extension IRC

### 9.1. Commandes

- `me`: send a CTCP action to remote host

    /me  <message>

    message: message to send

- `xfer`: xfer control

    /xfer  [list|listfull]

        list: list xfer
    listfull: list xfer (verbose)

    Without argument, this command opens buffer with xfer list.

### 9.2. Options

Sections dans le fichier xfer.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set xfer.look.*` | Aspect/présentation.
`color` | `/set xfer.color.*` | Couleurs.
`network` | `/set xfer.network.*` | Options réseau.
`file` | `/set xfer.file.*` | Options pour les fichiers envoyés/reçus.

Options :

- xfer.color.status_aborted

  - description: text color for "aborted" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightred`

- xfer.color.status_active

  - description: text color for "active" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightblue`

- xfer.color.status_connecting

  - description: text color for "connecting" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- xfer.color.status_done

  - description: text color for "done" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightgreen`

- xfer.color.status_failed

  - description: text color for "failed" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightred`

- xfer.color.status_waiting

  - description: text color for "waiting" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightcyan`

- xfer.color.text

  - description: text color in xfer buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- xfer.color.text_bg

  - description: background color in xfer buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- xfer.color.text_selected

  - description: text color of selected line in xfer buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- xfer.file.auto_accept_chats

  - description: automatically accept chat requests (use carefully!)

  - type: boolean

  - values: on, off

  - default value: `off`

- xfer.file.auto_accept_files

  - description: automatically accept incoming files (use carefully!)

  - type: boolean

  - values: on, off

  - default value: `off`

- xfer.file.auto_accept_nicks

  - description: comma-separated list of nicks for which the incoming files and chats are automatically accepted; format is "server.nick" (for a specific server) or "nick" (for all servers); example: "libera.FlashCode,andrew"

  - type: string

  - values: any string

  - default value: `""`

- xfer.file.auto_check_crc32

  - description: automatically check CRC32 file checksum if it is found in the filename (8 hexadecimal chars)

  - type: boolean

  - values: on, off

  - default value: `off`

- xfer.file.auto_rename

  - description: rename incoming files if already exists (add ".1", ".2", ...)

  - type: boolean

  - values: on, off

  - default value: `on`

- xfer.file.auto_resume

  - description: automatically resume file transfer if connection with remote host is lost

  - type: boolean

  - values: on, off

  - default value: `on`

- xfer.file.convert_spaces

  - description: convert spaces to underscores when sending and receiving files

  - type: boolean

  - values: on, off

  - default value: `on`

- xfer.file.download_path

  - description: path for writing incoming files (path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `"${weechat_data_dir}/xfer"`

- xfer.file.download_temporary_suffix

  - description: temporary filename suffix used during the transfer for a file received, it is removed after successful transfer; if empty string, no filename suffix is used during the transfer

  - type: string

  - values: any string

  - default value: `".part"`

- xfer.file.upload_path

  - description: path for reading files when sending (path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `"~"`

- xfer.file.use_nick_in_filename

  - description: use remote nick as prefix in local filename when receiving a file

  - type: boolean

  - values: on, off

  - default value: `on`

- xfer.look.auto_open_buffer

  - description: auto open xfer buffer when a new xfer is added to list

  - type: boolean

  - values: on, off

  - default value: `on`

- xfer.look.progress_bar_size

  - description: size of progress bar, in chars (if 0, progress bar is disabled)

  - type: integer

  - values: 0 .. 256

  - default value: `20`

- xfer.look.pv_tags

  - description: comma separated list of tags used in private messages, for example: "notify_message", "notify_private" or "notify_highlight"

  - type: string

  - values: any string

  - default value: `"notify_private"`

- xfer.network.blocksize

  - description: block size for sending packets, in bytes

  - type: integer

  - values: 1024 .. 102400

  - default value: `65536`

- xfer.network.fast_send

  - description: does not wait for ACK when sending file

  - type: boolean

  - values: on, off

  - default value: `on`

- xfer.network.own_ip

  - description: IP or DNS address used for sending and passively receiving files/chats (if empty, local interface IP is used)

  - type: string

  - values: any string

  - default value: `""`

- xfer.network.port_range

  - description: restricts outgoing files/chats and incoming/passive files to use only ports in the given range (useful for NAT) (syntax: a single port, ie. 5000 or a port range, ie. 5000-5015, empty value means any port, it's recommended to use ports greater than 1024, because only root can use ports below 1024)

  - type: string

  - values: any string

  - default value: `""`

- xfer.network.send_ack

  - description: send acks when receiving files; if disabled, the transfer may freeze if the sender is waiting for acks (for example a WeeChat sending a file with option xfer.network.fast_send set to off); on the other hand, disabling send of acks may prevent a freeze if the acks are not sent immediately to the sender

  - type: boolean

  - values: on, off

  - default value: `on`

- xfer.network.speed_limit_recv

  - description: speed limit for receiving files, in kilo-bytes by second (0 means no limit)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `0`

- xfer.network.speed_limit_send

  - description: speed limit for sending files, in kilo-bytes by second (0 means no limit)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `0`

- xfer.network.timeout

  - description: timeout for xfer request (in seconds)

  - type: integer

  - values: 5 .. 2147483647

  - default value: `300`

## 10. Notifications de saisie

L’extension typing est utilisée pour informer les autres utilisateurs quand vous êtes en train d’écrire un message et afficher la liste des utilisateurs qui écrivent actuellement un message sur un tampon.

Elle est utilisée par l’extension IRC sur les tampons de canaux et privés, lorsque la capacité "message-tags" est activée (vous pouvez vérifier avec la commande /cap).
Sous le capot, l’étiquette client typing est utilisée, en suivant cette spécification ↗.

### 10.1. Activation

Pour des considérations de confidentialité, la fonctionnalité typing est désactivée par défaut.
Si vous voulez l’utiliser, vous devez activer des options dans les extensions typing et irc :

    /set typing.look.enabled_nicks on
    /set typing.look.enabled_self on
    /set irc.look.typing_status_nicks on
    /set irc.look.typing_status_self on

Les notifications "typing" sont affichées à la fin de la barre de statut.

Exemple de barre de statut avec l’objet "typing" : "bob" écrit un message et "alice" était en train d’en écrire un mais a fait une pause :

    │[12:55] [6] [irc/libera] 3:#test(+n){4} [Écrit : bob, (alice)]                   │
    │[@Flashy] █                                                                      │
    └─────────────────────────────────────────────────────────────────────────────────┘

### 10.2. Signaux envoyés

Lorsque vous écrivez un message (pas une commande commençant par `/`), l’extension typing envoie des signaux pour informer les autres extensions (comme IRC) que vous êtes en train d’écrire, et ces extensions peuvent alors envoyer des notifications aux autres utilisateurs.

Les signaux suivants sont envoyés quand vous écrivez des messages :

Signal | Paramètres | Description
--- | --- | ---
typing_self_typing | Pointeur : tampon. | Vous écrivez un message.
typing_self_paused | Pointeur : tampon. | Vous avez fait une pause dans l’écriture d’un message.
typing_self_cleared | Pointeur : tampon. | Vous avez effacé la ligne de commande sans envoyée le message.
typing_self_sent | Pointeur : tampon. | Vous avez envoyé le message au tampon.

### 10.3. Signaux captés

L’extension typing capte des signaux qui peuvent être envoyés par d’autres extensions (comme IRC), pour mettre à jour des tables de hachage internes qui sont utilisées pour sauvegarder l’état d’écriture de message des pseudos sur les tampons. Ces tables de hachages sont utilisées pour construire le contenu de l’objet de barre "typing".

Les signaux suivants sont captés par l’extension typing :

Signal | Paramètres | Description
--- | --- | ---
typing_set_nick | Chaîne : pointeur tampon + ";" + état (un parmi ceux-ci : "off", "typing", "paused", "cleared") + ";" + pseudo. Example: "0x1234abcd;typing;alice". | Définir l’état de la saisie du pseudo sur le tampon.
typing_reset_buffer | Pointeur : tampon. | Supprimer l’état de saisir pour tous les pseudos d’un tampon.

### 10.4. Options

Sections dans le fichier typing.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set typing.look.*` | Aspect/présentation.

Options :

- typing.look.delay_purge_paused

  - description: number of seconds after paused status has been set: if reached, the typing status is removed

  - type: integer

  - values: 1 .. 2147483647

  - default value: `30`

- typing.look.delay_purge_typing

  - description: number of seconds after typing status has been set: if reached, the typing status is removed

  - type: integer

  - values: 1 .. 2147483647

  - default value: `6`

- typing.look.delay_set_paused

  - description: number of seconds after typing last char: if reached, the typing status becomes "paused" and no more typing signals are sent

  - type: integer

  - values: 1 .. 2147483647

  - default value: `10`

- typing.look.enabled_nicks

  - description: typing enabled for other nicks (display typing info for nicks typing in the current buffer)

  - type: boolean

  - values: on, off

  - default value: `off`

- typing.look.enabled_self

  - description: typing enabled for self messages (send typing info to other users)

  - type: boolean

  - values: on, off

  - default value: `off`

- typing.look.input_min_chars

  - description: min number of chars in message to trigger send of typing signals

  - type: integer

  - values: 1 .. 2147483647

  - default value: `4`

- typing.look.item_max_length

  - description: max number of chars displayed in the bar item "typing" (0 = do not truncate content)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `0`

## 11. Relay

L’extension Relay est utilisée pour relayer des données via le réseau, en utilisant divers protocoles :

- irc : proxy IRC : utilisé pour partager la connexions aux serveurs IRC avec un ou plusieurs autres clients IRC

- api : API REST HTTP, utilisée par WeeChat et les interfaces distantes pour afficher et interagir avec WeeChat

- weechat : protocole utilisé par les interfaces distantes pour afficher et interagir avec WeeChat.

Pour les protocoles api et weechat, voir la liste des interfaces distantes sur cette page ↗.

### 11.1. Mot de passe

Il est fortement recommandé de définir un mot de passe pour le relai, avec ces commandes :

    /secure set relay motdepasse
    /set relay.network.password "${sec.data.relay}"

Ce mot de passe est utilisé avec tous les protocoles.

### 11.2. TOTP

TOTP (« Time-based One-Time Password » : mot de passe à usage unique basé sur le temps) peut être utilisé comme second facteur d’authentification pour les protocoles api et weechat, en plus du mot de passe.

Il est optionnel et augmente le niveau de sécurité.

Les mots de passe à usage unique peuvent être générés avec des applications, par exemple :

- FreeOTP : Android ↗, iOS ↗ (site web ↗)

- Google Authenticator : Android ↗, iOS ↗

Le « secret » TOTP doit être défini dans WeeChat et dans l’application utilisée pour générer les mots de passe à usage unique.

Il doit être une chaîne encodée en base32, avec seulement des lettres et des chiffres de 2 à 7, par exemple :

    /secure set relay_totp secretpasswordbase32
    /set relay.network.totp_secret "${sec.data.relay_totp}"

### 11.3. TLS

Vous pouvez utiliser TLS en créant un certificat et clé privée et en utilisant le préfixe "tls." dans le nom du protocole.

Le chemin par défaut vers le certificat/clé est défini par l’option relay.network.tls_cert_key.

Vous pouvez créer le certificat et la clé privée avec les commandes suivantes :

    mkdir -p ~/.config/weechat/tls
    cd ~/.config/weechat/tls
    openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out relay.pem

Note | Vous devez remplacer `~/.config/weechat` par le chemin vers votre répertoire de config WeeChat qui peut aussi être par exemple `~/.weechat`.

Si WeeChat tourne déjà, vous pouvez recharger le certificat et clé privée avec la commande :

    /relay tlscertkey

### 11.4. Proxy IRC

L’extension Relay peut agir comme un proxy IRC : elle simulera un serveur IRC, et vous pourrez vous connecter sur WeeChat avec n’importe quel autre client IRC (y compris WeeChat lui-même).

Vous pouvez définir un port par serveur IRC, ou bien un port générique pour tous les serveurs.

Lors de l’utilisation d’un port pour tous les serveurs, le client doit envoyer le nom interne du serveur dans la commande IRC "PASS", avec le format (voir l’exemple ci-dessous) :

    PASS serveur:motdepasse

Exemple : proxy IRC avec TLS pour tout serveur (le client choisira) :

    /relay add tls.irc 8000

Exemple : proxy IRC sans TLS seulement pour le serveur "libera" :

    /relay add irc.libera 8000

Maintenant vous pouvez vous connecter sur le port 8000 avec n’importe quel client IRC en utilisant le mot de passe "motdepasse" (ou "libera:motdepasse" si aucun serveur n’a été spécifié dans le relai).

Par exemple si vous utilisez WeeChat comme client IRC du relai, avec un serveur "relay" et un mot de passe relay "secret", vous pouvez configurer le mot de passe avec ces commandes :

    /secure set relay_libera libera:secret
    /set irc.server.relay.password "${sec.data.relay_libera}"

### 11.5. API protocol

L’extension Relay peut envoyer les données à un autre WeeChat ou une interface distante avec un protocol HTTP de type API REST.

Vous pouvez parcourir et tester l’API en ligne : API Relay WeeChat ↗.

Vous pouvez vous connecter avec WeeChat ou une interface distante, voir cette page ↗.

Par exemple :

    /relay add api 9000

Maintenant vous pouvez vous connecter sur le port 9000 avec une interface distante en utilisant le mot de passe "motdepasse".

Pour vous connecter à un relai api avec WeeChat :

    /remote add weechat http://localhost:9000 -password=motdepasse
    /remote connect weechat

Pour vous connecter à un relai api tournant ailleurs avec WeeChat (TLS est fortement recommandé) :

    /remote add weechat https://example.com:9000 -password=mypassword
    /remote connect weechat

Note | Le WeeChat distant doit exposer exactement la même version d’API que le WeeChat local, il est donc fortement recommandé d’utiliser exactement la même version de WeeChat de chaque côté.

### 11.6. Protocole WeeChat

L’extension Relay peut envoyer les données à une interface distante en utilisant le protocole WeeChat.

Vous pouvez vous connecter avec une interface distante, voir cette page ↗.

Important | WeeChat lui-même ne peut PAS se connecter sur un autre WeeChat avec ce protocole.

Par exemple :

    /relay add weechat 9500

Maintenant vous pouvez vous connecter sur le port 9500 avec une interface distante en utilisant le mot de passe "motdepasse".

### 11.7. WebSocket

Le protocole WebSocket (RFC 6455 ↗) est supporté dans l’extension Relay pour tous les protocoles.

La poignée de main ("handshake") WebSocket est automatiquement détectée et le socket devient prêt pour WebSocket si les en-tête requis sont trouvés dans la poignée de main et si l’origine est autorisée (voir l’option relay.network.websocket_allowed_origins).

Un WebSocket peut être ouvert dans une page HTML5 avec une seule ligne de JavaScript :

    websocket = new WebSocket("ws://example.com:9500/weechat");

Le port (9500 dans l’exemple) est le port défini dans l’extension Relay.

L’URI doit se terminer par "/weechat" pour les protocoles irc et weechat et "/api" pour le protocole api.

### 11.8. UNIX domain sockets

En utilisant l’option de protocole "unix" avec la commande `/relay add`, vous pouvez écouter avec n’importe quel protocole sur un socket UNIX et un chemin donné. Par exemple :

    /relay add unix.weechat ${weechat_runtime_dir}/relay_socket

Cela autorise les clients à se connecter en utilisant le protocole weechat à /run/user/1000/weechat/relay_socket. Cela est utile pour autoriser le "SSH forwarding" pour les clients relay, quand d’autres ports ne peuvent pas être ouverts.

Avec OpenSSH :

    ssh -L 9000:.weechat/relay_socket user@hostname

Cela redirige les clients relay locaux qui se connectent au port 9000 vers l’instance de WeeChat qui tourne sur "hostname".

### 11.9. Commandes

- `relay`: relay control

    /relay  list|listfull|listrelay
            add|addreplace <name> <port>|<path>
            del|start|restart|stop <name>
            raw
            tlscertkey

          list: list relay clients (only active relays)
      listfull: list relay clients (verbose, all relays)
     listrelay: list relays (name and port)
           add: add a relay (listen on a port/path)
    addreplace: add or replace an existing relay
           del: remove a relay (clients remain connected)
         start: listen on port
       restart: close the server socket and listen again on port (clients remain connected)
          stop: close the server socket (clients remain connected)
          name: relay name (see format below)
          port: port used for relay
          path: path used for relay (for UNIX domain socket only); path is evaluated (see function string_eval_path_home in plugin API reference)
           raw: open buffer with raw Relay data
    tlscertkey: set TLS certificate/key using path in option relay.network.tls_cert_key

    Relay name is: [ipv4.][ipv6.][tls.]<protocol.name> or unix.[tls.]<protocol.name>:
      - ipv4: force use of IPv4
      - ipv6: force use of IPv6
      - tls: enable TLS
      - unix: use UNIX domain socket
      - protocol.name: protocol and name to relay:
        - protocol "irc": name is the server to share (optional, if not given, the server name must be sent by client in command "PASS", with format: "PASS server:password")
        - protocol "api" (name is not used)
        - protocol "weechat" (name is not used)

    The "irc" protocol allows any IRC client (including WeeChat itself) to connect on the port.
    The "api" protocol allows a remote interface (including WeeChat itself) to connect on the port.
    The "weechat" protocol allows a remote interface (but not WeeChat itself) to connect on the port.

    The list of remote interfaces is here: https://weechat.org/about/interfaces/

    Without argument, this command opens buffer with list of relay clients.

    Examples:
      /relay add irc.libera 8000
      /relay add tls.irc.libera 8001
      /relay add tls.irc 8002
      /relay add tls.api 9000
      /relay add weechat 10000
      /relay add tls.weechat 10001
      /relay add ipv4.tls.weechat 10001
      /relay add ipv6.tls.weechat 10001
      /relay add ipv4.ipv6.tls.weechat 10001
      /relay add unix.weechat ${weechat_runtime_dir}/relay_socket

- `remote`: control of remote relay servers

    /remote  list|listfull [<name>]
             add|addreplace <name> <url> [-<option>[=<value>]]
             connect|reconnect|disconnect|del <name>
             send <name> <json>
             rename <name> <new_name>
             togglecmd

          list: list remote relay servers (without argument, this list is displayed)
      listfull: list remote relay servers (verbose)
           add: add a remote relay server
    addreplace: add or replace an existing remote relay server
          name: name of remote relay server, for internal and display use; this name is used to connect to the remote relay and to set remote relay options: relay.remote.name.xxx
           url: URL of the remote relay, format is https://example.com:9000 or http://example.com:9000 (plain-text connection, not recommended)
        option: set option for remote relay
       connect: connect to a remote relay server
     reconnect: reconnect to a remote relay server
    disconnect: disconnect from a remote relay server
           del: delete a remote relay server
          send: send JSON data to a remote relay server
        rename: rename a remote relay server
     togglecmd: toggle execution of commands on a remote buffer: on the remote WeeChat or locally (default key: alt+ctrl+l)

    Examples:
      /remote add example https://localhost:9000 -password=my_secret_password -totp_secret=secrettotp
      /remote connect example
      /remote disconnect example
      /remote del example

### 11.10. Options

Sections dans le fichier relay.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set relay.look.*` | Aspect/présentation.
`color` | `/set relay.color.*` | Couleurs.
`network` | `/set relay.network.*` | Options réseau.
`irc` | `/set relay.irc.*` | Options spécifiques au protocole irc (proxy irc).
`port` | `/relay add /set relay.port.*` | Ports utilisés pour le relai (les options peuvent être ajoutées/supprimées dans la section).

Options :

- relay.api.remote_autoreconnect_delay_growing

  - description: growing factor for autoreconnect delay to remote relay (1 = always same delay, 2 = delay*2 for each retry, etc.)

  - type: integer

  - values: 1 .. 100

  - default value: `2`

- relay.api.remote_autoreconnect_delay_max

  - description: maximum autoreconnect delay to remote relay (in seconds, 0 = no maximum)

  - type: integer

  - values: 0 .. 604800

  - default value: `600`

- relay.api.remote_get_lines

  - description: number of lines to retrieve on each buffer when connecting to a remote relay

  - type: integer

  - values: 0 .. 2147483647

  - default value: `1000`

- relay.api.remote_input_cmd_local

  - description: text displayed after user input when the command would be executed locally (NOT sent to the remote WeeChat) (note: content is evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `" ${color:green}<local cmd>"`

- relay.api.remote_input_cmd_remote

  - description: text displayed after user input when the command would be executed on the remote WeeChat (NOT executed locally) (note: content is evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `" ${color:red}<remote cmd>"`

- relay.color.client

  - description: text color for client description

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- relay.color.status_active

  - description: text color for "connected" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `green`

- relay.color.status_auth_failed

  - description: text color for "authentication failed" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightmagenta`

- relay.color.status_authenticating

  - description: text color for "authenticating" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- relay.color.status_connecting

  - description: text color for "connecting" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- relay.color.status_disconnected

  - description: text color for "disconnected" status

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightred`

- relay.color.text

  - description: text color in relay buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- relay.color.text_bg

  - description: background color in relay buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- relay.color.text_selected

  - description: text color of selected line in relay buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- relay.irc.backlog_max_minutes

  - description: maximum number of minutes in backlog per IRC channel (0 = unlimited, examples: 1440 = one day, 10080 = one week, 43200 = one month, 525600 = one year)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `0`

- relay.irc.backlog_max_number

  - description: maximum number of lines in backlog per IRC channel (0 = unlimited)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `1024`

- relay.irc.backlog_since_last_disconnect

  - description: display backlog starting from last client disconnect

  - type: boolean

  - values: on, off

  - default value: `on`

- relay.irc.backlog_since_last_message

  - description: display backlog starting from your last message

  - type: boolean

  - values: on, off

  - default value: `off`

- relay.irc.backlog_tags

  - description: comma-separated list of messages tags which are displayed in backlog per IRC channel (supported tags: "irc_join", "irc_part", "irc_quit", "irc_nick", "irc_privmsg"), "*" = all supported tags

  - type: string

  - values: any string

  - default value: `"irc_privmsg"`

- relay.irc.backlog_time_format

  - description: format for time in backlog messages (see man strftime for format) (not used if server capability "server-time" was enabled by client, because time is sent as irc tag); empty string = disable time in backlog messages

  - type: string

  - values: any string

  - default value: `"[%H:%M] "`

- relay.look.auto_open_buffer

  - description: auto open relay buffer when a new client is connecting using one of these protocols (comma-separated list); allowed protocols: "api", "irc", "weechat"

  - type: string

  - values: any string

  - default value: `"irc,weechat"`

- relay.look.display_clients

  - description: display messages when clients connect/disconnect from relay using one of these protocols (comma-separated list); allowed protocols: "api", "irc", "weechat"

  - type: string

  - values: any string

  - default value: `"irc,weechat"`

- relay.look.raw_messages

  - description: number of raw messages to save in memory when raw data buffer is closed (messages will be displayed when opening raw data buffer)

  - type: integer

  - values: 0 .. 65535

  - default value: `256`

- relay.look.raw_messages_max_length

  - description: max number of chars to display in raw messages (very long messages can cause slowness); 0 = display whole messages

  - type: integer

  - values: 0 .. 2147483647

  - default value: `4096`

- relay.network.allow_empty_password

  - description: allow empty password in relay (it should be enabled only for tests or local network)

  - type: boolean

  - values: on, off

  - default value: `off`

- relay.network.allowed_ips

  - description: POSIX extended regular expression with IPs allowed to use relay (case-insensitive, use "(?-i)" at beginning to make it case-sensitive), example: "^(123\.45\.67\.89|192\.160\..*)$"

  - type: string

  - values: any string

  - default value: `""`

- relay.network.auth_timeout

  - description: timeout (in seconds) for client authentication: connection is closed if the client is still not authenticated after this delay and the client status is set to "authentication failed" (0 = wait forever)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `60`

- relay.network.bind_address

  - description: address for bind (if empty, connection is possible on all interfaces, use "127.0.0.1" to allow connections from local machine only with IPv4 and "::ffff:127.0.0.1" with IPv6)

  - type: string

  - values: any string

  - default value: `""`

- relay.network.clients_purge_delay

  - description: delay for purging disconnected clients (in minutes, 0 = purge clients immediately, -1 = never purge)

  - type: integer

  - values: -1 .. 43200

  - default value: `0`

- relay.network.commands

  - description: comma-separated list of commands allowed/denied when input data (text or command) is received from a client ("api" and "weechat" protocols); "*" means any command, a name beginning with "!" is a negative value to prevent a command from being executed, wildcard "*" is allowed in names; this option should be set if the relay client is not safe (someone could use it to run commands); for example "*,!exec,!quit" allows any command except /exec and /quit

  - type: string

  - values: any string

  - default value: `"*,!quit"`

- relay.network.compression

  - description: compression of messages sent to clients with "api" and "weechat" protocols: 0 = disable compression, 1 = low compression / fast ... 100 = best compression / slow; the value is a percentage converted to 1-9 for zlib and 1-19 for zstd; the default value is recommended, it offers a good compromise between compression and speed

  - type: integer

  - values: 0 .. 100

  - default value: `20`

- relay.network.ipv6

  - description: listen on IPv6 socket by default (in addition to IPv4 which is default); protocols IPv4 and IPv6 can be forced (individually or together) in the protocol name (see /help relay)

  - type: boolean

  - values: on, off

  - default value: `on`

- relay.network.max_clients

  - description: maximum number of clients connecting to a port (0 = no limit)

  - type: integer

  - values: 0 .. 2147483647

  - default value: `5`

- relay.network.nonce_size

  - description: size of nonce (in bytes), generated when a client connects; the client must use this nonce, concatenated to the client nonce and the password when hashing the password in the "init" command of the weechat protocol

  - type: integer

  - values: 8 .. 128

  - default value: `16`

- relay.network.password

  - description: password required by clients to access this relay (empty value means no password required, see option relay.network.allow_empty_password) (note: content is evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `""`

- relay.network.password_hash_algo

  - description: comma separated list of hash algorithms used for password authentication in weechat protocol, among these values: "plain" (password in plain text, not hashed), "sha256", "sha512", "pbkdf2+sha256", "pbkdf2+sha512"), "*" means all algorithms, a name beginning with "!" is a negative value to prevent an algorithm from being used, wildcard "*" is allowed in names (examples: "*", "pbkdf2*", "*,!plain")

  - type: string

  - values: any string

  - default value: `"*"`

- relay.network.password_hash_iterations

  - description: number of iterations asked to the client in weechat protocol when a hashed password with algorithm PBKDF2 is used for authentication; more iterations is better in term of security but is slower to compute; this number should not be too high if your CPU is slow

  - type: integer

  - values: 1 .. 1000000

  - default value: `100000`

- relay.network.time_window

  - description: number of seconds to allow before and after the current time for the hash of time + password in "api" protocol

  - type: integer

  - values: 0 .. 256

  - default value: `5`

- relay.network.tls_cert_key

  - description: file with TLS certificate and private key (for serving clients with TLS) (path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `"${weechat_config_dir}/tls/relay.pem"`

- relay.network.tls_priorities

  - description: string with priorities for gnutls (for syntax, see documentation of function gnutls_priority_init in gnutls manual, common strings are: "PERFORMANCE", "NORMAL", "SECURE128", "SECURE256", "EXPORT", "NONE")

  - type: string

  - values: any string

  - default value: `"NORMAL"`

- relay.network.totp_secret

  - description: secret for the generation of the Time-based One-Time Password (TOTP), encoded in base32 (only letters and digits from 2 to 7); it is used as second factor in "api" and "weechat" protocols, in addition to the password, which must not be empty (empty value means no TOTP is required) (note: content is evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `""`

- relay.network.totp_window

  - description: number of Time-based One-Time Passwords to accept before and after the current one: 0 = accept only the current password, 1 = accept one password before, the current, and one after, 2 = accept two passwords before, the current, and two after, ...; a high number reduces the security level (0 or 1 are recommended values)

  - type: integer

  - values: 0 .. 256

  - default value: `0`

- relay.network.websocket_allowed_origins

  - description: POSIX extended regular expression with origins allowed in websockets (case-insensitive, use "(?-i)" at beginning to make it case-sensitive), example: "^https?://(www\.)?example\.(com|org)"

  - type: string

  - values: any string

  - default value: `""`

- relay.network.websocket_permessage_deflate

  - description: enable websocket extension "permessage-deflate" to compress websocket frames ("api" protocol only); if disabled, WeeChat (as server) will not enable permessage-deflate even if the client supports it, and when connecting to a remote WeeChat (api relay only), permessage-deflate support is not advertised by WeeChat; it is recommended to keep this option enabled, and you should disable it only if you have troubles with this extension, either with WeeChat or the client

  - type: boolean

  - values: on, off

  - default value: `on`

## 12. Commandes externes

La commande `/exec` vous permet de lancer des commandes externes dans WeeChat et d’afficher la sortie localement, ou de l’envoyer à un tampon.

### 12.1. Commandes

- `exec`: execute external commands

    /exec  -list
           [-sh|-nosh] [-bg|-nobg] [-stdin|-nostdin] [-buffer <name>] [-l|-o|-oc|-n|-nf] [-oerr] [-cl|-nocl] [-sw|-nosw] [-ln|-noln] [-flush|-noflush] [-color ansi|auto|irc|weechat|strip] [-rc|-norc] [-timeout <timeout>] [-name <name>] [-pipe <command>] [-hsignal <name>] <command>
           -in <id> <text>
           -inclose <id> [<text>]
           -signal <id> <signal>
           -kill <id>
           -killall
           -set <id> <property> <value>
           -del <id>|-all [<id>...]

       -list: list commands
         -sh: use the shell to execute the command, many commands can be piped (WARNING: use this option ONLY if all arguments are safe, see option -nosh)
       -nosh: do not use the shell to execute the command (required if the command has some unsafe data, for example the content of a message from another user) (default)
         -bg: run process in background: do not display process output neither return code (not compatible with options -o/-oc/-n/-nf/-pipe/-hsignal)
       -nobg: catch process output and display return code (default)
      -stdin: create a pipe for sending data to the process (with /exec -in/-inclose)
    -nostdin: do not create a pipe for stdin (default)
     -buffer: display/send output of command on this buffer (if the buffer is not found, a new buffer with name "exec.exec.xxx" is created)
          -l: display locally output of command on buffer (default)
          -o: send output of command to the buffer without executing commands (not compatible with options -bg/-pipe/-hsignal)
         -oc: send output of command to the buffer and execute commands (lines starting with "/" or another custom command char) (not compatible with options -bg/-pipe/-hsignal)
          -n: display output of command in a new buffer (not compatible with options -bg/-pipe/-hsignal)
         -nf: display output of command in a new buffer with free content (no word-wrap, no limit on number of lines) (not compatible with options -bg/-pipe/-hsignal)
       -oerr: also send stderr (error output) to the buffer (can be used only with options -o and -oc)
         -cl: clear the new buffer before displaying output
       -nocl: append to the new buffer without clear (default)
         -sw: switch to the output buffer (default)
       -nosw: don't switch to the output buffer
         -ln: display line numbers (default in new buffer only)
       -noln: don't display line numbers
      -flush: display output of command in real time (default)
    -noflush: display output of command after its end
      -color: action on ANSI colors in output:
              ansi: keep ANSI codes as-is
              auto: convert ANSI colors to WeeChat/IRC (default)
              irc: convert ANSI colors to IRC colors
              weechat: convert ANSI colors to WeeChat colors
              strip: remove ANSI colors
         -rc: display return code (default)
       -norc: don't display return code
    -timeout: set a timeout for the command (in seconds)
       -name: set a name for the command (to name it later with /exec)
       -pipe: send the output to a WeeChat/plugin command (line by line); if there are spaces in command/arguments, enclose them with double quotes; variable $line is replaced by the line (by default the line is added after the command, separated by a space) (not compatible with options -bg/-o/-oc/-n/-nf)
    -hsignal: send the output as a hsignal (to be used for example in a trigger) (not compatible with options -bg/-o/-oc/-n/-nf)
     command: the command to execute; if beginning with "url:", the shell is disabled and the content of URL is downloaded and sent as output
          id: command identifier: either its number or name (if set with "-name xxx")
         -in: send text on standard input of process
    -inclose: same as -in, but stdin is closed after (and text is optional: without text, the stdin is just closed)
     -signal: send a signal to the process; the signal can be an integer or one of these names: hup, int, quit, kill, term, usr1, usr2
       -kill: alias of "-signal <id> kill"
    -killall: kill all running processes
        -set: set a hook property (see function hook_set in plugin API reference)
    property: hook property
       value: new value for hook property
        -del: delete a terminated command
        -all: delete all terminated commands

    Default options can be set in the option exec.command.default_options.

    Examples:
      /exec -n ls -l /tmp
      /exec -sh -n ps xu | grep weechat
      /exec -n -norc url:https://pastebin.com/raw.php?i=xxxxxxxx
      /exec -nf -noln links -dump https://weechat.org/files/doc/weechat/devel/weechat_user.en.html
      /exec -o uptime
      /exec -pipe "/print Machine uptime:" uptime
      /exec -n tail -f /var/log/messages
      /exec -kill 0

### 12.2. Options

Sections dans le fichier exec.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`command` | `/set exec.command.*` | Options pour les commandes.
`color` | `/set exec.color.*` | Couleurs.

Options :

- exec.color.flag_finished

  - description: text color for a finished command flag in list of commands

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightred`

- exec.color.flag_running

  - description: text color for a running command flag in list of commands

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightgreen`

- exec.command.default_options

  - description: default options for command /exec (see /help exec); example: "-nosh -bg" to run all commands in background (no output), and without using the shell

  - type: string

  - values: any string

  - default value: `""`

- exec.command.purge_delay

  - description: delay for purging finished commands (in seconds, 0 = purge commands immediately, -1 = never purge)

  - type: integer

  - values: -1 .. 25920000

  - default value: `0`

- exec.command.shell

  - description: shell to use with command "/exec -sh"; it can be just the name of shell if it is in PATH (for example "bash") or the absolute path to the shell (for example "/bin/bash"); if value is empty, "sh" is used (note: content is evaluated, see /help eval)

  - type: string

  - values: any string

  - default value: `"${env:SHELL}"`

## 13. Tube FIFO

Vous pouvez contrôler WeeChat à distance, en envoyant des commandes ou du texte dans un tube FIFO (si l’option fifo.file.enabled est activée, elle l’est par défaut).

Le tube FIFO est dans le répertoire WeeChat "runtime" et s’appelle weechat_fifo_12345 par défaut (où 12345 est le process id de WeeChat).

La syntaxe pour envoyer des commandes ou du texte dans le tube FIFO est une des suivantes :

      plugin.buffer *texte ou commande ici
      *texte ou commande ici

Les barres obliques inverses peuvent être interprétées avec ce format, où `*` est remplacé par `\`, autorisant par exemple l’envoi de messages multi-lignes :

      plugin.buffer \texte ou commande ici
      \texte ou commande ici

Quelques exemples :

- Changer le pseudo sur libera en "autrepseudo" :

    echo 'irc.server.libera */nick autrepseudo' >/run/user/1000/weechat/weechat_fifo_12345

- Envoyer un message sur le canal IRC #weechat :

    echo 'irc.libera.#weechat *bonjour !' >/run/user/1000/weechat/weechat_fifo_12345

- Envoyer un message multi-lignes sur le canal IRC #test, si la capacité "draft/multiline" est activée sur le serveur ergo :

    echo 'irc.ergo.#test \bonjour\n...sur deux lignes !' >/run/user/1000/weechat/weechat_fifo_12345

- Envoyer un message sur le tampon courant :

    echo '*bonjour !' >/run/user/1000/weechat/weechat_fifo_12345

- Envoyer deux commandes pour décharger/recharger les scripts Python (vous devez les séparer par "\n") :

    printf '%b' '*/python unload\n*/python autoload\n' >/run/user/1000/weechat/weechat_fifo_12345

### 13.1. Commandes

- `fifo`: fifo plugin configuration

    /fifo  enable|disable|toggle

     enable: enable FIFO pipe
    disable: disable FIFO pipe
     toggle: toggle FIFO pipe

    FIFO pipe is used as remote control of WeeChat: you can send commands or text to the FIFO pipe from your shell.
    By default the FIFO pipe is called weechat_fifo_xxx (where xxx is the WeeChat process id) and located in the WeeChat runtime directory (see /debug dirs).

    The expected format is one of:
      plugin.buffer *text or command here
      *text or command here

    For example to change your libera nick:
      echo 'irc.server.libera */nick newnick' >/run/user/1000/weechat/weechat_fifo_12345

    Please read the user's guide for more info and examples.

### 13.2. Options

Sections dans le fichier fifo.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`file` | `/set fifo.file.*` | Contrôle du tube FIFO.

Options :

- fifo.file.enabled

  - description: enable FIFO pipe

  - type: boolean

  - values: on, off

  - default value: `on`

- fifo.file.path

  - description: path for FIFO file; WeeChat PID can be used in path with ${info:pid} (path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `"${weechat_runtime_dir}/weechat_fifo_${info:pid}"`

## 14. Trigger

Trigger est le couteau suisse de WeeChat : il peut accrocher différentes choses (signal, modificateur, print, …​), changer le contenu des données, et exécuter une ou plusieurs commandes. Une condition peut être utilisée pour empêcher le trigger de s’exécuter dans certaines circonstances.

Utiliser les triggers nécessite de connaître le fonctionnement des signaux, modificateurs, etc. Il peut être utile de lire la Référence API extension WeeChat / Hooks ↗.

### 14.1. Triggers par défaut

WeeChat créé 5 triggers par défaut, qui peuvent être désactivés, mis à jour ou supprimés :

- un trigger beep pour les notifications

- quatre autre triggers pour cacher les mots de passe à l’écran

Liste des triggers par défaut :

Nom | Hook | Description
--- | --- | ---
`beep` | print | Faire un bip sur un message de highlight ou privé.
`cmd_pass` | modifier | Cacher le mot de passe dans les commandes : `/msg nickserv id|identify|set password|ghost|release|regain|recover`, `/oper`, `/quote pass`, `/secure passphrase|decrypt|set`.
`cmd_pass_register` | modifier | Cacher le mot de passe dans la commande `/msg nickserv register`.
`msg_auth` | modifier | Cacher le mot de passe dans le message d’authentification IRC affiché (message reçu du serveur après l’envoi de la commande par l’utilisateur).
`server_pass` | modifier | Cacher le mot de passe du serveur dans les commandes `/server` et `/connect`.

### 14.2. Anatomie d’un trigger

Un trigger a les options suivantes (les noms sont `trigger.trigger.<nom>.<option>`) :

Option | Valeurs | Description
--- | --- | ---
`enabled` | `on`, `off` | Lorsque l’option est `off`, le trigger est désactivé et les actions ne sont plus exécutées.
`hook` | `signal`, `hsignal`, `modifier`, `line`, `print`, `command`, `command_run`, `timer`, `config`, `focus`, `info`, `info_hashtable` | Le "hook" utilisé dans le trigger. Pour plus d’information, voir la Référence API extension WeeChat / Hooks ↗.
`arguments` | chaîne | Les paramètres pour le "hook", ils dépendent du type de hook utilisé.
`conditions` | chaîne | Conditions pour exécuter le trigger : elles sont évaluées (voir la commande /eval).
`regex` | chaîne | Une ou plusieurs expressions régulières POSIX étendues, pour modifier les données reçues dans la fonction de rappel du "hook" (et d’autres choses ajoutées par l’extension trigger), voir expression régulière.
`command` | chaîne | Commande à exécuter (plusieurs commandes peuvent être séparées par des points-virgules) ; elle est évaluée (voir la commande /eval).
`return_code` | `ok`, `ok_eat`, `error` | Le code retour de la fonction de rappel (`ok` par défaut, qui devrait être utilisé dans quasiment tous les triggers, les autres valeurs sont rarement utilisées).
`post_action` | `none`, `disable`, `delete` | Action à effectuer sur le trigger après l’exécution (`none` par défaut, qui devrait être utilisé dans quasiment tous les triggers, les autres valeurs sont rarement utilisées).

Par exemple, le trigger beep par défaut a les options suivantes :

    trigger.trigger.beep.enabled = on
    trigger.trigger.beep.hook = print
    trigger.trigger.beep.arguments = ""
    trigger.trigger.beep.conditions = "${tg_displayed} && (${tg_highlight} || ${tg_msg_pv})"
    trigger.trigger.beep.regex = ""
    trigger.trigger.beep.command = "/print -beep"
    trigger.trigger.beep.return_code = ok
    trigger.trigger.beep.post_action = none

### 14.3. Exécution

Lorsque la fonction de rappel d’un trigger est appelée, les actions suivantes sont exécutées, dans cet ordre, si les triggers sont globalement activés et si le trigger lui-même est activé :

1. vérifier les conditions du trigger : si faux, sortir

2. remplacer du texte dans le trigger en utilisant des expressions régulières

3. exécuter la/les commande(s)

4. sortir avec un code retour (sauf pour les "hooks" modifier, line, focus, info et info_hashtable)

5. effectuer l’action "post" (si différente de `none`).

### 14.4. Paramètres du hook

Les paramètres dépendent du type de "hook" utilisé. Ils sont séparés par des points-virgules.

Hook | Paramètres | Exemples | Documentation (API)
--- | --- | --- | ---
signal | 1. nom de signal (priorité autorisée) (obligatoire) 2. nom de signal (priorité autorisée) 3. …​ | `*,irc_in_privmsg` `*,irc_in_privmsg;*,irc_in_notice` `signal_sigwinch` | hook_signal ↗
hsignal | 1. nom de signal (priorité autorisée) (obligatoire) 2. nom de signal (priorité autorisée) 3. …​ | `nicklist_nick_added` | hook_hsignal ↗
modifier | 1. nom de modificateur (priorité autorisée) (obligatoire) 2. nom de modificateur (priorité autorisée) 3. …​ | `weechat_print` `5000|input_text_display;5000|history_add` | hook_modifier ↗
line | 1. type de tampon 2. nom de tampon 3. étiquettes | `formatted` `free` `*;irc.libera.*` `*;irc.libera.#weechat` `formatted;irc.libera.#weechat;irc_notice` | hook_line ↗
print | 1. nom de tampon 2. étiquettes 3. message 4. suppression des couleurs (0/1) | `irc.libera.*` `irc.libera.#weechat` `irc.libera.#weechat;irc_notice` `*;;;1` | hook_print ↗
command | 1. nom de commande (priorité autorisée) (obligatoire) 2. description (évalué, voir la commande /eval) 3. paramètres (évalué, voir la commande /eval) 4. description des paramètres (évalué, voir la commande /eval) 5. complétion (évalué, voir la commande /eval) | `test` `5000|test` `test;commande de test;arg1 arg2;arg1: description 1${\n}arg2: description 2` | hook_command ↗
command_run | 1. commande (priorité autorisée) (obligatoire) 2. commande (priorité autorisée) 3. …​ | `/cmd paramètres` | hook_command_run ↗
timer | 1. intervalle, en millisecondes (obligatoire) 2. alignement sur la seconde (par défaut : 0) 3. nombre maximum d’appels (par défaut : 0, qui signifie "sans fin") | `3600000` `60000;0;5` | hook_timer ↗
config | 1. nom d’option (priorité autorisée) (obligatoire) 2. nom d’option (priorité autorisée) 3. …​ | `weechat.look.*` | hook_config ↗
focus | 1. nom d’aire (priorité autorisée) (obligatoire) 2. nom d’aire (priorité autorisée) 3. …​ | `buffer_nicklist` | hook_focus ↗
info | 1. nom de l’info (priorité autorisée) (obligatoire) 2. nom de l’info (priorité autorisée) 3. …​ | `mon_info` | hook_info ↗
info_hashtable | 1. nom de l’info (priorité autorisée) (obligatoire) 2. nom de l’info (priorité autorisée) 3. …​ | `mon_info` | hook_info_hashtable ↗

### 14.5. Conditions

Les conditions sont utilisées pour continuer l’exécution du trigger, ou tout stopper.

Elles sont évaluées, et les données disponibles dans la fonction de rappel peuvent être utilisées (voir données dans les callbacks et la commande /eval).

Exemple : le trigger beep par défaut utilise cette condition pour faire un beep seulement sur un highlight ou un message privé :

    ${tg_displayed} && (${tg_highlight} || ${tg_msg_pv})

### 14.6. Expression régulière

L’expression régulière est utilisée pour modifier des variables dans la table de hachage de la fonction de rappel.

Le format est l’un des suivants :

    /chaîne1/chaîne2
    /chaîne1/chaîne2/var
    s/chaîne1/chaîne2
    s/chaîne1/chaîne2/var
    y/chaîne1/chaîne2
    y/chaîne1/chaîne2/var

Champs :

- `s` ou `y` : une lettre avec la commande ; si manquante, la commande par défaut est `s` et le premier caractère est alors utilisé comme délimiteur :

  - `s` : remplacement par expression régulière : la première chaîne est l’expression régulière, la seconde chaîne est le remplacement pour chaque chaîne trouvée

  - `y` : traduction de caractères : la première chaîne est un ensemble de caractères qui sont remplacés par les caractères de la seconde chaîne ; une fois évaluée, chaque chaîne doit contenir exactement le même nombre de caractères UTF-8

- `/` : le délimiteur d’expression régulière ; le caractère "/" peut être remplacé par n’importe quel caractère (un ou plusieurs caractères identiques)

- `chaîne1` : la première chaîne (l’utilisation dépend de la commande)

- `chaîne2` : la seconde chaîne (l’utilisation dépend de la commande)

- `var` : la table de hachage avec la variable à mettre à jour

Plusieurs expressions régulières peuvent être séparées par un espace, par exemple :

    s/regex1/remplacement1/var1 y/abcdef/ABDDEF/var2

#### Regex replace

Pour la commande `s`, le format est : `s/regex/remplacement` ou `s/regex/remplacement/var` (où var est une variable de la table de hachage).

Comme `s` est la commande par défaut, elle peut être omise, donc `/regex/replace` est également valide (mais le premier caractère, qui est le délimiteur, ne doit pas être une lettre).

Les groupes de correspondance peuvent être utilisés dans le remplacement :

- `${re:0}` à `${re:99}` : `${re:0}` est la correspondance complète, `${re:1}` à `${re:99}` sont les groupes capturés

- `${re:+}` : la dernière correspondance (avec le numéro le plus élevé)

- `${re:#}` : index du dernier groupe capturé

- `${re:repl_index}` : index du remplacement en cours (démarre à 1)

- `${hide:c,${re:N}}` : la correspondance "N" avec tous les caractères remplacés par "c" (exemple : `${hide:*,${re:2}}` est le groupe n°2 avec tous les caractères remplacés par `*`).

Exemple : utiliser du gras pour les mots entre `*` :

    s/\*([^ ]+)\*/*${color:bold}${re:1}${color:-bold}*/

Exemple : le trigger par défaut server_pass utilise cette expression régulière pour cacher le mot de passe dans les commandes `/server` et `/connect` (les caractères des mots de passe sont remplacés par `*`) :

    s==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}

Note | Dans cet exemple, le séparateur utilisé est "==" car il y a "/" dans l’expression régulière.

#### Translate chars

Pour la commande `y`, le format est : `y/caractères1/caractères2` ou `y/caractères1/caractères2/var` (où var est une variable de la table de hachage).

Exemple : remplacer "a", "b" et "c" par la lettre en majuscules :

    y/abc/ABC/

Exemple : faire tourner une flèche dans le sens horaire :

    y/←↑→↓/↑→↓←/

Exemple : convertir toutes les lettres en minuscules :

    y/${chars:upper}/${chars:lower}/

Exemple : décaler toutes les lettres d’une position, en préservant la casse : a→b, b→c … y→z, z→a :

    y/${chars:a-z}${chars:A-Z}/${chars:b-z}a${chars:B-Z}A/

#### Variable

Si var n’existe pas dans la table de hachage, elle est automatiquement créée avec une valeur vide. Cela permet de créer des variables temporaires.

Si var n’est pas spécifiée, la variable par défaut est utilisée, elle dépend du type de hook :

Hook | Variable par défaut | Mise à jour autorisée (1)
--- | --- | ---
signal | tg_signal_data |
hsignal |  |
modifier | tg_string | tg_string
line | message | buffer, buffer_name, y, date, date_usec, date_printed, date_usec_printed, str_time, tags, notify_level, highlight, prefix, message
print | tg_message |
command | tg_argv_eol1 |
command_run | tg_command |
timer | tg_remaining_calls |
config | tg_value |
focus |  |
info | tg_info | tg_info
info_hashtable |  | toutes les variables reçues dans la table de hachage

Note | (1) Toutes les variables peuvent être mises à jour dans le trigger, mais seulement ces variables ont un effet sur la valeur retournée par le trigger et utilisée par WeeChat.

### 14.7. Commande

La commande est exécutée après le remplacement du texte avec l’expression régulière. Plusieurs commandes peuvent être séparées par des points-virgules.

Elle est évaluée (voir la commande /eval) et le texte remplacé avec l’expression régulière peut être utilisé dans la commande.

Exemple : le trigger par défaut beep utilise cette commande pour produire un beep (BEL) :

    /print -beep

### 14.8. Données dans les fonctions de rappel

Les données reçues dans les fonctions de rappel sont stockées dans des tables de hachage (pointeurs et chaînes) et peuvent être utilisées dans les options suivantes :

- conditions

- regex

- command

Le contenu des tables de hachage dépend du type de hook.

Une manière pratique de voir les données dans le trigger est d’ouvrir le tampon moniteur des triggers :

    /trigger monitor

Toutes les fonctions de rappel définissent les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`tg_trigger_name` | chaîne | Nom du trigger.
`tg_hook_type` | chaîne | Type de hook : "signal", "command", etc.

#### Signal

La fonction de rappel "signal" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`tg_signal` | chaîne | Nom du signal.
`tg_signal_data` | chaîne | Données envoyées avec le signal.

Si le signal contient un message IRC, le message est analysé et les données suivantes sont ajoutées dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`irc_server` | pointeur | Pointeur vers le serveur IRC (les variables dans le hdata de type "irc_server" peuvent être utilisées, comme `${irc_server.name}`).
`irc_channel` | pointeur | Pointeur vers le canal IRC (les variables dans le hdata de type "irc_channel" peuvent être utilisées, comme `${irc_channel.name}`).
`server` | chaîne | Nom du serveur (exemple : "libera").
`tags` | chaîne | Étiquettes dans le message (rarement utilisées).
`message_without_tags` | chaîne | Message sans les étiquettes.
`nick` | chaîne | Pseudo. (1)
`host` | chaîne | Nom d’hôte.
`command` | chaîne | Commande IRC (exemple : "PRIVMSG", "NOTICE", …​).
`channel` | chaîne | Canal IRC.
`arguments` | chaîne | Paramètres de la commande (inclut la valeur de channel).
`text` | chaîne | Texte (par exemple message utilisateur).
`pos_command` | chaîne | L’index de command dans le message ("-1" si command n’a pas été trouvé).
`pos_arguments` | chaîne | L’index de arguments dans le message ("-1" si arguments n’a pas été trouvé).
`pos_channel` | chaîne | L’index de channel dans le message ("-1" si channel n’a pas été trouvé).
`pos_text` | chaîne | L’index de text dans le message ("-1" si text n’a pas été trouvé).

Note | (1) Le pseudo est l’expéditeur du message. Votre propre pseudo sur le serveur est `${irc_server.nick}`.

Lorsque la donnée est un pointeur, la variable `tg_signal_data` peut être utilisée comme ceci pour lire une propriété hdata (dans cet exemple il s’agit d’un pointeur sur un tampon) :

    ${buffer[${tg_signal_data}].full_name}

#### Hsignal

La fonction de rappel "hsignal" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`tg_signal` | chaîne | Nom du signal

La table de hachage contient toutes les clés/valeurs de la table de hachage reçue (type : chaîne/chaîne).

#### Modifier

La fonction de rappel "modifier" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`tg_modifier` | chaîne | Nom du modificateur.
`tg_modifier_data` | chaîne | Données envoyées avec le modificateur.
`tg_string` | chaîne | La chaîne qui peut être modifiée.
`tg_string_nocolor` | chaîne | La chaîne sans les codes couleur.

Pour le modificateur weechat_print, les variables en utilisant les étiquettes du message sont ajoutées (voir le hook print ci-dessous), ainsi que les variables suivantes :

Variable | Type | Description
--- | --- | ---
`buffer` | pointeur | Tampon où le message est affiché.
`tg_plugin` | chaîne | Extension du tampon où le message est affiché.
`tg_buffer` | chaîne | Nom complet du tampon où le message est affiché.
`tg_prefix` | chaîne | Préfixe du message affiché.
`tg_prefix_nocolor` | chaîne | Préfixe sans les codes couleur.
`tg_message` | chaîne | Message affiché.
`tg_message_nocolor` | chaîne | Message sans les codes couleur.

Si le modificateur contient un message IRC, le message est analysé et des données supplémentaires sont ajoutées dans la table de hachage (voir le "hook" signal).

#### Line

La fonction de rappel "line" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`buffer` | pointeur | Tampon.
`buffer_name` | chaîne | Nom du tampon.
`buffer_type` | chaîne | Type de tampon ("formatted" ou "free").
`y` | chaîne | Numéro de ligne pour un tampon avec contenu libre (≥ 0), -1 pour un tampon avec contenu formaté.
`date` | chaîne | Date de la ligne (horodatage).
`date_usec` | chaîne | Microsecondes de la date de la ligne.
`date_printed` | chaîne | Date d’affichage de la ligne (horodatage).
`date_usec_printed` | chaîne | Microsecondes de la date d’affichage de la ligne.
`str_time` | chaîne | Date pour l’affichage. Elle peut contenir des codes couleur.
`tags` | chaîne | Étiquettes du message (avec une virgule en début/fin de chaîne).
`displayed` | chaîne | "1" si affichée, "0" si la ligne est filtrée.
`notify_level` | chaîne | "-1" = pas de notification, "0" = niveau bas, "1" = message, "2" = message privé, "3" = highlight
`highlight` | chaîne | "1" si highlight, sinon "0".
`prefix` | chaîne | Préfixe.
`tg_prefix_nocolor` | chaîne | Préfixe sans les codes couleur.
`message` | chaîne | Message.
`tg_message_nocolor` | chaîne | Message sans les codes couleur.

Variables définies avec les étiquettes du message :

Variable | Type | Description
--- | --- | ---
`tg_tags_count` | chaîne | Nombre d’étiquettes dans le message.
`tg_tag_nick` | chaîne | Pseudo (depuis l’étiquette "nick_xxx").
`tg_tag_prefix_nick` | chaîne | Couleur du pseudo dans le préfixe (depuis l’étiquette "prefix_nick_ccc").
`tg_tag_host` | chaîne | Nom d’utilisateur et hôte, format : utilisateur@hôte (depuis l’étiquette "host_xxx").
`tg_tag_notify` | chaîne | Niveau de notification (none, message, private, highlight).
`tg_tag_irc_xxx` | chaîne | Étiquette de message IRC (clé "xxx"). (1)
`tg_notify` | chaîne | Niveau de notification, si différent de none.
`tg_msg_pv` | chaîne | "1" pour un message privé, sinon "0".

Note | (1) Les virgules sont remplacées par des point-virgules dans l’étiquette IRC (clé et valeur).

#### Print

La fonction de rappel "print" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`buffer` | pointeur | Tampon.
`tg_date` | chaîne | Date/heure du message (format : `%FT%T.%f`, voir la Référence API extension WeeChat / util_strftimeval ↗).
`tg_displayed` | chaîne | "1" si affiché, "0" si ligne filtrée.
`tg_highlight` | chaîne | "1" si highlight, sinon "0".
`tg_prefix` | chaîne | Préfixe.
`tg_prefix_nocolor` | chaîne | Préfixe sans les codes couleur.
`tg_message` | chaîne | Message.
`tg_message_nocolor` | chaîne | Message sans les codes couleur.

Variables définies avec les étiquettes du message :

Variable | Type | Description
--- | --- | ---
`tg_tags` | chaîne | Étiquettes du message (avec une virgule en début/fin de chaîne).
`tg_tags_count` | chaîne | Nombre d’étiquettes dans le message.
`tg_tag_nick` | chaîne | Pseudo (depuis l’étiquette "nick_xxx").
`tg_tag_prefix_nick` | chaîne | Couleur du pseudo dans le préfixe (depuis l’étiquette "prefix_nick_ccc").
`tg_tag_host` | chaîne | Nom d’utilisateur et hôte, format : utilisateur@hôte (depuis l’étiquette "host_xxx").
`tg_tag_notify` | chaîne | Niveau de notification (none, message, private, highlight).
`tg_tag_irc_xxx` | chaîne | Étiquette de message IRC (clé "xxx"). (1)
`tg_notify` | chaîne | Niveau de notification, si différent de none.
`tg_msg_pv` | chaîne | "1" pour un message privé, sinon "0".

Note | (1) Les virgules sont remplacées par des point-virgules dans l’étiquette IRC (clé et valeur).

#### Command

La fonction de rappel "command" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`buffer` | pointeur | Tampon.
`tg_argc` | chaîne | Nombre de paramètres (la commande elle-même compte pour un).
`tg_argvN` | chaîne | Paramètre n°N (`tg_argv0` est la commande elle-même, les autres sont les paramètres de la commande).
`tg_argv_eolN` | chaîne | Depuis le paramètre n°N jusqu’à la fin des paramètres (`tg_argv_eol0` inclut la commande elle-même).
`tg_shell_argc` | chaîne | Nombre de paramètres avec un découpage comme le fait le shell (la commande elle-même compte pour un).
`tg_shell_argvN` | chaîne | Paramètre n°N avec un découpage comme le fait le shell (`tg_shell_argv0` est la commande elle-même, les autres sont les paramètres de la commande).

#### Command_run

La fonction de rappel "command_run" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`buffer` | pointeur | Tampon.
`tg_command` | chaîne | Commande exécutée.

#### Timer

La fonction de rappel "timer" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`tg_remaining_calls` | chaîne | Nombre d’appels restants.
`tg_date` | chaîne | Date/heure courante (format : `%FT%T.%f`, voir la Référence API extension WeeChat / util_strftimeval ↗).

#### Config

La fonction de rappel "config" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`tg_option` | chaîne | Option.
`tg_value` | chaîne | Valeur.

#### Focus

La fonction de rappel "focus" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`window` | pointeur | Fenêtre.
`buffer` | pointeur | Tampon.

La table de hachage contient toutes les clés/valeurs de la table de hachage reçue (type : chaîne/chaîne).

#### Info

La fonction de rappel "info" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`tg_info_name` | string | Nom de l’info.
`tg_arguments` | string | Paramètres.
`tg_info` | string | Chaîne vide (l’info à renvoyer).

#### Info_hashtable

La fonction de rappel "info_hashtable" définit les variables suivantes dans la table de hachage :

Variable | Type | Description
--- | --- | ---
`tg_info_name` | string | Nom de l’info.

La table de hachage contient toutes les clés/valeurs de la table de hachage reçue (type : chaîne/chaîne).

### 14.9. Exemples

#### Couleur pour les URLs

Afficher les URLs en vert :

    /trigger add url_color modifier weechat_print "${tg_notify}" "==[a-zA-Z0-9_]+://[^ ]+==${color:green}${re:0}${color:reset}=="

Note | La simple expression régulière utilisée pour détecter l’URL peut ne pas capturer correctement toutes les URLs, mais elle est plus rapide qu’une expression régulière complexe.

#### Pong auto sur les requêtes ping

Lorsque quelqu’un envoie un "ping" dans un tampon privé, le trigger répondra automatiquement avec un `pong` :

    /trigger add pong print "" "${type} == private && ${tg_message} == ping" "" "pong"

#### Disposition réceptive

Les triggers suivants peuvent être utilisées pour personnaliser l’affichage lorsque la taille du terminal change :

    /trigger add resize_small signal signal_sigwinch "${info:term_width} < 100" "" "/bar hide nicklist"
    /trigger add resize_big signal signal_sigwinch "${info:term_width} >= 100" "" "/bar show nicklist"

Les triggers attrapent le signal "signal_sigwinch", qui et envoyé par WeeChat lorsque le signal SIGWINCH est reçu (lorsque la taille du terminal a changé).

La condition avec `${info:term_width}` vérifie la largeur du terminal (vous pouvez aussi utiliser `${info:term_height}` si besoin).

Dans l’exemple, si le terminal devient petit, la liste de pseudos est cachée. Et la barre est restaurée lorsque la largeur du terminal est supérieure ou égale à 100 caractères.

#### Sauvegarde automatique de la configuration

Vous pouvez sauvegarder automatiquement les fichiers de configuration (`*.conf`), par example chaque heure :

    /trigger add cfgsave timer 3600000;0;0 "" "" "/mute /save"

Les paramètres pour le minuteur sont :

- 3600000 : 3600 * 1000 millisecondes, la fonction de rappel est appelée toutes les heures

- 0 : alignement sur la seconde (pas d’alignement ici)

- 0 : nombre maximum d’appels (0 = pas de fin pour le minuteur)

La commande `/mute /save` sauvegarde silencieusement les fichiers de configuration (rien n’est affiché sur le tampon "core").

### 14.10. Commandes

- `trigger`: manage triggers, the Swiss Army knife for WeeChat

    /trigger  list [-o|-ol|-i|-il]
              listfull
              listdefault
              add|addoff|addreplace <name> <hook> ["<arguments>" ["<conditions>" ["<regex>" ["<command>" ["<return_code>" ["<post_action>"]]]]]]
              addinput [<hook>]
              input|output|recreate <name>
              set <name> <option> <value>
              rename|copy <name> <new_name>
              enable|disable|toggle [<name>|<mask>...]
              restart <name>|<mask>...
              show <name>
              del <name>|<mask>...
              restore <name>|<mask>...
              default -yes
              monitor [<filter>]

           list: list triggers (without argument, this list is displayed)
             -o: send list of triggers enabled to buffer (string in English)
            -ol: send list of triggers enabled to buffer (translated string)
             -i: copy list of triggers enabled in command line (for sending to buffer) (string in English)
            -il: copy list of triggers enabled in command line (for sending to buffer) (translated string)
       listfull: list triggers with detailed info for each trigger
    listdefault: list default triggers
            add: add a trigger
         addoff: add a trigger (disabled)
     addreplace: add or replace an existing trigger
           name: name of trigger
           hook: signal, hsignal, modifier, line, print, command, command_run, timer, config, focus, info, info_hashtable
      arguments: arguments for the hook, depending on hook (separated by semicolons):
                 type `signal`: name(s) of signal (required)
                 type `hsignal`: name(s) of hsignal (required)
                 type `modifier`: name(s) of modifier (required)
                 type `line`: buffer type ("formatted", "free" or "*"), list of buffer masks, tags
                 type `print`: buffer, tags, message, strip colors
                 type `command`: command (required), description, arguments, description of arguments, completion (all arguments except command are evaluated, "${tg_trigger_name}" is replaced by the trigger name, see /help eval)
                 type `command_run`: command(s) (required)
                 type `timer`: interval (required), align on second, max calls
                 type `config`: name(s) of option (required)
                 type `focus`: name(s) of area (required)
                 type `info`: name(s) of info (required)
                 type `info_hashtable`: name(s) of info (required)
     conditions: evaluated conditions for the trigger
          regex: one or more regular expressions to replace strings in variables
        command: command to execute (many commands can be separated by ";")
    return_code: return code in callback (ok (default), ok_eat, error)
    post_action: action to take after execution (none (default), disable, delete)
       addinput: set input with default arguments to create a trigger
          input: set input with the command used to create the trigger
         output: send the command to create the trigger on the buffer
       recreate: same as "input", with option "addreplace" instead of "add"
            set: set an option in a trigger
         option: name of option: name, hook, arguments, conditions, regex, command, return_code (for help on option, you can type: /help trigger.trigger.<name>.<option>)
          value: new value for the option
         rename: rename a trigger
           copy: copy a trigger
         enable: enable triggers (without arguments: enable triggers globally)
        disable: disable triggers (without arguments: disable triggers globally)
         toggle: toggle triggers (without arguments: toggle triggers globally)
        restart: restart triggers (recreate the hooks)
           show: show detailed info on a trigger (with some stats)
            del: delete triggers
        restore: restore triggers with the default values (works only for default triggers)
           mask: name where wildcard "*" is allowed
        default: delete all triggers and restore default ones
        monitor: open the trigger monitor buffer, with optional filter
         filter: filter hooks/triggers to display (a hook must start with "@", for example "@signal"), many filters can be separated by commas; wildcard "*" is allowed in each trigger name

    When a trigger callback is called, following actions are performed, in this order:
      1. check conditions; if false, exit
      2. replace text using POSIX extended regular expression(s) (if defined in trigger)
      3. execute command(s) (if defined in trigger)
      4. exit with a return code (except for modifier, line, focus, info and info_hashtable)
      5. perform post action

    Examples (you can also look at default triggers with /trigger listdefault):
      add text attributes *bold*, _underline_ and /italic/ (only in user messages):
        /trigger add effects modifier weechat_print "${tg_tag_nick}" "==\*([^ ]+)\*==*${color:bold}${re:1}${color:-bold}*== ==_([^ ]+)_==_${color:underline}${re:1}${color:-underline}_== ==/([^ ]+)/==/${color:italic}${re:1}${color:-italic}/"
      hide nicklist bar on small terminals:
        /trigger add resize_small signal signal_sigwinch "${info:term_width} < 100" "" "/bar hide nicklist"
        /trigger add resize_big signal signal_sigwinch "${info:term_width} >= 100" "" "/bar show nicklist"
      silently save config each hour:
        /trigger add cfgsave timer 3600000;0;0 "" "" "/mute /save"
      silently save WeeChat session at midnight (see /help upgrade):
        /trigger add session_save signal day_changed "" "" "/mute /upgrade -save"
      open trigger monitor and show only modifiers and triggers whose name starts with "resize":
        /trigger monitor @modifier,resize*

### 14.11. Options

Sections dans le fichier trigger.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set trigger.look.*` | Aspect/présentation.
`color` | `/set trigger.color.*` | Couleurs.
`trigger` | `/trigger add /trigger set /set trigger.trigger.*` | Options des triggers.

Options :

- trigger.color.flag_command

  - description: text color for command flag (in /trigger list)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightgreen`

- trigger.color.flag_conditions

  - description: text color for conditions flag (in /trigger list)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- trigger.color.flag_post_action

  - description: text color for post action flag (in /trigger list)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightblue`

- trigger.color.flag_regex

  - description: text color for regex flag (in /trigger list)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightcyan`

- trigger.color.flag_return_code

  - description: text color for return code flag (in /trigger list)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightmagenta`

- trigger.color.identifier

  - description: text color for trigger context identifier in monitor buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- trigger.color.regex

  - description: text color for regular expressions

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- trigger.color.replace

  - description: text color for replacement text (for regular expressions)

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `cyan`

- trigger.look.enabled

  - description: enable trigger support

  - type: boolean

  - values: on, off

  - default value: `on`

- trigger.look.monitor_strip_colors

  - description: strip colors in hashtable values displayed on monitor buffer

  - type: boolean

  - values: on, off

  - default value: `off`

## 15. Extension de WeeChat

WeeChat est conçu de manière modulaire et peut être étendu avec des extensions et des scripts.

Il est important de bien faire la différence entre une extension et un script : une extension est un fichier binaire compilé et chargé avec la commande `/plugin`, tandis qu’un script est un fichier texte chargé par une extension comme python par la commande `/python`.

### 15.1. Extensions

Une extension est une bibliothèque dynamique, écrite en C et compilée, qui est chargée par WeeChat. Sous GNU/Linux, ce fichier a une extension ".so", et ".dll" sous Windows.

Les extensions trouvées sont automatiquement chargées par WeeChat lorsqu’il démarre, et il est possible de charger et décharger des extensions pendant que WeeChat tourne.

Vous pouvez utiliser la commande `/plugin` pour charger/décharger une extension, ou afficher les extensions chargées.

Quand une extension est déchargée, WeeChat supprime :

- les tampons

- les options de configuration (les options sont écrites dans les fichiers)

- tous les "hooks" : commandes, modificateurs, processus, etc.

- les infos et infolists

- les "hdata"

- les objets de barre.

Exemples pour charger, décharger et afficher les extensions :

    /plugin load irc
    /plugin unload irc
    /plugin list

Les extensions par défaut sont :

Extension | Description
--- | ---
alias | Définition d’alias pour les commandes.
buflist | Objet de barre avec la liste des tampons.
charset | Encodage/encodage avec jeu de caractère sur les tampons.
exec | Exécution de commandes externes dans WeeChat.
fifo | Tube FIFO pour envoyer des commandes à distance vers WeeChat.
fset | Modification rapide des options de WeeChat et des extensions.
irc | Discussion avec le protocole IRC.
logger | Enregistrement des tampons dans des fichiers.
relay | Relai de données via le réseau.
script | Gestionnaire de scripts.
python | Interface (API) pour scripts Python.
perl | Interface (API) pour scripts Perl.
ruby | Interface (API) pour scripts Ruby.
lua | Interface (API) pour scripts Lua.
tcl | Interface (API) pour scripts Tcl.
guile | Interface (API) pour scripts Guile (scheme).
javascript | Interface (API) pour scripts JavaScript.
php | Interface (API) pour scripts PHP.
spell | Vérification orthographique de la ligne de commande.
trigger | Remplacement de texte et exécution de commande sur des évènements de WeeChat ou des extensions.
typing | Affichage des utilisateurs qui sont en train d’écrire des messages.
xfer | Transfert de fichier et discussion directe.

Pour en apprendre plus sur le développement d’extension ou de script (via l’API), merci de consulter la Référence API extension WeeChat ↗ ou le Guide pour scripts WeeChat ↗.

### 15.2. Scripts

WeeChat fournit 8 extensions pour scripts : Python, Perl, Ruby, Lua, Tcl, Guile (scheme), JavaScript et PHP. Ces extensions peuvent charger, exécuter et décharger des scripts pour ces langages.

Pour plus d’informations sur comment écrire des scripts, ou sur l’API WeeChat pour les scripts, merci de lire le Guide pour scripts WeeChat ↗.

#### Gestionnaire de scripts

Le gestionnaire de scripts (commands /script) est utilisé pour charger/décharger des scripts pour n’importe quel langage, et installer/supprimer des scripts du dépôt WeeChat, qui sont visibles sur cette page ↗.

Pour des considérations de confidentialité, le téléchargement des scripts est désactivé par défaut.
Pour l’activer, tapez cette commande :

    /script enable

Vous pouvez alors télécharger la liste des scripts et les afficher dans un tampon avec la commande /script :

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │1.weechat│322/322 scripts (filtre : *) | Tri : i,p,n | Alt+touche/entrée : i=installer, r=supprimer, l=charg>>│
    │2.scripts│*      autosort.py                     3.10    2023-12-31 | Garder automatiquement les tampons group│
    │         │*      highmon.pl                      2.7     2020-06-21 | Ajouter un tampon moniteur de highlights│
    │         │*ia r  grep.py                   0.8.6 0.8.6   2022-11-11 | Recherche d'expression régulière dans le│
    │         │*      colorize_nicks.py               32      2023-10-30 | Utiliser la couleur des pseudos weechat │
    │         │*ia r  go.py                     3.0.1 3.0.1   2024-05-30 | Déplacement rapide dans les tampons.    │
    │         │       aesthetic.py                    1.0.6   2020-10-25 | Affiche des messages de manière plus E S│
    │         │       aformat.py                      0.2     2018-06-21 | Formatage de texte alternatif, pratique │
    │         │       alternatetz.py                  0.4     2022-01-25 | Ajouter un objet de barre avec un fuseau│
    │         │       amarok2.pl                      0.7     2012-05-08 | Contrôler et afficher la musique jouée p│
    │         │       amqp_notify.rb                  0.1     2011-01-12 | Envoyer les messages privés et highlight│
    │         │       announce_url_title.py           19      2021-06-05 | Annoncer le titre de l'URL à l'utilisate│
    │         │       anotify.py                      1.0.2   2020-05-16 | Notifications des messages privés, highl│
    │         │       anti_password.py                1.2.1   2021-03-13 | Empêcher un mot de passe d'être envoyé a│
    │         │       apply_corrections.py            1.3     2018-06-21 | Afficher le texte corrigé quand un utili│
    │         │       arespond.py                     0.1.2   2022-01-25 | Simple auto-réponse.                    │
    │         │       atcomplete.pl                   0.001   2016-10-29 | Complétion avec Tab des pseudos préfixés│
    │         │       audacious.pl                    0.3     2009-05-03 | Afficher la chanson actuellement jouée p│
    │         │       auth.rb                         0.3     2014-05-30 | S'authentifier automatiquement avec Nick│
    │         │       auto_away.py                    0.4     2018-11-11 | Un script simple d'auto absence (away). │
    │         │       autoauth.py                     1.3     2021-11-07 | Identification automatique en cas de cha│
    │         │       autobump.py                     0.1.0   2019-06-14 | Trier les tampons selon l'activité.     │
    │         │       autoconf.py                     0.4     2021-05-11 | Charger/sauver automatiquement les optio│
    │         │       autoconnect.py                  0.3.3   2019-10-06 | Réouvrir les serveurs et canaux ouverts │
    │         │       autojoin_on_invite.py           0.9     2022-10-25 | Rejoindre automatiquement les canaux où │
    │         │       automarkbuffer.py               1.0     2015-03-31 | Marquer les tampons comme lus s'il n'y a│
    │         │       automerge.py                    0.2     2018-03-03 | Fusionner automatiquement les tampons se│
    │         │[12:55] [2] [script] 2:scripts                                                                      │
    │         │█                                                                                                   │
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

##### Commandes Script

- `script`: WeeChat script manager

    /script  enable
             list [-o|-ol|-i|-il]
             search <text>
             show <script>
             load|unload|reload <script>...
             autoload|noautoload|toggleautoload <script>...
             install|remove|installremove|hold [-q] <script>...
             upgrade
             update
             -up|-down [<number>]
             -go <line>|end

            enable: enable download of scripts (turn on option script.scripts.download_enabled)
              list: list loaded scripts (all languages)
                -o: send list of loaded scripts to buffer (string in English)
               -ol: send list of loaded scripts to buffer (translated string)
                -i: copy list of loaded scripts in command line (for sending to buffer) (string in English)
               -il: copy list of loaded scripts in command line (for sending to buffer) (translated string)
            search: search scripts by tags, language (python, perl, ...), filename extension (py, pl, ...) or text; result is displayed on scripts buffer
              show: show detailed info about a script
              load: load script(s)
            unload: unload script(s)
            reload: reload script(s)
          autoload: autoload the script
        noautoload: do not autoload the script
    toggleautoload: toggle autoload
           install: install/upgrade script(s)
            remove: remove script(s)
     installremove: install or remove script(s), depending on current state
              hold: hold/unhold script(s) (a script held will not be upgraded anymore and cannot be removed)
                -q: quiet mode: do not display messages
           upgrade: upgrade all installed scripts which are obsolete (new version available)
            update: update local scripts cache
               -up: move the selected line up by "number" lines
             -down: move the selected line down by "number" lines
               -go: select a line by number, first line number is 0 ("end" to select the last line)

    Without argument, this command opens a buffer with list of scripts.

    On script buffer, the possible status for each script are:
      `*`: popular script
      `i`: installed
      `a`: autoloaded
      `H`: held
      `r`: running (loaded)
      `N`: obsolete (new version available)

    In output of /script list, this additional status can be displayed:
      `?`: unknown script (cannot be downloaded/updated)

    In input of script buffer, word(s) are used to filter scripts on description, tags, ...). The input "*" removes the filter.

    For keys, input and mouse actions on the buffer, see key bindings in User's guide.

    Examples:
      /script search url
      /script install go.py urlserver.py
      /script remove go.py
      /script hold urlserver.py
      /script reload urlserver
      /script upgrade

##### Options Script

Sections dans le fichier script.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set script.look.*` | Aspect/présentation.
`color` | `/set script.color.*` | Couleurs.
`scripts` | `/set script.scripts.*` | Options pour le téléchargement des scripts.

Options :

- script.color.status_autoloaded

  - description: color for status "autoloaded" ("a")

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `39`

- script.color.status_held

  - description: color for status "held" ("H")

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- script.color.status_installed

  - description: color for status "installed" ("i")

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightcyan`

- script.color.status_obsolete

  - description: color for status "obsolete" ("N")

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightmagenta`

- script.color.status_popular

  - description: color for status "popular" ("*")

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- script.color.status_running

  - description: color for status "running" ("r")

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightgreen`

- script.color.status_unknown

  - description: color for status "unknown" ("?")

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `lightred`

- script.color.text

  - description: text color in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- script.color.text_bg

  - description: background color in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `default`

- script.color.text_bg_selected

  - description: background color for selected line in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `24`

- script.color.text_date

  - description: text color of dates in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `65`

- script.color.text_date_selected

  - description: text color of dates for selected line in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `50`

- script.color.text_delimiters

  - description: text color of delimiters in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `240`

- script.color.text_description

  - description: text color of description in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `249`

- script.color.text_description_selected

  - description: text color of description for selected line in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- script.color.text_extension

  - description: text color of extension in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `242`

- script.color.text_extension_selected

  - description: text color of extension for selected line in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `248`

- script.color.text_name

  - description: text color of script name in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `73`

- script.color.text_name_selected

  - description: text color of script name for selected line in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `51`

- script.color.text_selected

  - description: text color for selected line in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- script.color.text_tags

  - description: text color of tags in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `brown`

- script.color.text_tags_selected

  - description: text color of tags for selected line in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `yellow`

- script.color.text_version

  - description: text color of version in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `100`

- script.color.text_version_loaded

  - description: text color of version loaded in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `246`

- script.color.text_version_loaded_selected

  - description: text color of version loaded for selected line in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `white`

- script.color.text_version_selected

  - description: text color of version for selected line in script buffer

  - type: color

  - values: a WeeChat color name (default, black, (dark)gray, white, (light)red, (light)green, brown, yellow, (light)blue, (light)magenta, (light)cyan), a terminal color number or an alias; attributes are allowed before color (for text color only, not background): "%" for blink, "." for "dim" (half bright), "*" for bold, "!" for reverse, "/" for italic, "_" for underline

  - default value: `228`

- script.look.columns

  - description: format of columns displayed in script buffer: following column identifiers are replaced by their values: %a=author, %d=description, %D=date added, %e=extension, %l=language, %L=license, %n=name with extension, %N=name, %r=requirements, %s=status, %t=tags, %u=date updated, %v=version, %V=version loaded, %w=min_weechat, %W=max_weechat)

  - type: string

  - values: any string

  - default value: `"%s %n %V %v %u | %d | %t"`

- script.look.diff_color

  - description: colorize output of diff

  - type: boolean

  - values: on, off

  - default value: `on`

- script.look.diff_command

  - description: command used to show differences between script installed and the new version in repository ("auto" = auto detect diff command (git or diff), empty value = disable diff, other string = name of command, for example "diff")

  - type: string

  - values: any string

  - default value: `"auto"`

- script.look.display_source

  - description: display source code of script on buffer with detail on a script (script is downloaded in a temporary file when detail on script is displayed)

  - type: boolean

  - values: on, off

  - default value: `on`

- script.look.quiet_actions

  - description: quiet actions on script buffer: do not display messages on core buffer when scripts are installed/removed/loaded/unloaded (only errors are displayed)

  - type: boolean

  - values: on, off

  - default value: `on`

- script.look.sort

  - description: default sort keys for scripts: comma-separated list of identifiers: a=author, A=autoloaded, d=date added, e=extension, i=installed, l=language, n=name, o=obsolete, p=popularity, r=running, u=date updated; char "-" can be used before identifier to reverse order; example: "i,u": installed scripts first, sorted by update date

  - type: string

  - values: any string

  - default value: `"i,p,n"`

- script.look.translate_description

  - description: translate description of scripts (if translation is available in your language, otherwise English version is used)

  - type: boolean

  - values: on, off

  - default value: `on`

- script.look.use_keys

  - description: use keys alt+X in script buffer to do actions on scripts (alt+i = install, alt+r = remove, ...); if disabled, only the input is allowed: i, r, ...

  - type: boolean

  - values: on, off

  - default value: `on`

- script.scripts.autoload

  - description: autoload scripts installed (make a link in "autoload" directory to script in parent directory)

  - type: boolean

  - values: on, off

  - default value: `on`

- script.scripts.cache_expire

  - description: local cache expiration time, in minutes (-1 = never expires, 0 = always expire)

  - type: integer

  - values: -1 .. 525600

  - default value: `1440`

- script.scripts.download_enabled

  - description: enable download of files from the scripts repository when the /script command is used (list of scripts and scripts themselves); the list of scripts is downloaded from the URL specified in the option script.scripts.url; WeeChat will sometimes download again the list of scripts when you use the /script command, even if you don't install a script

  - type: boolean

  - values: on, off

  - default value: `off`

- script.scripts.download_timeout

  - description: timeout (in seconds) for download of scripts and list of scripts

  - type: integer

  - values: 1 .. 3600

  - default value: `30`

- script.scripts.hold

  - description: scripts to "hold": comma-separated list of scripts which will never been upgraded and cannot be removed, for example: "go.py,urlserver.py"

  - type: string

  - values: any string

  - default value: `""`

- script.scripts.path

  - description: local cache directory for scripts (path is evaluated, see function string_eval_path_home in plugin API reference)

  - type: string

  - values: any string

  - default value: `"${weechat_cache_dir}/script"`

- script.scripts.url

  - description: URL for file with list of scripts

  - type: string

  - values: any string

  - default value: `"https://weechat.org/files/plugins.xml.gz"`

#### Extensions pour les scripts

##### Commandes Python

- `python`: list/load/unload scripts

    /python  list|listfull [<name>]
             load [-q] <filename>
             autoload
             reload|unload [-q] [<name>]
             eval [-o|-oc] <code>
             version

        list: list loaded scripts
    listfull: list loaded scripts (verbose)
        load: load a script
    autoload: load all scripts in "autoload" directory
      reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
      unload: unload a script (if no name given, unload all scripts)
    filename: script (file) to load
          -q: quiet mode: do not display messages
        name: a script name (name used in call to "register" function)
        eval: evaluate source code and display result on current buffer
          -o: send evaluation result to the buffer without executing commands
         -oc: send evaluation result to the buffer and execute commands
        code: source code to evaluate
     version: display the version of interpreter used

    Without argument, this command lists all loaded scripts.

##### Commandes Perl

- `perl`: list/load/unload scripts

    /perl  list|listfull [<name>]
           load [-q] <filename>
           autoload
           reload|unload [-q] [<name>]
           eval [-o|-oc] <code>
           version

        list: list loaded scripts
    listfull: list loaded scripts (verbose)
        load: load a script
    autoload: load all scripts in "autoload" directory
      reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
      unload: unload a script (if no name given, unload all scripts)
    filename: script (file) to load
          -q: quiet mode: do not display messages
        name: a script name (name used in call to "register" function)
        eval: evaluate source code and display result on current buffer
          -o: send evaluation result to the buffer without executing commands
         -oc: send evaluation result to the buffer and execute commands
        code: source code to evaluate
     version: display the version of interpreter used

    Without argument, this command lists all loaded scripts.

##### Commandes Ruby

- `ruby`: list/load/unload scripts

    /ruby  list|listfull [<name>]
           load [-q] <filename>
           autoload
           reload|unload [-q] [<name>]
           eval [-o|-oc] <code>
           version

        list: list loaded scripts
    listfull: list loaded scripts (verbose)
        load: load a script
    autoload: load all scripts in "autoload" directory
      reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
      unload: unload a script (if no name given, unload all scripts)
    filename: script (file) to load
          -q: quiet mode: do not display messages
        name: a script name (name used in call to "register" function)
        eval: evaluate source code and display result on current buffer
          -o: send evaluation result to the buffer without executing commands
         -oc: send evaluation result to the buffer and execute commands
        code: source code to evaluate
     version: display the version of interpreter used

    Without argument, this command lists all loaded scripts.

##### Commandes Lua

- `lua`: list/load/unload scripts

    /lua  list|listfull [<name>]
          load [-q] <filename>
          autoload
          reload|unload [-q] [<name>]
          eval [-o|-oc] <code>
          version

        list: list loaded scripts
    listfull: list loaded scripts (verbose)
        load: load a script
    autoload: load all scripts in "autoload" directory
      reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
      unload: unload a script (if no name given, unload all scripts)
    filename: script (file) to load
          -q: quiet mode: do not display messages
        name: a script name (name used in call to "register" function)
        eval: evaluate source code and display result on current buffer
          -o: send evaluation result to the buffer without executing commands
         -oc: send evaluation result to the buffer and execute commands
        code: source code to evaluate
     version: display the version of interpreter used

    Without argument, this command lists all loaded scripts.

##### Commandes Tcl

- `tcl`: list/load/unload scripts

    /tcl  list|listfull [<name>]
          load [-q] <filename>
          autoload
          reload|unload [-q] [<name>]
          eval [-o|-oc] <code>
          version

        list: list loaded scripts
    listfull: list loaded scripts (verbose)
        load: load a script
    autoload: load all scripts in "autoload" directory
      reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
      unload: unload a script (if no name given, unload all scripts)
    filename: script (file) to load
          -q: quiet mode: do not display messages
        name: a script name (name used in call to "register" function)
        eval: evaluate source code and display result on current buffer
          -o: send evaluation result to the buffer without executing commands
         -oc: send evaluation result to the buffer and execute commands
        code: source code to evaluate
     version: display the version of interpreter used

    Without argument, this command lists all loaded scripts.

##### Commandes Guile

- `guile`: list/load/unload scripts

    /guile  list|listfull [<name>]
            load [-q] <filename>
            autoload
            reload|unload [-q] [<name>]
            eval [-o|-oc] <code>
            version

        list: list loaded scripts
    listfull: list loaded scripts (verbose)
        load: load a script
    autoload: load all scripts in "autoload" directory
      reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
      unload: unload a script (if no name given, unload all scripts)
    filename: script (file) to load
          -q: quiet mode: do not display messages
        name: a script name (name used in call to "register" function)
        eval: evaluate source code and display result on current buffer
          -o: send evaluation result to the buffer without executing commands
         -oc: send evaluation result to the buffer and execute commands
        code: source code to evaluate
     version: display the version of interpreter used

    Without argument, this command lists all loaded scripts.

##### Commandes PHP

- `php`: list/load/unload scripts

    /php  list|listfull [<name>]
          load [-q] <filename>
          autoload
          reload|unload [-q] [<name>]
          eval [-o|-oc] <code>
          version

        list: list loaded scripts
    listfull: list loaded scripts (verbose)
        load: load a script
    autoload: load all scripts in "autoload" directory
      reload: reload a script (if no name given, unload all scripts, then load all scripts in "autoload" directory)
      unload: unload a script (if no name given, unload all scripts)
    filename: script (file) to load
          -q: quiet mode: do not display messages
        name: a script name (name used in call to "register" function)
        eval: evaluate source code and display result on current buffer
          -o: send evaluation result to the buffer without executing commands
         -oc: send evaluation result to the buffer and execute commands
        code: source code to evaluate
     version: display the version of interpreter used

    Without argument, this command lists all loaded scripts.

##### Options Python

Sections dans le fichier python.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set python.look.*` | Aspect/présentation.

Options :

- python.look.check_license

  - description: check the license of scripts when they are loaded: if the license is different from the plugin license, a warning is displayed

  - type: boolean

  - values: on, off

  - default value: `off`

- python.look.eval_keep_context

  - description: keep context between two calls to the source code evaluation (option "eval" of script command or info "%s_eval"); a hidden script is used to eval script code; if this option is disabled, this hidden script is unloaded after each eval: this uses less memory, but is slower

  - type: boolean

  - values: on, off

  - default value: `on`

##### Options Perl

Sections dans le fichier perl.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set perl.look.*` | Aspect/présentation.

Options :

- perl.look.check_license

  - description: check the license of scripts when they are loaded: if the license is different from the plugin license, a warning is displayed

  - type: boolean

  - values: on, off

  - default value: `off`

- perl.look.eval_keep_context

  - description: keep context between two calls to the source code evaluation (option "eval" of script command or info "%s_eval"); a hidden script is used to eval script code; if this option is disabled, this hidden script is unloaded after each eval: this uses less memory, but is slower

  - type: boolean

  - values: on, off

  - default value: `on`

##### Options Ruby

Sections dans le fichier ruby.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set ruby.look.*` | Aspect/présentation.

Options :

- ruby.look.check_license

  - description: check the license of scripts when they are loaded: if the license is different from the plugin license, a warning is displayed

  - type: boolean

  - values: on, off

  - default value: `off`

- ruby.look.eval_keep_context

  - description: keep context between two calls to the source code evaluation (option "eval" of script command or info "%s_eval"); a hidden script is used to eval script code; if this option is disabled, this hidden script is unloaded after each eval: this uses less memory, but is slower

  - type: boolean

  - values: on, off

  - default value: `on`

##### Options Lua

Sections dans le fichier lua.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set lua.look.*` | Aspect/présentation.

Options :

- lua.look.check_license

  - description: check the license of scripts when they are loaded: if the license is different from the plugin license, a warning is displayed

  - type: boolean

  - values: on, off

  - default value: `off`

- lua.look.eval_keep_context

  - description: keep context between two calls to the source code evaluation (option "eval" of script command or info "%s_eval"); a hidden script is used to eval script code; if this option is disabled, this hidden script is unloaded after each eval: this uses less memory, but is slower

  - type: boolean

  - values: on, off

  - default value: `on`

##### Options Tcl

Sections dans le fichier tcl.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set tcl.look.*` | Aspect/présentation.

Options :

- tcl.look.check_license

  - description: check the license of scripts when they are loaded: if the license is different from the plugin license, a warning is displayed

  - type: boolean

  - values: on, off

  - default value: `off`

- tcl.look.eval_keep_context

  - description: keep context between two calls to the source code evaluation (option "eval" of script command or info "%s_eval"); a hidden script is used to eval script code; if this option is disabled, this hidden script is unloaded after each eval: this uses less memory, but is slower

  - type: boolean

  - values: on, off

  - default value: `on`

##### Options Guile

Sections dans le fichier guile.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set guile.look.*` | Aspect/présentation.

Options :

- guile.look.check_license

  - description: check the license of scripts when they are loaded: if the license is different from the plugin license, a warning is displayed

  - type: boolean

  - values: on, off

  - default value: `off`

- guile.look.eval_keep_context

  - description: keep context between two calls to the source code evaluation (option "eval" of script command or info "%s_eval"); a hidden script is used to eval script code; if this option is disabled, this hidden script is unloaded after each eval: this uses less memory, but is slower

  - type: boolean

  - values: on, off

  - default value: `on`

##### Options PHP

Sections dans le fichier php.conf :

Section | Commande de contrôle | Description
--- | --- | ---
`look` | `/set php.look.*` | Aspect/présentation.

Options :

- php.look.check_license

  - description: check the license of scripts when they are loaded: if the license is different from the plugin license, a warning is displayed

  - type: boolean

  - values: on, off

  - default value: `off`

- php.look.eval_keep_context

  - description: keep context between two calls to the source code evaluation (option "eval" of script command or info "%s_eval"); a hidden script is used to eval script code; if this option is disabled, this hidden script is unloaded after each eval: this uses less memory, but is slower

  - type: boolean

  - values: on, off

  - default value: `on`

## 16. Support

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

Pour le support via IRC, sur le serveur irc.libera.chat :

- canaux officiels (avec les développeurs) :

  - #weechat (Anglais)

  - #weechat-fr (Français)

- canaux non officiels :

  - #weechat-de (Allemand)

  - #weechat-fi (Finnois)

Pour les autres formes de support, voir cette page ↗.