# WeeChat Benutzerhandbuch

Sébastien Helleu
flashcode@flashtux.org
version 4.5.2

Übersetzer:

- Nils Görs <weechatter@arcor.de>, 2010-2022

Diese Anleitung beschreibt den WeeChat Chat Client und ist Teil von WeeChat.

Die neueste Version dieses Dokuments finden Sie unter this page ↗.

## 1. Einleitung

WeeChat (Wee Enhanced Environment for Chat) ist ein freier, schneller und schlanker Chat-Client der für unterschiedliche Betriebssysteme entwickelt wird.

### 1.1. Funktionen

wesentliche Merkmale:

- Unterstützung verschiedener Protokolle (in der Hauptsache das IRC-Protokoll)

- mehrere Server Verbindungen sind möglich (mittels TLS, IPv6, proxy)

- klein, schnell und schlank

- den eigenen, persönlichen, Bedürfnissen anpassbar und durch Erweiterungen und Skripten in der Funktionalität erweiterbar

- IRC RFCs konform 1459 ↗, 2810 ↗, 2811 ↗, 2812 ↗, 2813 ↗ und 7194 ↗

- IRC proxy und relay für WeeChat und Remote-Schnittstellen

- Betriebssystemunabhängig (GNU/Linux, *BSD, macOS, Windows und weitere)

- 100% GPL, freie Software

Die Liste aller Funktionen finden Sie unter this page ↗.

### 1.2. Vorbereitung

Um WeeChat zu installieren wird folgendes benötigt:

- ein lauffähiges GNU/Linux System (mit Kompilierungswerkzeugen für Quellpakete), oder ein kompatibles OS

- root Privilegien (um WeeChat in das Systemverzeichnis zu installieren)

- einige Bibliotheken (siehe Abhängigkeiten).

## 2. Installation

### 2.1. Binärpaket

Binärpakete sind für folgende Distributionen erhältlich:

- Arch Linux: `pacman -S weechat`

- Cygwin (Windows): wähle das WeeChat Paket in setup.exe aus

- Debian/Ubuntu (oder Debian kompatible Distribution): `apt-get install weechat-curses weechat-plugins`
  Für neueste Versionen und nächtliche Builds: Debian repositories ↗

- Fedora Core: `dnf install weechat`

- FreeBSD: `pkg install weechat`

- Gentoo: `emerge weechat`

- Mandriva/RedHat (oder eine RPM kompatible Distribution): `rpm -i /path/to/weechat-x.y.z-1.i386.rpm`

- openSUSE: `zypper in weechat`

- Sourcemage: `cast weechat`

- macOS (mittels Homebrew ↗): `brew install weechat` (für Hilfe siehe: `brew info weechat`)

zusätzliche Pakete können bzw. sollten installiert werden. Zum Beispiel: weechat-plugins.

Für nicht aufgeführte Distributionen schauen Sie bitte in die jeweiligen Anleitung der Distribution, wie man Pakete installiert.

### 2.2. Container

Container mit WeeChat können direkt erstellt oder installiert werden von Docker Hub ↗.
Weitere Informationen finden Sie in der README in dem weechat-container ↗ Repositorium.

### 2.3. Quellpakete

WeeChat muss mit CMake erstellt werden.

Anmerkung | Unter macOS kann Homebrew ↗ verwendet werden: `brew install --build-from-source weechat`.

#### Abhängigkeiten

Die folgende Tabelle zeigt eine Auflistung der Pakete, die zum Erstellen von WeeChat erforderlich sind:

Paket (1) | Version | Funktionen
--- | --- | ---
C Kompiler (gcc / clang) |  | kompiliert C Quelldaten.
cmake | ≥ 3.0 | bauen.
pkgconf / pkg-config |  | entdeckt installierte Bibliotheken.
libncurses-dev |  | Ncurses Oberfläche.
libcurl4-gnutls-dev |  | URL Transfer.
libgcrypt20-dev |  | Geschützte Daten, IRC SASL Authentifikation.
libgnutls28-dev | ≥ 2.2.0 (2) | IRC-Erweiterung: Unterstützung von TLS Verbindungen, IRC SASL Authentifikation (ECDSA-NIST256P-CHALLENGE). Relay-Erweiterung: Untersützung von TLS Verbindungen.
zlib1g-dev |  | Logger-Erweitertung: Kompression von rotierenden Protokolldateien (gzip). Relay-Erweiterung: Kompression von Nachrichten (WeeChat → client) with zlib ↗ (api und weechat Protokollen). Script-Erweiterung: Lesen der Repository-Indexdatei (gzip).

Anmerkung | (1) Der Name stammt von der Debian GNU/Linux Bookworm-Distribution, Version und Name können in anderen Distributionen anders lauten. (2) GnuTLS ≥ 3.0.21 wird benötigt um eine IRC SASL Authentifizierung mittels ECDSA-NIST256P-CHALLENGE durchzuführen.

Die folgende Tabelle zeigt die Liste der Pakete, die zum Kompilieren von WeeChat optional sind:

Paket (1) | Version | Funktionen
--- | --- | ---
C++ compiler (g++ / clang++) |  | zum Erstellen der Binärdatei und um Test auszuführen, JavaScript Erweiterung.
gettext |  | Internationalisierung (Übersetzung der Mitteilungen; Hauptsprache ist englisch).
ca-certificates |  | Zertifikate für TLS Verbindungen.
libcjson-dev |  | Relay-Erweiterung: Protokoll "api" (HTTP REST API).
libzstd-dev | ≥ 0.8.1 | Logger-Erweiterung: Kompression von rotierenden Protokolldateien (zstandard). Relay-Erweiterung: Kompression von Nachrichten (WeeChat → client) with Zstandard ↗ (api and weechat protocols).
libaspell-dev / libenchant-dev |  | Spell Erweiterung.
python3-dev | ≥ 3.0 | Python Erweiterung.
libperl-dev |  | Perl Erweiterung.
ruby3.1, ruby3.1-dev | ≥ 1.9.1 | Ruby Erweiterung.
liblua5.4-dev |  | Lua Erweiterung.
tcl-dev | ≥ 8.5 | Tcl Erweiterung.
guile-3.0-dev | ≥ 2.0 | Guile (scheme) Erweiterung.
libv8-dev | ≤ 3.24.3 | JavaScript Erweiterung.
php-dev | ≥ 7.0 | PHP Erweiterung.
libphp-embed | ≥ 7.0 | PHP Erweiterung.
libxml2-dev |  | PHP Erweiterung.
libargon2-dev |  | PHP Erweiterung (wenn PHP ≥ 7.2).
libsodium-dev |  | PHP Erweiterung (wenn PHP ≥ 7.2).
asciidoctor | ≥ 1.5.4 | zum Erstellen der man page und der Dokumentation.
ruby-pygments.rb |  | Build Dokumentation.
libcpputest-dev | ≥ 3.4 | zum Erstellen und um Test auszuführen.

Anmerkung | (1) Der Name stammt von der Debian GNU/Linux Bookworm-Distribution, Version und Name können in anderen Distributionen anders lauten.

Falls eine Debian/Ubuntu basierte Distribution genutzt wird und man einen "deb-src" Quelleintrag in /etc/apt/sources.list eingetragen hat, dann ist es mit folgendem Befehl möglich alle notwendigen Abhängigkeiten zu installieren:

    sudo apt-get build-dep weechat

#### Erstellen

- Installation in das Systemverzeichnis (benötigt root Privilegien):

    mkdir build
    cd build
    cmake ..
    make
    sudo make install

- Installation in ein benutzerdefiniertes Verzeichnis (zum Beispiel ins Heimatverzeichnis):

    mkdir build
    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=/Pfad/zum/Verzeichnis
    make
    make install

Optionen für CMake können mit dem Format, `-DOPTION=VALUE`, genutzt werden.

Liste der verfügbaren Optionen:

Option | Wert | Standardwert | Beschreibung
--- | --- | --- | ---
`CMAKE_BUILD_TYPE` | `Debug`, `Release`, `RelWithDebInfo`, `MinSizeRel` |  | Art des builds: `Debug` (oder `RelWithDebInfo`) sollte verwendet werden, wenn meine eine Entwicklerversion von WeeChat nutzt.
`CMAKE_INSTALL_PREFIX` | Verzeichnis | `/usr/local` | Verzeichnis in welchem WeeChat installiert wird.
`WEECHAT_HOME` | Verzeichnis | `(empty string)` | Standard-Verzeichnis in welchem die Daten liegen. Bei einem leeren Wert (empfohlen) werden standardmäßig XDG-Verzeichnisse verwendet. Wird ein Verzeichnis angegeben, wird dieses Verzeichnis für alle Dateien verwendet. Man kann auch vier, durch Doppelpunkt, getrennten Verzeichnissen angeben. Die Reihenfolge gibt folgende Ziele an: Konfiguration, Daten, Cache, Laufzeit.
`ENABLE_ALIAS` | `ON`, `OFF` | `ON` | kompiliert Alias Erweiterung.
`ENABLE_BUFLIST` | `ON`, `OFF` | `ON` | kompiliert Buflist Erweiterung.
`ENABLE_CHARSET` | `ON`, `OFF` | `ON` | kompiliert Charset Erweiterung.
`ENABLE_CJSON` | `ON`, `OFF` | `ON` | Unterstützung von JSON mittels cJSON ↗ Bibliothek.
`ENABLE_MAN` | `ON`, `OFF` | `OFF` | erstellt die man page.
`ENABLE_DOC` | `ON`, `OFF` | `OFF` | erstellt die HTML Dokumentation.
`ENABLE_DOC_INCOMPLETE` | `ON`, `OFF` | `OFF` | Erstellung der Dokumentation erzwingen, auch wenn einige Erweiterungen nicht kompiliert sind (nicht empfohlen: Dokumente sind unvollständig).
`ENABLE_ENCHANT` | `ON`, `OFF` | `OFF` | kompiliert Spell Erweiterung mittels Enchant.
`ENABLE_EXEC` | `ON`, `OFF` | `ON` | kompiliert Exec Erweiterung.
`ENABLE_FIFO` | `ON`, `OFF` | `ON` | kompiliert Fifo Erweiterung.
`ENABLE_FSET` | `ON`, `OFF` | `ON` | kompiliert Fset Erweiterung.
`ENABLE_GUILE` | `ON`, `OFF` | `ON` | kompiliert Guile Erweiterung (Scheme).
`ENABLE_HEADLESS` | `ON`, `OFF` | `ON` | Kompilieren der headless Binärdatei.
`ENABLE_IRC` | `ON`, `OFF` | `ON` | kompiliert IRC Erweiterung.
`ENABLE_JAVASCRIPT` | `ON`, `OFF` | `OFF` | kompiliert JavaScript Erweiterung.
`ENABLE_LARGEFILE` | `ON`, `OFF` | `ON` | Unterstützung großer Dateien.
`ENABLE_LOGGER` | `ON`, `OFF` | `ON` | kompiliert Logger Erweiterung.
`ENABLE_LUA` | `ON`, `OFF` | `ON` | kompiliert Lua Erweiterung.
`ENABLE_NCURSES` | `ON`, `OFF` | `ON` | kompiliert Ncurses Oberfläche.
`ENABLE_NLS` | `ON`, `OFF` | `ON` | aktiviert NLS (Übersetzungen).
`ENABLE_PERL` | `ON`, `OFF` | `ON` | kompiliert Perl Erweiterung.
`ENABLE_PHP` | `ON`, `OFF` | `ON` | kompiliert PHP Erweiterung.
`ENABLE_PYTHON` | `ON`, `OFF` | `ON` | kompiliert Python Erweiterung.
`ENABLE_RELAY` | `ON`, `OFF` | `ON` | kompiliert Relay Erweiterung.
`ENABLE_RUBY` | `ON`, `OFF` | `ON` | kompiliert Ruby Erweiterung.
`ENABLE_SCRIPT` | `ON`, `OFF` | `ON` | kompiliert Script Erweiterung.
`ENABLE_SCRIPTS` | `ON`, `OFF` | `ON` | kompiliert Skripten-Erweiterungen (Python, Perl, Ruby, Lua, Tcl, Guile, PHP).
`ENABLE_SPELL` | `ON`, `OFF` | `ON` | kompiliert Spell Erweiterung.
`ENABLE_TCL` | `ON`, `OFF` | `ON` | kompiliert Tcl Erweiterung.
`ENABLE_TRIGGER` | `ON`, `OFF` | `ON` | kompiliert Trigger Erweiterung.
`ENABLE_TYPING` | `ON`, `OFF` | `ON` | kompiliert Typing Erweiterung.
`ENABLE_XFER` | `ON`, `OFF` | `ON` | kompiliert Xfer Erweiterung.
`ENABLE_ZSTD` | `ON`, `OFF` | `ON` | aktiviere Zstandard ↗ Kompression.
`ENABLE_TESTS` | `ON`, `OFF` | `OFF` | kompiliert Testumgebung.
`ENABLE_CODE_COVERAGE` | `ON`, `OFF` | `OFF` | kompilieren mit Optionen für Testabdeckung. Diese Option sollte nur für Testzwecke genutzt werden.

Weitere Optionen können mit folgendem Befehl angezeigt werden:

    cmake -LA

oder mittels der Curses-Oberfläche:

    ccmake ..

#### Tests

Folgende Pakete werden benötigt um Tests zu kompilieren:

- libcpputest-dev

- C++ compiler

Tests muss aktiviert werden wenn WeeChat kompiliert wird:

    cmake .. -DENABLE_TESTS=ON

Nach der Kompilierung wird die Testumgebung im build-Verzeichnis ausgeführt:

    ctest -V

### 2.4. Git Quellen

Warnung: Git Quellen sollten nur von erfahrenen Nutzern verwendet werden. Eventuell lassen sich die Quellen nicht kompilieren oder der Code ist nicht stabil. Sie sind hiermit gewarnt!

Um die Git Quellen zu beziehen nutzen Sie folgende Befehle:

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

Folgen Sie bitte der Anleitung zur Erstellung aus Quellpaketen (siehe Quellpakete).

### 2.5. Abstürze melden

Falls WeeChat abgestürzt sein sollte und Sie diesen Fehler melden möchten:

- kompilieren Sie mit:

  - Debug-Information (oder installieren Sie das Binärpaket mit Debug-Information)

  - Kompilation mit Adressbereiniger (optional)

- aktivieren Sie core Dateien auf Ihrem System

- installieren Sie gdb

#### Debug-Build

Bei der Kompilierung mit CMake muss folgende Option gesetzt werden:

    cmake .. -DCMAKE_BUILD_TYPE=Debug

#### Address Sanitizer

Sie können zusätzlich den Adress-Sanitizer aktivieren, der bei Problemen sofort zum Absturz von WeeChat führt:

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

Achtung | Sie sollten die Adressbereinigung nur aktivieren, wenn Sie versuchen, einen Absturz zu provozieren. Diese Funktion wird im produktiven Einsatz nicht empfohlen.

Nach dem Kompilieren und Installieren müssen Sie WeeChat folgendermaßen ausführen:

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

Im Falle eines Absturzes befinden sich zusätzliche Informationen in der Datei, `asan.log`.

#### Core Dateien

Um core Dateien zu aktivieren kann folgende Option genutzt werden: weechat.startup.sys_rlimit:

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

Wird eine WeeChat Version ≤ 0.3.8 verwendet oder man möchte die core Dateien aktivieren, bevor WeeChat gestaret wird, wird der Befehl `ulimit` benötigt.

Zum Beispiel muss unter Linux in einer bash Shell folgender Befehl in die `~/.bashrc` Datei eingetragen werden:

    ulimit -c unlimited

optional kann noch die maximale Dateigröße bestimmt werden:

    ulimit -c 200000

#### Rückverfolgung mit gdb

Sollte WeeChat abstürzen, wird durch das System eine core oder core.12345 Datei erstellt (12345 ist dabei die Prozess-ID). Dazu muss aber die entprechende Option aktiviert sein. Diese Core-Datei wird in dem Verzeichnis erzeugt aus welchem WeeChat gestartet wurde (dies ist nicht das Verzeichnis in welchem sich WeeChat befindet!).

Anmerkung | Auf einigen Systemen wie Archlinux, kann sich die Core-Datei in einem anderen Verzeichnis befinden, z.B. /var/lib/systemd/coredump und es muss der `coredumpctl` Befehl genutzt werden um die Datei zu lesen. Weitere Informationen finden Sie hier wiki page ↗.

Beispiel: weechat ist in /usr/bin/ installiert und die core Datei befindet sich in /home/user/. Nun wird gdb mit folgendem Befehl aufgerufen:

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

Nun startet man gdb und führt den Befehl `bt full` innerhalb der gdb Umgebung aus, um die Fehlermeldung auszugeben. Eine Fehlermeldung von gdb sieht z.B. wie folgt aus:

    (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>

Diese Fehlermeldung senden Sie bitte an den Entwickler mit einer Beschreibung was den Fehler ausgelöst hat.

Danke für Ihre Mithilfe!

#### Eine laufende Sitzung von WeeChat debuggen

Um eine laufende Sitzung von WeeChat zu debuggen (zum Beispiel wenn WeeChat nicht mehr reagieren sollte) sollte man gdb mit der Prozess-ID starten (12345 muss durch die PID des laufenden weechat Prozesses ersetzt werden):

    gdb /usr/bin/weechat 12345

Sollte WeeChat abgestürzt sein, muss der Befehl `bt full` genutzt werden:

    (gdb) bt full

## 3. WeeChat starten

Um WeeChat zu starten muss folgender Befehl ausgeführt werden:

    weechat

Wird WeeChat das erste mal ausgeführt, wird die Standardkonfiguration und die entsprechenden Dateien im Verzeichnis ~/.config/weechat erstellt. (siehe Dateien und Verzeichnisse).

### 3.1. Optionen für Befehlszeile

-a, --no-connect

  deaktiviert das automatische Verbinden mit den Servern beim Start von WeeChat.

-c, --colors

  zeigt die Standardfarben im Terminal an.

--daemon

  startet WeeChat im Hintergrund, als Deamon (funktioniert nur mit dem Befehl weechat-headless).

--stdout

  die Programmausgabe findet in der Standardausgabe an, anstatt sie in die Protokolldatei zu schreiben Display log messages on standard output instead of writing them in log file (funktioniert ausschließlich mit weechat-headless und ist nicht kompatibel mit Option "--daemon").

-d, --dir <path>

  Erzwingen Sie ein einzelnes Verzeichnis für alle WeeChat-Dateien (Verzeichnis wird erstellt, wenn es nicht gefunden wird). Es können vier Verzeichnisse angegeben werden, die durch Doppelpunkte getrennt sind (folgende Reihenfolge: Konfiguration, Daten, Cache, Laufzeit). Wird diese Option nicht genutzt, wird die Umgebungsvariable WEECHAT_HOME genutzt (sofern diese vorhanden ist).

-t, --temp-dir

  Erstellt ein temporäres WeeChat Heimatverzeichnis welches beim Beenden gelöscht wird (nicht nutzbar mit Option "-d").
  Der Name des Verzeichnisses wird automatisch durch WeeChat vergeben, die Vorgabe für den Namen lautet: "weechat_temp_XXXXXX" ("XXXXXX" ist dabei ein zufälliger Wert). Dieses Verzeichnis wird dann im ersten möglichen Verzeichnis angelegt und anhand folgender Reihenfolge bestimmt: Umgebungsvariable "TMPDIR", "/tmp" (kann abweichend sein, abhängig vom verwendeten Betriebssystem), Umgebungsvariable "HOME", aktuelles Verzeichnis.
  Das temporäre Heimatverzeichnis besitzt die Berichtigung 0700 (nur Besitzer kann lesen, schreiben und ausführen).

-h, --help

  zeigt einen Hilfstext an.

-i, --build-info

  Build-Informationen anzeigen und beenden.

-l, --license

  zeigt die Lizenz von WeeChat an.

-p, --no-plugin

  unterbindet das Laden der Erweiterungen beim Programmstart.

-P, --plugins <plugins>

  lädt nur die angegebenen Erweiterungen, beim Start (siehe /help weechat.plugin.autoload). Wenn diese Option genutzt wird, dann wird die Option weechat.plugin.autoload ignoriert.

-r, --run-command <command>

  führt einen oder mehrere Befehle nach dem Start aus; mehrere Befehle können durch ein Semikolon getrennt werden, diese Option kann mehrfach genutzt werden.

-s, --no-script

  Skripten werden beim Programmstart nicht geladen.

--upgrade

  führt ein WeeChat Upgrade mit Sitzungsdateien durch, die mittels dem Befehl `/upgrade -quit` erstellt wurden.

-v, --version

  zeigt die Version von WeeChat an.

plugin:option

  Option für Erweiterung.

Einige zusätzliche Optionen sollten nur für Debug-Zwecke genutzt werden:

Achtung | KEINE dieser Optionen sollte für ein Produktivsystem genutzt werden!

--no-dlclose

  die Funktion dlclose wird nicht ausgeführt, nachdem Erweiterungen beendet wurden Dies ist sinnvoll für Tools wie Valgrind um den Stack für Erweiterungen anzuzeigen, welche beendet wurden.

--no-gnutls

  Es wird die init und deinit Funktion der GnuTLS Bibliothek nicht verwendet. Dies ist sinnvoll für Tools wie Valgrind und electric-fence, um GnuTLS Speicherfehler zu vermeiden.

--no-gcrypt

  Es wird die init und deinit Funktion der Gcrypt Bibliothek nicht verwendet. Dies ist sinnvoll für Tools wie Valgrind um Speicherfehler von Gcrypt zu vermeiden.

### 3.2. Umgebungsvariablen

Einige Umgebungsvariablen werden von WeeChat genutzt, sofern sie definiert wurden:

Name | Beschreibung
--- | ---
`WEECHAT_HOME` | Das WeeChat Verzeichnis (beinhaltet Konfigurationsdateien, Protokolldateien, Skripten, …​). Gleiches Verhalten wie CMake option `WEECHAT_HOME`.
`WEECHAT_PASSPHRASE` | Die Passphrase zum Entschlüsseln von schutzwürdigen Daten.
`WEECHAT_EXTRA_LIBDIR` | Ein zusätzliches Verzeichnis um Erweiterungen zu installieren (vom "plugins" Verzeichnis in dieses Verzeichnis).

### 3.3. Farbunterstützung

WeeChat kann bis zu 32767 Farbpaarungen nutzen um einen Text in Bars oder im Chatbereich darzustellen (der Terminal muss natürlich 256 Farben unterstützten).

Gemäß der Einstellung in der TERM-Umgebungsvariable bestehen folgende Einschränkungen was die Farbdarstellung in WeeChat betrifft:

$TERM | Farben | Paare
--- | --- | ---
"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

Mittels `weechat --colors` oder dem internen WeeChat-Befehl `/color` kann man sich die Einschränkungen für die jeweilige Umgebungsvariable anzeigen lassen.

Folgende Werte sind für die TERM-Umgebungsvariable zu empfehlen, sofern man 256 Farben nutzen möchte:

- falls screen genutzt wird: screen-256color

- für tmux: screen-256color oder tmux-256color

- ausserhalb screen/tmux: xterm-256color, rxvt-256color, putty-256color, …​

Anmerkung | Es sollte das Paket "ncurses-term" installiert werden um die Werte der TERM Variable nutzen zu können.

Sollte screen genutzt werden, fügt man folgende Zeile an das Ende der Datei ~/.screenrc:

    term screen-256color

Sollte die Umgebungsvariable TERM falsch gesetzt worden sein und WeeChat wird derweil schon ausgeführt, kann die Variable mit folgenden zwei Befehlen geändert werden:

    /set env TERM screen-256color
    /upgrade

### 3.4. Dateien und Verzeichnisse

#### XDG directories

WeeChat verwendet standardmäßig XDG-Verzeichnisse (gemäß XDG Base Directory Specification ↗).
Ein einzelnes Home-Verzeichnis für alle Dateien kann durch die CMake-Option `WEECHAT_HOME`, die Umgebungsvariable `WEECHAT_HOME` oder die Befehlszeilenoption `-d` / `--dir` erzwungen werden. Wenn ein einzelnes WeeChat-Ausgangsverzeichnis nicht erzwungen wird, werden XDG-Verzeichnisse wie folgt verwendet und festgelegt:

Verzeichnis | Standardwert | Ersatzverzeichnis, falls $XDG_XXX nicht definiert wurde
--- | --- | ---
Konfiguration | `$XDG_CONFIG_HOME/weechat` | `$HOME/.config/weechat`
Daten | `$XDG_DATA_HOME/weechat` | `$HOME/.local/share/weechat`
Cache | `$XDG_CACHE_HOME/weechat` | `$HOME/.cache/weechat`
Laufzeit | `$XDG_RUNTIME_DIR/weechat` | Wie beim Cache Verzeichnis

Die Konfigurationsdateien werden beim ersten Ausführen von WeeChat mit Standardwerten erstellt.

#### WeeChat Verzeichnisse

Es gibt folgende WeeChat Verzeichnisse:

Pfad (1) | Beschreibung
--- | ---
`~/.config/weechat/` | WeeChat Konfigurationsdateien: `*.conf`, Zertifikate, etc.
`~/.local/share/weechat/` | WeeChat Daten: Protokolldateien, Skripts, Skriptdaten, xfer-Daten, etc.
`logs/` | Logdateien (eine Datei pro Buffer).
`python/` | Python-Skripten.
`autoload/` | Python-Skripten die beim Start automatisch ausgeführt werden (2).
`perl/` | Perl-Skripten.
`autoload/` | Perl-Skripten die beim Start automatisch ausgeführt werden (2).
`ruby/` | Ruby-Skripten.
`autoload/` | Ruby-Skripten die beim Start automatisch ausgeführt werden (2).
`lua/` | Lua-Skripten.
`autoload/` | Lua-Skripten die beim Start automatisch ausgeführt werden (2).
`tcl/` | Tcl-Skripten.
`autoload/` | Tcl-Skripten die beim Start automatisch ausgeführt werden (2).
`guile/` | Guile-Skripten.
`autoload/` | Guile-Skripten die beim Start automatisch ausgeführt werden (2).
`javascript/` | JavaScript-Skripten.
`autoload/` | JavaScript-Skripten die beim Start automatisch ausgeführt werden (2).
`php/` | PHP-Skripten.
`autoload/` | PHP-Skripten die beim Start automatisch ausgeführt werden (2).
`~/.cache/weechat/` | WeeChat Cache-Dateien: Skriptcache.
`/run/user/1000/weechat/` | WeeChat Laufzeitdateien: FIFO-Pipe, Relay UNIX sockets.

Anmerkung | (1) XDG-Verzeichnisse können je nach Umgebungsvariablen unterschiedlich sein `XDG_*`. (2) Das Verzeichnis besteht meistens aus symbolischen Links welche auf das eigentliche Skript zeigen.

#### WeeChat Dateien

Folgende Dateien befinden sich im WeeChat-Heimatverzeichnis:

Datei | Beschreibung | sensible Daten
--- | --- | ---
`weechat.conf` | Hauptkonfiguration von WeeChat | möglich (Beispiel: Auflistung der Kanäle im Buffers-Layout).
`sec.conf` | Konfigurationsdatei mit sensiblen Daten | Ja, hoch sensibel: diese Datei sollte niemals weitergegeben werden.
`plugins.conf` | Konfigurationsdatei für Erweiterungen | möglich, hängt von der Erweiterung/Skript ab.
`alias.conf` | Konfigurationsdatei: Alias-Erweiterung | möglich, hängt von den Aliases ab.
`buflist.conf` | Konfiguration für buflist-Erweiterung | Nein.
`charset.conf` | Konfiguration für charset-Erweiterung | Nein.
`exec.conf` | Konfiguration für exec-Erweiterung | Nein.
`fifo.conf` | Konfiguration für fifo-Erweiterung | Nein.
`fset.conf` | Konfiguration für fset-Erweiterung | Nein.
`guile.conf` | Konfiguration für guile-Erweiterung | Nein.
`irc.conf` | Konfiguration für irc-Erweiterung | Ja: Datei kann Passwörter für Server, Nickserv oder Kanäle enthalten (sofern diese nicht in `sec.conf` gesichert sind).
`javascript.conf` | Konfiguration für javascript-Erweiterung | Nein.
`logger.conf` | Konfiguration für logger-Erweiterung | Nein.
`lua.conf` | Konfiguration für lua-Erweiterung | Nein.
`perl.conf` | Konfiguration für perl-Erweiterung | Nein.
`php.conf` | Konfiguration für php-Erweiterung | Nein.
`python.conf` | Konfiguration für python-Erweiterung | Nein.
`relay.conf` | Konfiguration für relay-Erweiterung | Ja: es kann das Relay-Passwort und das TOTP (Einmalkennwort) enthalten (sofern nicht in `sec.conf` gesichert), erlaubt OP Adressen/Websocket und geöffnete Ports.
`ruby.conf` | Konfiguration für ruby-Erweiterung | Nein.
`script.conf` | Konfiguration für script-Erweiterung | Nein.
`spell.conf` | Konfiguration für spell-Erweiterung | Nein.
`tcl.conf` | Konfiguration für tcl-Erweiterung | Nein.
`trigger.conf` | Konfiguration für trigger-Erweiterung | möglich, hängt von den Triggern ab.
`typing.conf` | Konfiguration für typing-Erweiterung | Nein.
`xfer.conf` | Konfiguration für xfer-Erweiterung | Nein.
`weechat.log` | WeeChat Logdateien | Nein.

Wichtig | Es wird nicht empfohlen die Konfigurationsdateien manuell zu editieren, da WeeChat diese Dateien zu jeder Zeit überschreiben kann (zum Beispiel: /quit) und man eine veränderte Datei mit dem Befehl /reload neu laden muss (mit dem Risiko von Datenverlust da Daten kommentarlos überschrieben werden, bevor man diese ggf. gesichert hat /save). Man sollte immer den /set Befehl nutzen, da der Befehl die Eingabe prüft und Änderungen sofort wirksam werden.

## 4. Upgrade

Wenn eine neue stabile Version von WeeChat veröffentlicht wird, ist es Zeit auf diese neue Version zu wechseln.

Zunächst müssen Sie die neue WeeChat Version als Binärdatei installieren. Entweder installieren Sie WeeChat mittels Ihrem Paketmanager oder Sie kompilieren WeeChat selber. Dadurch befindet sich die `weechat`-Binärdatei und alle erforderlichen Dateien in den selben Pfaden.
Diese Installation kann durchgeführt werden, während WeeChat ausgeführt wird.

### 4.1. Upgrade Befehl

WeeChat kann die neue Binärdatei mit Hilfe des /upgrade Befehls starten: der Bufferinhalt und nicht-TLS Verbindungen bleiben dabei erhalten.
Eine TLS-Verbindung wird während des Upgrades getrennt und wird automatisch, nach dem Beenden des Upgrades, wiederhergestellt (das aufrechterhalten einer TLS-Sitzungen ist derzeit, mit GnuTLS, nicht möglich).

Der Befehl kann auch verwendet werden, wenn Sie den Computer neu starten müssen, z.B. um den Kernel zu aktualisieren oder WeeChat auf einen anderen Computer zu verschieben:

    /upgrade -quit

Dies speichert den aktuellen Status in `*.upgrade`-Dateien. Sie können dann entweder die gesamten WeeChat-Verzeichnisse (Konfiguration, Daten, Cache) neu starten oder auf einen anderen Computer verschieben und WeeChat später mit diesem Befehl neu starten:

    weechat --upgrade

### 4.2. Neustart nach Upgrade

#### Hinweise zum Upgrade

Nach einem Upgrade, wird dringend empfohlen das Dokukment UPGRADING.md ↗ zu lesen. Dieses Dokument enthält wichtige Informationen zu wichtigen Änderungen und einige manuelle Aktionen, die erforderlich sein könnten.

Es sollten die Versionen zwischen der alten (abgelaufenen) und der neuen Version (eingeschlossen) gelesen werden.
Wenn beispielsweise von Version 4.0.0 auf 4.3.0 gewechselt wurde, ist es ratsam die Versionen von 4.0.1 bis 4.3.0 zu lesen.

#### Konfigurations-Upgrade

WeeChat hat ein automatisches Upgrade für Konfigurationsdateien (`*.conf`):

- Neue Optionen werden stillschweigend mit dem Standardwert hinzugefügt

- Veraltete Optionen werden automatisch verworfen. WeeChat zeigt eine Warnung, mit dem Wert der eingestellt war, im Core-Buffer, an.

Beispiel für eine Warnung, wenn eine Option entfernt wurde:

    =!= Warnung: /home/user/.config/weechat/sec.conf, Zeile 15: unbekannte Einstellung für Sektion "crypt": passphrase_file = ""

Das bedeutet, dass die Option "sec.crypt.passphrase_file" entfernt wurde und der Wert für diese Option eine leere Zeichenkette war. Dies war der Standardwert in der vorherigen Version (in diesem Fall ist kein manuelles Eingreifen erforderlich).

## 5. Schnittstelle

### 5.1. Bildschirmgestaltung

Beispiel des WeeChat-Terminals:

     ▼ Bar "buflist"   ▼ Bar "title"
    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Welcome to #test, this is a test channel                                    │
    │  weechat│12:52:27   --> | Flashy (flashcode@weechat.org) has joined #test    │@Flashy│
    │2.  #test│12:52:27    -- | Nicks #test: [@Flashy @joe +weebot peter]          │@joe   │
    │3.  #abc │12:52:27    -- | Channel #test: 4 nicks (2 ops, 1 voice, 1 normal)  │+weebot│
    │4.  #def │12:52:27    -- | Channel created on Tue Jan 27 06:30:17 2009        │peter  │
    │5.  #ghi │12:54:15 peter | hey!                                               │       │
    │         │12:55:01  @joe | hello                                              │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │[12:55] [5] [irc/libera] 2:#test(+n){4}* M [H: 3:#abc(2,5), 5]              │
    │         │[@Flashy(i)] hi peter!█                                                     │
    └──────────────────────────────────────────────────────────────────────────────────────┘
                ▲ Bars "status" und "input"                               Bar "nicklist" ▲

Standardmäßig ist der Bildschirm in folgende Bereiche unterteilt:

- Chat-Bereich (in der Mitte des Bildschirms). Dieser enthält den Text und zusätzlich für jede Zeile:

  - die Uhrzeit

  - Prefix (links von dem "|")

  - Nachricht (rechts von dem "|")

- Die Bars können um den Chat-Bereich angeordnet werden. Bars, welche standardmäßig genutzt werden sind:

  - buflist Bar, auf der linken Seite

  - title Bar, über dem Chat-Bereich

  - status Bar, unter dem Chat-Bereich

  - input Bar, unter der Status-Bar

  - nicklist Bar, auf der rechten Seite

Die buflist-Bar besitzt als Standardeinträge:

Item | Beispiel | Beschreibung
--- | --- | ---
buflist | `1.weechat` | Auflistung der Buffer.

Die title-Bar besitzt als Standardeinträge:

Item | Beispiel | Beschreibung
--- | --- | ---
buffer_title | `Willkommen in #test` | Buffer-Titel.

Die status-Bar besitzt als Standardeinträge:

Item | Beispiel | Beschreibung
--- | --- | ---
time | `12:55` | Uhrzeit.
buffer_last_number | `5` | Nummer des letzten Buffers (kann sich unterscheiden von `buffer_count` wenn Option weechat.look.buffer_auto_renumber deaktiviert (`off`) ist).
buffer_plugin | `irc/libera` | Erweiterung des aktuellen Buffers (IRC Erweiterung setzt den IRC Servername für den Buffer).
buffer_number | `2` | Aktuelle Nummer des Buffers.
buffer_name | `#test` | Name des aktuellen Buffers.
buffer_modes | `+n` | IRC Kanal-Modi.
buffer_nicklist_count | `4` | Anzahl der Nicks die in der Nickliste angezeigt werden.
buffer_zoom | ! | `!` bedeutet, dass ein zusammengefügter Buffer gezoomed (nur dieser Buffer wird angezeigt) wird.
buffer_filter | `*` | Filteranzeige: `*` bedeutet das Zeilen gefiltert (unterdrückt) werden. Ein leerer Eintrag zeigt an, dass alle Zeilen dargestellt werden.
mouse_status | `M` | Mouse status (empty if mouse is disabled), see command /mouse and Tasten zum Umschalten von Funktionen.
scroll | `-MORE(50)-` | Scroll Indikator, zeigt an wie viele Zeilen unterhalb der zur Zeit dargestellten Zeile vorhanden sind.
lag | `Lag: 2.5` | Verzögerungsanzeige, in Sekunden (keine Anzeige falls Verzögerung gering).
hotlist | `H: 3:#abc(2,5), 5` | Liste der Buffer mit Aktivität (ungelesene Nachrichten) (für das Beispiel: 2 Highlights und 5 ungelesene Nachrichten im Kanal #abc, eine ungelesene Nachricht in Buffer #5).
typing | `Typing: bob, (alice)` | Schreibbenachrichtigung, siehe Schreibbenachrichtigung.
completion | `abc(2) def(5)` | Liste von Wörtern für Vervollständigung, die Zahl zeigt an wie viele Varianten möglich sind.

In der input Bar lautet die Standardeinstellung:

Item | Beispiel | Beschreibung
--- | --- | ---
input_prompt | `@Flashy(i)` | Input prompt, für irc: Nick und Modi (Modus "+i" bedeutet auf libera, unsichtbar).
away | `away` | Abwesenheitsanzeige.
input_search | `Search lines (~ str,msg)` | Suchindikatoren (“~”: Groß-und Kleinschreibung ignorieren, “==”: Groß-und Kleinschreibung berücksichtigen, “str”: einfache Textsuche, “regex”: suche mit regulären Ausdrücken, “msg”: Suche in Nachrichten, “pre”: Suche in Präfix, “pre|msg”: Suche in Präfix und Nachrichten).
input_paste | `Paste 7 lines ? [ctrl-y] Ja [ctrl-n] Nein` | Nachfrage, ob sieben Zeilen eingefügt werden sollen.
input_text | `hi peter!` | Text der eingegeben wird.

Es existieren zwei Suchmodi:

- Suche in Zeilen, zum Beispiel `[Search lines (~ str,msg)]`, mit folgenden Infos:

  - `~`: Groß-und Kleinschreibung ignorieren

  - `==`: Groß-und Kleinschreibung berücksichtigen

  - `str`: einfache Textsuche

  - `regex`: suche mit regulären Ausdrücken

  - `msg`: Suche in Nachrichten

  - `pre`: Suche in Präfix

  - `pre\|msg`: Suche in Präfix und Nachrichten

- Suche im Befehlsverlauf, zum Beispiel `[Search command (~ str,local)]`, mit den folgenden Informationen:

  - `~`: Groß-und Kleinschreibung ignorieren

  - `==`: Groß-und Kleinschreibung berücksichtigen

  - `str`: einfache Textsuche

  - `regex`: suche mit regulären Ausdrücken

  - `local`: suche im lokalen Bufferverlauf

  - `global`: suche im globalen Verlauf

In der nicklist Bar lautet die Standardeinstellung:

Item | Beispiel | Beschreibung
--- | --- | ---
buffer_nicklist | `@Flashy` | Liste der Nicks für den aktuellen Buffer.

andere Items die zur Verfügung stehen (die aber nicht standardmäßig in einer Bar aktiviert sind):

Item | Beispiel | Beschreibung
--- | --- | ---
buffer_count | `5` | absolute Anzahl an geöffneten Buffern.
buffer_nicklist_count_all | `4` | Anzahl der sichtbaren Gruppen und Nicks in der Nickliste.
buffer_nicklist_count_groups | `0` | Anzahl der sichtbaren Gruppen in der Nickliste.
buffer_short_name | `#test` | Kurzname des aktuellen Buffers.
buflist2 | `1.weechat` | Liste der Buffer, zweites Bar-Item (siehe Option buflist.look.use_items).
buflist3 | `1.weechat` | Liste der Buffer, drittes Bar-Item (siehe Option buflist.look.use_items).
buflist4 | `1.weechat` | Liste der Buffer, viertes Bar-Item (siehe Option buflist.look.use_items).
buflist5 | `1.weechat` | Liste der Buffer, fünftes Bar-Item (siehe Option buflist.look.use_items).
fset | `buflist.look.sort: …` | Hilfstext zur aktuell ausgewählten Option im Fset-Buffer.
irc_channel | `#test` | aktueller Name des IRC Kanals.
irc_host | `user@host.com` | aktueller IRC Host.
irc_nick | `Flashy` | aktueller IRC Nick.
irc_nick_host | `Flashy!user@host.com` | aktueller IRC Nick und Host.
irc_nick_modes | `i` | IRC Modi für den eigenen Nick.
irc_nick_prefix | `@` | IRC Nick-Präfix für den Kanal.
spacer |  | spezielles Item um Text in einer Bar auszurichten, siehe Spacer item.
spell_dict | `de,en` | zeigt an welche Wörterbücher für die Rechtschreibung im aktuellen Buffer genutzt werden.
spell_suggest | `Glück,Glocke,Block` | Vorschläge für ein falsch geschriebenes Wort.
tls_version | `TLS1.3` | TLS Version die für den IRC Server genutzt wird.
window_number | `2` | Nummer des aktuellen Fensters.

Jeder Aspekt des Layouts kann mit den entsprechenden Befehlen angepasst werden: `/bar` um die Bars anzupassen, /buffer und `/window` um Buffer und Fenster anzupassen, und /layout um das Bildschirmlayout zu benennen, zu speichern und wiederherzustellen sowie die Zuordnung zwischen Fenstern und Buffern zu behalten.

### 5.2. Befehlszeile

In der WeeChat Befehlszeile (am unteren Rand des Fensters) können Befehle ausgeführt oder ein Text in den Buffer geschrieben werden.

#### Syntax

Ein Befehl wird durch das Zeichen "/" eingeleitet, gefolgt von dem Namen des Befehls. In folgendem Beispiel werden alle Konfigurationsoptionen angezeigt:

    /set

Jeder Text der nicht mit dem Zeichen "/" beginnt wird in den Buffer geschrieben. In folgendem Beispiel wird der Text Hallo in den aktuellen Buffer geschrieben:

    Hallo

Dennoch ist es möglich einen Text in den Buffer zu schreiben der mit dem Zeichen "/" beginnt. Dazu muss dem ersten "/" ein zweites "/" vorangestellt werden. Um den Befehl `/set` als Text zu senden:

    //set

#### Farbkodierung

Für einige Erweiterungen wie z.B. der IRC Erweiterung können Farbkodierungen und Attribute für den Text gesetzt werden. Dazu muss die Tastenkombination `Ctrl`+`c`, gefolgt von einem der folgenden Zeichen, genutzt werden:

Taste | Beschreibung
--- | ---
`Ctrl`+`c`, `b` | Text wird fett dargestellt.
`Ctrl`+`c`, `c`, `xx` | Textfarbe `xx` (siehe Farbtabelle).
`Ctrl`+`c`, `c`, `xx`, `,`, `yy` | Textfarbe `xx` und Hintergrundfarbe `yy` (siehe Farbtabelle).
`Ctrl`+`c`, `d`, `xxxxxx` | Textfarbe `xxxxxx` (RGB als hexadezimale Zahl, zum Beispiel `FF0000` für rot).
`Ctrl`+`c`, `d`, `xxxxxx`, `,`, `yyyyyy` | Textfarbe `xxxxxx` und Hintergrundfarbe `yyyyyy` (RGB als hexadezimale Zahl).
`Ctrl`+`c`, `i` | Text wird kursiv dargestellt.
`Ctrl`+`c`, `o` | deaktiviert Farben und Attribute.
`Ctrl`+`c`, `v` | Farben umkehren (kehrt Textfarbe und Hintergrundfarbe um).
`Ctrl`+`c`, `_` | Text wird mit Unterstrich dargestellt.

Anmerkung | Der selbe Code (ohne Nummer für `Ctrl`+`c`, `c` und `Ctrl`+`c`, `d`) kann verwendet werden, um das Attribut zu stoppen.

Farbtabelle für `Ctrl`+`c`, `c`:

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

Anmerkung | Um sich alle verfügbaren Farben anzeigen zu lassen, die der Terminal unterstützt, kann man in WeeChat die Tastenkombination `Alt`+`c` im `/color` Buffer nutzen oder im Terminal den Befehl `weechat --colors` ausführen.

Beispiel: Im Buffer wird "Hallo Alice!" ausgegeben. Dabei wird "Hallo" in Fettschrift und hellblau und "Alice" rot und unterstrichen dargestellt.

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

Tastenbefehl:

`Ctrl`+`c` `c` `1` `2` `Ctrl`+`c` `b`
`H` `a` `l` `l` `o` `Space`
`Ctrl`+`c` `b` `Ctrl`+`c` `c` `0` `4` `Ctrl`+`c` `_`
`A` `l` `i` `c` `e`
`Ctrl`+`c` `_` `Ctrl`+`c` `c`
`!`

Anmerkung | Die Farben können in der IRC Erweiterung neu belegt werden, mittels der Option irc.color.mirc_remap.

### 5.3. Buffer und Fenster

Ein Buffer setzt sich zusammen aus einer Nummer, besitzt einem Namen, hat Zeilen die angezeigt werden (und noch anderen Daten).

Beispiele von Buffern:

- Core Buffer (wird durch WeeChat beim Programmstart erstellt und kann nicht geschlossen werden!)

- IRC Server (hier werden die Nachrichten ausgegeben die der Server verschickt)

- IRC Kanal

- IRC Privat (wird auch Query-Buffer genannt)

Ein Fenster ist ein Bildschirmbereich der Buffer darstellt. Es ist möglich den Bildschirm in mehrere Fenster aufzuteilen (Beispiele: below, siehe den Befehl /window für weitere Details).

Jedes Fenster stellt einen Buffer dar. Ein Buffer kann unsichtbar sein (er wird in einem Fenster nicht angezeigt) oder ein Buffer wird durch ein oder mehrere Fenster angezeigt.

Bildschirmlayouts und die Zuordnung zwischen Fenstern und Buffern können gespeichert und wiederhergestellt werden.

#### Beispiele

Beispiele für eine horizontal Fensteraufteilung (`/window splith`):

                                   ▼ Fenster #2 (Buffer #4)
    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Welcome to #def                                                             │
    │  weechat│12:55:12     Max | hi                                               │@Flashy│
    │2.  #test│12:55:20 @Flashy | hi Max!                                          │Max    │
    │3.  #abc │                                                                    │       │
    │4.  #def │                                                                    │       │
    │5.  #ghi │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │[12:55] [5] [irc/libera] 4:#def(+n){2}                                      │
    │         │[@Flashy]                                                                   │
    │         │────────────────────────────────────────────────────────────────────────────│
    │         │Welcome to #abc                                                             │
    │         │12:54:15 peter | hey!                                               │@Flashy│
    │         │12:55:01  @joe | hello                                              │@joe   │
    │         │                                                                    │+weebot│
    │         │                                                                    │peter  │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │                                                                    │       │
    │         │[12:55] [5] [irc/libera] 3:#abc(+n){4}                                      │
    │         │[@Flashy] hi peter!█                                                        │
    └──────────────────────────────────────────────────────────────────────────────────────┘
                                   ▲ Fenster #1 (Buffer #3)

Beispiele für eine vertikale Fensteraufteilung (`/window splitv`):

    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Welcome to #abc                      │Welcome to #def                       │
    │  weechat│12:54:15 peter | hey!        │@Flashy│12:55:12     Max | hi         │@Flashy│
    │2.  #test│12:55:01  @joe | hello       │@joe   │12:55:20 @Flashy | hi 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] hi peter!█                 │[@Flashy]                             │
    └──────────────────────────────────────────────────────────────────────────────────────┘
                     ▲ Fenster #1 (Buffer #3)              ▲ Fenster #2 (Buffer #4)

Beispiele für eine vertikale und horizontale Fensteraufteilung:

                                                           ▼ Fenster #3 (Buffer #5)
    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Welcome to #abc                      │Welcome to #ghi                       │
    │  weechat│12:54:15 peter | hey!        │@Flashy│12:55:42 @Flashy | hi         │@Flashy│
    │2.  #test│12:55:01  @joe | hello       │@joe   │12:55:56    alex | hi Flashy  │alex   │
    │3.  #abc │                             │+weebot│                              │       │
    │4.  #def │                             │peter  │                              │       │
    │5.  #ghi │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │[12:55] [5] [irc/libera] 5:#ghi(+n)   │
    │         │                             │       │[@Flashy]                             │
    │         │                             │       │──────────────────────────────────────│
    │         │                             │       │Welcome to #def                       │
    │         │                             │       │12:55:12     Max | hi         │@Flashy│
    │         │                             │       │12:55:20 @Flashy | hi Max!    │Max    │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │                             │       │                              │       │
    │         │[12:55] [5] [irc/libera] 3:#abc(+n)  │[12:55] [5] [irc/libera] 4:#def(+n)   │
    │         │[@Flashy] hi peter!█                 │[@Flashy]                             │
    └──────────────────────────────────────────────────────────────────────────────────────┘
                     ▲ Fenster #1 (Buffer #3)              ▲ Fenster #2 (Buffer #4)

#### einfacher Anzeigemodus

Ein vereinfachter Anzeigemodus, mit Namen "bare", kann aktiviert werden um überlange URLs ganz einfach mit der Maus anzuklicken oder um Text mit der Maus zu markieren.

Der vereinfachte Anzeigemodus hat folgende Funktionen:

- es wird lediglich der Inhalt des aktuellen Buffers angezeigt, es findet keine Aufteilung des Fensters statt, es werden keine Bars angezeigt (Title, Nicklist, Status, Input, …​)

- die Mausunterstützung ist deaktiviert (sofern sie aktiviert war): die Maus kann wie in einem Terminal genutzt werden um URLs anzuklicken oder Text zu markieren

- ncurses wird nicht genutzt, deshalb werden URLs am Ende der Zeile nicht abgeschnitten.

Der Standardtastenbefehl um den vereinfachten Textmodus zu aktivieren ist `Alt`+`l` (`L`), mit dem selben Tastenbefehl wird dieser Modus wieder beendet (dieser Modus kann auch mit jeder beliegen Tasteneingabe beendet werden, siehe Option weechat.look.bare_display_exit_on_input).

Das Format für die Zeitanzeige kann mit folgender Option angepasst werden weechat.look.bare_display_time_format.

Der vereinfachte Anzeigemodus kann mit einer vorgegebenen Zeit gestartet werden /window.

Im normalen Modus sieht WeeChat wie folgt aus:

    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.libera │Welcome to #abc                                                             │
    │  weechat│12:52:27   --> | Flashy (flashcode@weechat.org) has joined #abc     │@Flashy│
    │2.  #test│12:52:27    -- | Nicks #abc: [@Flashy @joe +weebot peter]           │@joe   │
    │3.  #abc │12:52:27    -- | Channel #abc: 4 nicks (2 ops, 1 voice, 1 normal)   │+weebot│
    │4.  #def │12:52:27    -- | Channel created on Tue Jan 27 06:30:17 2009        │peter  │
    │5.  #ghi │12:54:15 peter | hey!                                               │       │
    │         │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)] hi peter!█                                                     │
    └──────────────────────────────────────────────────────────────────────────────────────┘

Der selbe Bildschirm sieht im vereinfachten Anzeigemodus wie folgt aus:

    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │                                                                                      │
    │12:52 --> Flashy (flashcode@weechat.org) has joined #abc                              │
    │12:52 -- Nicks #abc: [@Flashy @joe +weebot peter]                                     │
    │12:52 -- Channel #abc: 4 nicks (2 ops, 1 voice, 1 normal)                             │
    │12:52 -- Channel created on Tue Jan 27 06:30:17 2009                                  │
    │12:54 <peter> hey!                                                                    │
    │12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/weechat/devel/weechat_│
    │plugin_api.en.html#_weechat_hook_process                                              │
    └──────────────────────────────────────────────────────────────────────────────────────┘

Es kann nun die URL von joe ohne Probleme angeklickt werden (dies setzt natürlich voraus, dass der Terminal das Anwählen von URLs unterstützt).

### 5.4. Buffern

#### Format von Zeilen

Zeilen die in einem formatierten Buffer dargestellt werden haben folgende Felder:

Feld | Ansicht | Beschreibung
--- | --- | ---
Datum/Zeit(Nachricht) | Ja | Datum/Zeit einer Nachricht (möglicherweise die Vergangenheit).
Datum/Zeit(Ausgabe) | Nein | Datum/Zeit wenn WeeChat eine Nachricht ausgibt.
Präfix | Ja | Präfix einer Nachricht, gewöhnlich der Nick.
Nachricht | Ja | Die eigentliche Nachricht.
Ansicht | Nein | Boolean: wahr, falls Zeile angezeigt wird, unwahr, falls die Zeile if line gefiltert wird. Siehe Befehl /filter.
Highlight | Nein | Boolean: wahr, falls die Zeile ein Highlight enthält, unwahr, falls nicht.
Tags | mittels `/debug tags` | Tags die im Zusammenhang mit der Zeile stehen (siehe lines tags).

Die Darstellung von Zeilen kann mittels Optionen individualisiert werden. Zum einen mittels der "look"-Optionen (weechat.look.*) und der Color-Optionen (weechat.color.chat_*).

#### Tags in Zeilen

WeeChat nutzt Tags für unterschiedliche Aufgaben:

- highlight

- Benachrichtigungsstufe

- logging

- für Befehle /filter

Tags kann man sich mit dem Befehl `/debug tags` anzeigen lassen (den Befehl ein zweites mal ausführen um die Tags wieder unsichtbar zu machen).

Tags die häufig verwendet werden (keine vollständige Auflistung):

Tag | Beschreibung
--- | ---
`no_filter` | Zeile kann nicht gefiltert werden.
`no_highlight` | die Zeile kann nicht gehiglighted werden.
`no_log` | Zeile wird nicht in die Log-Datei geschrieben.
`log0 … log9` | Grad der Protokollierung (siehe den Befehl /logger).
`notify_none` | Diese Zeile wird erzeugt keinen Hotlist-Eintrag. (1)
`notify_message` | Diese Zeile ist eine User Nachricht. (1)
`notify_private` | Diese Zeile ist eine private Nachricht. (1)
`notify_highlight` | Diese Zeile beinhaltet eine Highlight Nachricht. (1)
`self_msg` | eigene Nachricht.
`nick_xxx` | Nachricht ist vom Nick "xxx".
`prefix_nick_ccc` | Präfix für den Nick mit der Farbe "ccc".
`host_xxx` | Username und Host in der Nachricht.
`irc_xxx` | IRC Nachricht "xxx" (kann ein Befehl oder eine dreistellige Zahl sein).
`irc_numeric` | IRC nummerische Nachricht.
`irc_error` | Fehler vom IRC Server.
`irc_action` | Action von einem Nick (Befehl `/me`).
`irc_ctcp` | CTCP Nachricht.
`irc_ctcp_reply` | Antwort auf eine CTCP Nachricht.
`irc_smart_filter` | IRC Nachricht die mittels "smart filter" unterdrückt werden kann.
`away_info` | Nachricht mit "away" Information.

Anmerkung | (1) Wenn kein "notify_xxx" Tag vorhanden ist, ist die Benachrichtigungsstufe "low". Falls ein "notify_xxx" Tag vorhanden ist, kann die tatsächliche Benachrichtigungsstufe unterschiedlich sein. Wenn beispielsweise der max hotlist level für einen Nick verwendet wird, kann die Benachrichtigungsstufe niedriger sein als der Wert im Tag.

#### lokale Variablen

Lokale Variablen können für alle Buffer definiert werden.

Eine lokale Variable besteht:

- aus einem Namen (Zeichenkette)

- und aus einem Wert (Zeichenkette, kann leer sein).

Lokale Variablen können von WeeChat, Erweiterungen, Skripten oder manuell, in der Befehlszeile eines Buffers, festgelegt werden.

So fügen Sie beispielsweise die lokale Variable "completion_default_template" hinzu:

    /buffer setvar completion_default_template %(my_completion)

um sich alle lokalen Variablen des aktuellen Buffers anzeigen zu lassen:

    /buffer listvar

So entfernen Sie die lokale Variable "completion_default_template":

    /buffer delvar completion_default_template

Standardmäßig interpretieren WeeChat und seine Standard-Erweitertungen diese Variablen:

Name | Wert | Beschreibung
--- | --- | ---
`away` | beliebige Zeichenkette | Abwesenheitsnotiz auf dem Server, wird durch IRC Erweiterung genutzt.
`channel` | beliebige Zeichenkette | Name des Kanals, wird durch irc/xfer Erweiterung und dem Debug-Buffer von relay/trigger Erweiterung genutzt.
`charset_modifier` | beliebige Zeichenkette | Charset modifier für den Server-Buffer, wird durch IRC Erweiterung genutzt.
`completion_default_template` | beliebige Zeichenkette | Vorlage für die standardmäßige Vervollständigung innerhalb eines Buffers, überschreibt die Option `weechat.completion.default_template`.
`filter` | beliebige Zeichenkette | Filter für einige Buffer definiert, zum Beispiel`/fset`, `/list` (irc), `/server raw` (irc) und `/script`.
`host` | beliebige Zeichenkette | eigener Host (sofern bekannt), wird durch IRC Erweiterung genutzt.
`lag` | beliebige Zeichenkette | Verzögerung auf dem Server, wird durch IRC Erweiterung genutzt.
`name` | beliebige Zeichenkette | Buffername (Vorsicht, dies ist nicht der vollständige Name des Buffers und reicht nicht aus, um einen Buffer zu identifizieren oder zu suchen).
`nick` | beliebige Zeichenkette | eigener Nick, wird durch IRC und xfer Erweiterung genutzt.
`no_log` | `1` (oder jede andere nicht leere Zeichenkette) | Wenn festgelegt, protokolliert die Logger-Erweiterung nichts für den Buffer.
`plugin` | beliebige Zeichenkette | Name der Erweiterung welche den Buffer erstellt hat (`core` für WeeChat-Buffer).
`script_close_cb` | beliebige Zeichenkette | Close callback, für diesen Buffer durch ein Skript definiert.
`script_close_cb_data` | beliebige Zeichenkette | Daten für ein Close callback, welches durch ein Skript für diesen Buffer definiert wurde.
`script_input_cb` | beliebige Zeichenkette | Input callback, für diesen Buffer durch ein Skript definiert.
`script_input_cb_data` | beliebige Zeichenkette | Daten für ein Input callback, welches durch ein Skript für diesen Buffer definiert wurde.
`script_name` | beliebige Zeichenkette | Name des Skriptes welches den Buffer erstellt hat.
`server` | beliebige Zeichenkette | Servername, wird durch IRC Erweiterung genutzt und durch den Debug-Buffer von relay/trigger Erweiterung.
`spell_suggest` | beliebige Zeichenkette | falsch geschriebenes Wort und Korrekturvorschläge (Format: "fehlerhaftes Wort:Korrekturvorschläge"), wird durch spell-Erweiterung definiert.
`trigger_filter` | beliebige Zeichenkette | Trigger-Filter, wird durch Trigger-Erweiterung definiert.
`type` | beliebige Zeichenkette, zum Beispiel: `channel`, `debug`, `exec`, `option`, `private`, `relay`, `script`, `server`, `user`, `xfer` | Buffertyp, festgelegt von WeeChat und vielen Erweiterungen.

Anmerkung | Externe Erweitertungen und Skripte können andere lokale Variablen definieren und verwenden.

### 5.5. Liste der Buffer

Die Buflist-Erweiterung dient dazu eine Liste der geöffneten Buffer in einer Bar-Item, mit Namen "buflist", darzustellen (vier weitere Bar-Items sind dabei verfügbar "buflist2", "buflist3", "buflist4" und "buflist5").
Eine Standardbar, "buflist", wird beim Programmstart automatisch mit folgendem Inhalt erstellt.

#### Befehle

- `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)

#### Optionen

Sektionen in Datei buflist.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`format` | `/set buflist.format.*` | Format für die Darstellung der Bufferliste.
`look` | `/set buflist.look.*` | Erscheinungsbild.

Optionen:

- 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

  - 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. Cursor-Modus

Mit dem Cursormodus können Sie den Cursor frei an eine beliebige Stelle auf dem Bildschirm bewegen, sowohl im Chatbereich als auch in Bars und ermöglicht das Ausführen von Aktionen an der angegebenen Position.
Sie können den Cursormodus entweder mit dem Befehl `/cursor` oder mit der mittleren Maustaste aktivieren (Maus muss mit der Taste `Alt`+`m` oder dem Befehl `/mouse enable` aktiviert worden sein).

Typischer Anwendungszweck ist das Zitieren von Nachrichten (Chat-Bereich) oder die Interaktion mit Nicks (Nicklist-Leiste).

Siehe Befehl /cursor und key bindings in cursor context, für die Liste der Aktionen, die in diesem Modus ausgeführt werden können.

## 6. Tastenbelegungen

WeeChat bietet viele Standardtastenzuordnungen, die in den folgenden Kapiteln aufgeführt sind.
Sie können mit dem Befehl /key geändert und neue hinzugefügt werden.

### 6.1. Kommandozeile

#### Cursorbewegung

Taste | Beschreibung | Befehl
--- | --- | ---
`←` `Shift`+`←` `Ctrl`+`b` | setzt den Cursor eine Position nach links. | `/input move_previous_char`
`→` `Shift`+`→` `Ctrl`+`f` | setzt den Cursor eine Position nach rechts. | `/input move_next_char`
`Shift`+`↑` | gehe zur vorherigen Zeile. | `/input move_previous_line`
`Shift`+`↓` | gehe zur nächsten Zeile. | `/input move_next_line`
`Ctrl`+`←` `Alt`+`b` | springt in der Befehlszeile zum Anfang des vorherigen Wortes. | `/input move_previous_word`
`Ctrl`+`→` `Alt`+`f` | springt in der Befehlszeile zum Anfang des nächsten Wortes. | `/input move_next_word`
`Home` `Ctrl`+`a` | Zum Anfang der aktuellen Zeile springen. | `/input move_beginning_of_line`
`Shift`+`Home` | Zum Anfang der Befehlszeile springen. | `/input move_beginning_of_input`
`End` `Ctrl`+`e` | Zum Ende der aktuellen Zeile springen. | `/input move_end_of_line`
`Shift`+`End` | Zum Ende der Befehlszeile springen. | `/input move_end_of_input`

#### Bearbeitung

Taste | Beschreibung | Befehl
--- | --- | ---
`Del` `Ctrl`+`d` | entfernt in der Befehlszeile das nächste Zeichen. | `/input delete_next_char`
`Backspace` `Ctrl`+`h` | entfernt in der Befehlszeile das vorherige Zeichen. | `/input delete_previous_char`
`Ctrl`+`k` | Vom Cursor bis zum Ende der aktuellen Zeile löschen (gelöschte Zeichenfolge wird in die interne Zwischenablage kopiert). | `/input delete_end_of_line`
`Alt`+`Ctrl`+`k` | Vom Cursor bis zum Ende der Kommandozeile löschen (gelöschter String wird in die interne Zwischenablage kopiert). | `/input delete_end_of_input`
`Ctrl`+`t` | Zeichen austauschen. | `/input transpose_chars`
`Ctrl`+`u` | Vom Cursor bis zum Anfang der aktuellen Zeile löschen (gelöschte Zeichenkette wird in die interne Zwischenablage kopiert). | `/input delete_beginning_of_line`
`Alt`+`Ctrl`+`u` | Vom Cursor bis zum Anfang der Befehlszeile löschen (gelöschte Zeichenkette wird in die interne Zwischenablage kopiert). | `/input delete_beginning_of_input`
`Alt`+`Backspace` | entfernt das Wort links vom Cursor (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `/input delete_previous_word`
`Ctrl`+`w` | Vorheriges Wort der Befehlszeile löschen bis zum Leerzeichen (gelöschte Zeichenfolge wird in die interne Zwischenablage kopiert). | `/input delete_previous_word_whitespace`
`Ctrl`+`y` | fügt den Inhalt der internen Zwischenablage ein. | `/input clipboard_paste`
`Ctrl`+`_` | Rückgängig machen der letzten Aktion, in der Befehlszeile. | `/input undo`
`Alt`+`_` | Wiederherstellen der letzten Aktion, in der Befehlszeile. | `/input redo`
`Tab` | Vervollständigung von Befehlen oder Nicks (nochmaliges `Tab`: findet nächste Vervollständigung). | `/input complete_next`
`Shift`+`Tab` | ohne Vervollständigung: führt eine teilweise Vervollständigung durch. Bei unerledigter Vervollständigung : wird die vorherige Vervollständigung genutzt. | `/input complete_previous`
`Enter` `Ctrl`+`j` `Ctrl`+`m` | führt einen Befehl aus oder sendet den Text (im Such-Modus: stoppt Suche). | `/input return`
`Alt`+`Enter` | Zeilenvorschub einfügen. | `/input insert \n`
`Alt`+`d` | löscht das Wort rechts vom Cursor (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `/input delete_next_word`
`Alt`+`k` | zeigt den Tastencode, einschließlich des eingebundenen Befehls, einer Tastenkombination an und fügt diesen in die Befehlszeile ein. | `/input grab_key_command`
`Alt`+`r` | Lösche aktuelle Zeile. | `/input delete_line`
`Alt`+`R` | Lösche komplette Eingabetext. | `/input delete_input`

#### Farbkodierung

Taste | Beschreibung | Befehl
--- | --- | ---
`Ctrl`+`c`, `b` | fügt Steuerzeichen für fett geschrieben Text ein. | `/input insert \x02`
`Ctrl`+`c`, `c` | fügt Steuerzeichen für Textfarbe ein. | `/input insert \x03`
`Ctrl`+`c`, `d` | fügt Steuerzeichen für Textfarbe ein (RGB Farbe, als hexadezimale Zahl). | `/input insert \x04`
`Ctrl`+`c`, `i` | fügt Steuerzeichen für kursiven Text ein. | `/input insert \x1D`
`Ctrl`+`c`, `o` | fügt Steuerzeichen für Standardfarbe ein. | `/input insert \x0F`
`Ctrl`+`c`, `v` | fügt Steuerzeichen für Hintergrundfarbe ein. | `/input insert \x16`
`Ctrl`+`c`, `_` | fügt Steuerzeichen für unterstrichenen Text ein. | `/input insert \x1F`

#### Befehlsverlauf

Taste | Beschreibung | Befehl
--- | --- | ---
`↑` | ruft vorherigen Befehl oder Nachricht aus dem Verlaufsspeicher auf (im Such-Modus: rückwärts suchen). | `/input history_previous`
`↓` | ruft nächsten Befehl oder Nachricht aus dem Verlaufsspeicher auf (im Such-Modus: vorwärts suchen). | `/input history_next`
`Ctrl`+`↑` | ruft vorherigen Befehl/Nachricht aus dem globalen Verlaufsspeicher auf (für alle Buffer). | `/input history_global_previous`
`Ctrl`+`↓` | ruft nächsten Befehl/Nachricht aus dem globalen Verlaufsspeicher auf (für alle Buffer). | `/input history_global_next`

#### System

Taste | Beschreibung | Befehl
--- | --- | ---
`Ctrl`+`z` | Breche den Weechat-Prozess ab | `/sys suspend`

### 6.2. Buffer

Taste | Beschreibung | Befehl
--- | --- | ---
`Ctrl`+`r` | sucht nach Text im Befehlsverlauf (siehe keys for context "histsearch"). | `/input search_history`
`Ctrl`+`s` | sucht nach Text in Bufferzeilen (siehe keys for context "search"). | `/input search_text_here`
`Ctrl`+`x` | Wechseln Sie den aktuellen Buffer, wenn diese zusammengefügt worden sind, z.B. zwischen IRC-Serverbuffer wechseln. | `/buffer switch`
`Alt`+`x` | Zoom eines zusammengefügten Buffers (`Alt`+`x` ein zweites mal: alle zusammengefügten Buffer werden angezeigt). | `/buffer zoom`
`PgUp` | eine Seite im Verlaufsspeicher des Buffers nach oben blättern. | `/window page_up`
`PgDn` | eine Seite im Verlaufsspeicher des Buffer nach unten blättern. | `/window page_down`
`Alt`+`PgUp` | einige Zeilen im Verlaufsspeicher des Buffer nach oben blättern. | `/window scroll_up`
`Alt`+`PgDn` | einige Zeilen im Verlaufsspeicher des Buffer nach unten blättern. | `/window scroll_down`
`Alt`+`Home` | springt zur ersten Zeile des Verlaufsspeichers des aktuellen Buffer.s | `/window scroll_top`
`Alt`+`End` | springt zur letzten Zeile des Verlaufsspeichers des aktuellen Buffers. | `/window scroll_bottom`
`Alt`+`←` `Alt`+`↑` `Ctrl`+`p` `F5` | zum vorherigen Buffer springen. | `/buffer -1`
`Alt`+`→` `Alt`+`↓` `Ctrl`+`n` `F6` | zum nächsten Buffer springen. | `/buffer +1`
`Alt`+`j`, `Alt`+`f` | wechselt zum ersten Buffer. | `/buffer -`
`Alt`+`j`, `Alt`+`l` (`L`) | wechselt zum letzten Buffer. | `/buffer +`
`Alt`+`j`, `Alt`+`r` | wechselt zum IRC RAW Buffer. | `/server raw`
`Alt`+`j`, `Alt`+`s` | wechselt zum IRC Server Buffer. | `/server jump`
`Alt`+`0…​9` | wechselt zum Buffer mit der Nummer (0 = 10). | `/buffer *N`
`Alt`+`j`, `01…​99` | wechselt zum Buffer mit der angegeben Nummer. | `/buffer *NN`
`Alt`+`n` | springt zur nächsten Highlight Nachricht. | `/window scroll_next_highlight`
`Alt`+`p` | springt zur vorherigen Highlight Nachricht. | `/window scroll_previous_highlight`
`Alt`+`u` | springt zur ersten ungelesenen Zeile im Buffer. | `/window scroll_unread`
`Alt`+`Shift`+`U` | setzt für alle Buffer die Markierung für ungelesene Nachrichten. | `/allbuf /buffer set unread`
`Alt`+`<` | springt zum letzten besuchten Buffer. | `/buffer jump prev_visited`
`Alt`+`>` | springt zum nächsten besuchten Buffer. | `/buffer jump next_visited`
`Alt`+`/` | wechselt zum jeweils zuletzt angezeigten Buffern. | `/buffer jump last_displayed`

### 6.3. Fenster

Taste | Beschreibung | Befehl
--- | --- | ---
`Ctrl`+`l` (`L`) | Fenster wird neu gezeichnet. | `/window refresh`
`Alt`+`l` (`L`) | schaltet einfachen Anzeigemodus an/aus. | `/window bare`
`F7` | zum vorherigen Fenster wechseln. | `/window -1`
`F8` | zum nächsten Fenster wechseln. | `/window +1`
`Alt`+`w`, `Alt`+`↑` | wechselt zum oberen Fenster. | `/window up`
`Alt`+`w`, `Alt`+`↓` | wechselt zum unteren Fenster. | `/window down`
`Alt`+`w`, `Alt`+`←` | wechselt zum linken Fenster. | `/window left`
`Alt`+`w`, `Alt`+`→` | wechselt zum rechten Fenster. | `/window right`
`Alt`+`w`, `Alt`+`b` | passt die Größe aller Fenster an. | `/window balance`
`Alt`+`w`, `Alt`+`s` | Wechselt Buffer von zwei Fenstern. | `/window swap`
`Alt`+`z` | Zoom für aktuelles Fenster (nochmals `Alt`+`z`: stellt die vorherigen Einstellungen wieder her). | `/window zoom`

### 6.4. Bars

Taste | Beschreibung | Befehl
--- | --- | ---
`F1` `Ctrl`+`F1` | blättert eine Seite in der buflist hoch. | `/bar scroll buflist * -100%`
`F2` `Ctrl`+`F2` | blättert eine Seite in der buflist runter. | `/bar scroll buflist * +100%`
`Alt`+`F1` | springt zum Anfang der buflist. | `/bar scroll buflist * b`
`Alt`+`F2` | springt zum Ende der buflist. | `/bar scroll buflist * e`
`F9` | Titel des Buffers nach links verschieben. | `/bar scroll title * -30%`
`F10` | Titel des Buffers nach rechts verschieben. | `/bar scroll title * +30%`
`F11` `Ctrl`+`F11` | Benutzerliste um eine Seite nach oben blättern. | `/bar scroll nicklist * -100%`
`F12` `Ctrl`+`F12` | Benutzerliste um eine Seite nach unten blättern. | `/bar scroll nicklist * +100%`
`Alt`+`F11` | springt zum Anfang der Benutzerliste. | `/bar scroll nicklist * b`
`Alt`+`F12` | springt zum Ende der Benutzerliste. | `/bar scroll nicklist * e`
`Alt`+`Shift`+`B` | buflist-Bar umschalten. | `/buflist toggle`
`Alt`+`Shift`+`N` | nicklist bar umschalten. | `/bar toggle nicklist`

### 6.5. Hotlist

Taste | Beschreibung | Befehl
--- | --- | ---
`Alt`+`a` | wechselt zum nächsten Buffer mit Aktivität (nach Priorität: highlight, Nachricht, …​). | `/buffer jump smart`
`Alt`+`h`, `Alt`+`c` | Hotlist löschen (Aktivitätsbenachrichtigung bei Buffern). | `/hotlist clear`
`Alt`+`h`, `Alt`+`m` | Aktuellen Puffer aus Hotlist entfernen. | `/hotlist remove`
`Alt`+`h`, `Alt`+`r` | stelle die letzte aus dem aktuellen Buffer entfernte Hotlist wieder her. | `/hotlist restore`
`Alt`+`h`, `Alt`+`Shift`+`R` | stelle die neueste Hotlist wieder her, die in allen Buffern entfernt wurde. | `/hotlist restore -all`

### 6.6. Tasten zum Umschalten von Funktionen

Taste | Beschreibung | Befehl
--- | --- | ---
`Alt`+`m` | schaltet Mausfunktion ein/aus. | `/mouse toggle`
`Alt`+`s` | Umschalten der Rechtschreibprüfung. | `/mute spell toggle`
`Alt`+`=` | schaltet Filterfunktion an/aus. | `/filter toggle`
`Alt`+`-` | schaltet, für den aktuellen Buffer, Filterfunktion an/aus. | `/filter toggle @`

### 6.7. Suchkontext

Diese Tasten werden im Kontext "search" verwendet (wenn `Ctrl`+`s` gedrückt wird, um Text in Bufferzeilen zu suchen).

Taste | Beschreibung | Befehl
--- | --- | ---
`Ctrl`+`x` | Wechsel des Suchmodus: einfache Textsuche (Standard), reguläre Ausdrücke. | `/input search_switch_regex`
`Alt`+`c` | auf Groß-/Kleinschreibung umschalten. | `/input search_switch_case`
`Tab` | wechselt Suche in: Nachricht (Standard), im Präfix, Präfix + Nachricht. | `/input search_switch_where`
`Ctrl`+`r` `↑` | sucht vorheriger Zeile. | `/input search_previous`
`Ctrl`+`s` `↓` | sucht nächste Zeile . | `/input search_next`
`Enter` `Ctrl`+`j` `Ctrl`+`m` | beendet Suche ab aktueller Position. | `/input search_stop_here`
`Ctrl`+`q` | Suche wird abgebrochen und der Bildlauf wird auf die Vortextsuche zurückgesetzt. | `/input search_stop`

### 6.8. Kontext der Verlaufssuche

Diese Tasten werden im Kontext "histsearch" verwendet (wenn `Ctrl`+`r` gedrückt wird, um Text im Befehlsverlauf zu suchen).

Taste | Beschreibung | Befehl
--- | --- | ---
`Ctrl`+`x` | Wechsel des Suchmodus: einfache Textsuche (Standard), reguläre Ausdrücke. | `/input search_switch_regex`
`Alt`+`c` | auf Groß-/Kleinschreibung umschalten. | `/input search_switch_case`
`Tab` | umschalten der Suche für: lokaler Bufferverlauf (Standard), globaler Verlauf. | `/input search_switch_where`
`Ctrl`+`r` `↑` | Suche in vorherigen (älteren) Verlaufseinträgen. | `/input search_previous`
`Ctrl`+`s` `↓` | Suche in nachfolgenden (neueren) Verlaufseinträgen. | `/input search_next`
`Enter` `Ctrl`+`j` `Ctrl`+`m` | Suche stoppen und übereinstimmende Eingaben verwenden. | `/input search_stop_here`
`Ctrl`+`o` | führt den im Verlauf gefundenen Befehl aus und fügt den nächsten in die Befehlszeile ein. | `/input history_use_get_next`
`Ctrl`+`q` | stoppt die Suche und stellt die Eingabe auf ihren ursprünglichen Wert zurück. | `/input search_stop`

### 6.9. Cursor-Kontext

Diese Tasten werden im Kontext "cursor" verwendet (Cursor kann frei auf dem Bildschirm bewegt werden), see Cursor mode.

Taste | Bereich | Beschreibung | Befehl
--- | --- | --- | ---
`↑` | - | bewegt den Cursor eine Zeile nach oben. | `/cursor move up`
`↓` | - | bewegt den Cursor eine Zeile nach unten. | `/cursor move down`
`←` | - | bewegt den Cursor eine Spalte nach links. | `/cursor move left`
`→` | - | bewegt den Cursor eine Spalte nach rechts. | `/cursor move right`
`Alt`+`↑` | - | bewegt den Cursor zur ersten Zeile des Bereichs. | `/cursor move edge_top`
`Alt`+`↓` | - | bewegt den Cursor zur letzten Zeile des Bereichs. | `/cursor move edge_bottom`
`Alt`+`←` | - | bewegt den Cursor zur ersten Spalte des Bereichs. | `/cursor move edge_left`
`Alt`+`→` | - | bewegt den Cursor zur letzten Spalte des Bereichs. | `/cursor move edge_right`
`Alt`+`Home` | - | bewegt den Cursor in die obere linke Ecke des Bereichs. | `/cursor move top_left`
`Alt`+`End` | - | bewegt den Cursor in die untere rechte Ecke des Bereichs. | `/cursor move bottom_right`
`Alt`+`Shift`+`↑` | - | bewegt den Cursor einen Bereich nach oben. | `/cursor move area_up`
`Alt`+`Shift`+`↓` | - | bewegt den Cursor einen Bereich nach unten. | `/cursor move area_down`
`Alt`+`Shift`+`←` | - | bewegt den Cursor einen Bereich nach links. | `/cursor move area_left`
`Alt`+`Shift`+`→` | - | bewegt den Cursor einen Bereich nach rechts. | `/cursor move area_right`
`m` | Chat | zitiert Nachricht. | `hsignal:chat_quote_message;/cursor stop`
`l` | Chat | zitiert aktuelle Zeile. | `hsignal:chat_quote_focused_line;/cursor stop`
`q` | Chat | zitiert prefix + Nachricht. | `hsignal:chat_quote_prefix_message;/cursor stop`
`Q` | Chat | zitiert Uhrzeit + prefix + Nachricht. | `hsignal:chat_quote_time_prefix_message;/cursor stop`
`b` | Benutzerliste | verbannt nick (Ban). | `/window ${_window_number};/ban ${nick}`
`k` | Benutzerliste | kickt nick. | `/window ${_window_number};/kick ${nick}`
`K` | Benutzerliste | kickt und verbannt nick. | `/window ${_window_number};/kickban ${nick}`
`q` | Benutzerliste | öffnet privaten Chat mit Nick. | `/window ${_window_number};/query ${nick};/cursor stop`
`w` | Benutzerliste | führt einen whois für Nick aus. | `/window ${_window_number};/whois ${nick}`
`Enter` `Ctrl`+`j` `Ctrl`+`m` | - | beendet den Cursor-Modus. | `/cursor stop`

### 6.10. Maus

Diese Mausaktionen sind nur möglich, wenn die Maus mit der Taste `Alt`+`m` aktiviert wurde (Befehl: `/mouse toggle`).

Maustaste/Mausrad (1) | Mausgeste | Bereich | Beschreibung | Befehl
--- | --- | --- | --- | ---
`■ □ □` | - | Chat | wechselt zum Fenster. | `/window ${_window_number}`
`■ □ □` | links | Chat | zum vorherigen Buffer springen. | `/window ${_window_number};/buffer +1`
`■ □ □` | rechts | Chat | zum nächsten Buffer springen. | `/window ${_window_number};/buffer +1`
`■ □ □` | links(lang) | Chat | wechselt zum ersten Buffer. | `/window ${_window_number};/buffer 1`
`■ □ □` | rechts(lang) | Chat | wechselt zum letzten Buffer. | `/window ${_window_number};/buffer +`
`▲` | - | Chat | mehrere Zeilen im Verlaufsspeicher des Buffer nach oben blättern. | `/window scroll_up -window ${_window_number}`
`▼` | - | Chat | mehrere Zeilen im Verlaufsspeicher des Buffer nach unten blättern. | `/window scroll_down -window ${_window_number}`
`Ctrl`+`▲` | - | Chat | horizontal, nach links scrollen. | `/window scroll_horiz -window ${_window_number} -10%`
`Ctrl`+`▼` | - | Chat | horizontal, nach rechts scrollen. | `/window scroll_horiz -window ${_window_number} +10%`
`▲` | - | chat: fset Buffer | Auswahl wird fünf Einträge nach oben bewegt, im fset Buffer. | `/fset -up 5`
`▼` | - | chat: fset buffer | Auswahl wird fünf Einträge nach unten bewegt, im fset Buffer. | `/fset -down 5`
`■ □ □` | - | chat: fset buffer | springt zu einem Eintrag im fset Buffer. | `/window ${_window_number};/fset -go ${fset_option_index}`
`□ □ ■` | - | chat: fset buffer | Boolean-Wert wird umgeschaltet (an/aus) oder editiere den Wert einer Option. | `hsignal:fset_mouse`
`□ □ ■` | left | chat: fset buffer | Integer/Farbwerte/Aufzählung werden verringert, andere Variabletypen werden in die Eingabezeile kopiert. | `hsignal:fset_mouse`
`□ □ ■` | right | chat: fset buffer | Integer/Farbwerte/Aufzählung werden erhöht, andere Variabletypen werden in die Eingabezeile kopiert. | `hsignal:fset_mouse`
`□ □ ■` | up / down | chat: fset buffer | markieren/demarkieren von mehreren Optionen. | `hsignal:fset_mouse`
`▲` | - | chat: /list buffer | gehe fünf Zeilen im /list-Buffer nach oben. | `/list -up 5`
`▼` | - | chat: /list buffer | gehe fünf Zeilen im /list-Buffer nach unten. | `/list -down 5`
`■ □ □` | - | chat: /list buffer | Zeile im /list-Buffer auswählen. | `/window ${_window_number};/list -go ${_chat_line_y}`
`□ □ ■` | - | chat: /list buffer | tritt dem IRC-Kanal, in der ausgewählten Zeile, bei. | `hsignal:irc_list_mouse`
`▲` | - | chat: script buffer | fünf Zeilen nach oben blättern, im Script-Buffer. | `/script -up 5`
`▼` | - | chat: script buffer | fünf Zeilen nach unten blättern, im Script-Buffer. | `/script -down 5`
`■ □ □` | - | chat: script buffer | wählt einen Eintrag im Script-Buffer aus. | `/script -go ${_chat_line_y}`
`□ □ ■` | - | chat: script buffer | installiert/entfernt ein Skript. | `/script -go ${_chat_line_y};/script installremove -q ${script_name_with_extension}`
`■ □ □` | up / left | buflist | verschiebt Buffer in der Reihenfolge nach unten. | Signal `buflist_mouse`.
`■ □ □` | down / right | buflist | verschiebt Buffer in der Reihenfolge nach oben. | Signal `buflist_mouse`.
`■ □ □` | - | buflist | wechselt zum Buffer (oder zum vorherigen Buffer, falls der aktuell genutzte Buffer angewählt wurde). | Signal `buflist_mouse`.
`□ □ ■` | - | buflist | wechselt zum nächsten Buffer, falls der aktuell genutzte Buffer angewählt wurde. | Signal `buflist_mouse`.
`Ctrl`+`▲` | - | buflist | wechselt zum vorherigen Buffer. | Signal `buflist_mouse`.
`Ctrl`+`▼` | - | buflist | wechselt zum nächsten Buffer. | Signal `buflist_mouse`.
`■ □ □` | hoch | Benutzerliste | Benutzerliste um eine Seite nach oben blättern. | `/bar scroll nicklist ${_window_number} -100%`
`■ □ □` | runter | Benutzerliste | Benutzerliste um eine Seite nach unten blättern. | `/bar scroll nicklist ${_window_number} +100%`
`■ □ □` | hoch(lang) | Benutzerliste | springt zum Anfang der Benutzerliste. | `/bar scroll nicklist ${_window_number} b`
`■ □ □` | runter(lang) | Benutzerliste | springt zum Ende der Benutzerliste. | `/bar scroll nicklist ${_window_number} e`
`■ □ □` | - | Benutzerliste | öffnet privaten Chat mit Nick. | `/window ${_window_number};/query ${nick}`
`□ □ ■` | - | Benutzerliste | führt einen whois für Nick aus. | `/window ${_window_number};/whois ${nick}`
`■ □ □` | links | Benutzerliste | kickt Nick. | `/window ${_window_number};/kick ${nick}`
`■ □ □` | links(lang) | Benutzerliste | kickt und verbannt Nick. | `/window ${_window_number};/kickban ${nick}`
`□ □ ■` | links | Benutzerliste | verbannt Nick. | `/window ${_window_number};/ban ${nick}`
`□ □ ■` | - | Input | fängt ein Mausereignis und fügt dieses in die Befehlszeile ein. | `/input grab_mouse_area`
`▲` | - | jede Bar | blättert Bar um 20% nach oben. | `/bar scroll ${_bar_name} ${_window_number} -20%`
`▼` | - | jede Bar | blättert Bar um 20% nach unten. | `/bar scroll ${_bar_name} ${_window_number} +20%`
`□ ■ □` | - | überall | aktiviert den Cursor-Modus an dieser Position. | `/cursor go ${_x},${_y}`

Anmerkung | (1) Buttons: `◼ □ □`: Klicke linke Maustaste `□ ◼ □`: Klicke mittlere Maustaste `□ □ ◼`: Klicke rechte Maustaste Mausrad: `▲`: Mausrad hoch `▼`: Mausrad runter

### 6.11. Fset Buffer

Diese Tasten und Aktionen werden im fset-Buffer verwendet (siehe Fset Erweiterung).

Taste | Action (1) | Beschreibung | Befehl
--- | --- | --- | ---
`↑` |  | einen Eintrag nach oben. | `/fset -up`
`↓` |  | einen Eintrag nach unten. | `/fset -down`
`PgUp` |  | eine Seite hoch blättern. | `/window page_up`
`PgDn` |  | eine Seite runter blättern. | `/window page_down`
`Alt`+`Home` | `<<` | springt zum ersten Eintrag. | `/fset -go 0`
`Alt`+`End` | `>>` | springt zum letzten Eintrag. | `/fset -go end`
`F11` | `<` | scrollt horizontal nach links. | `/fset -left`
`F12` | `>` | scrollt horizontal nach rechts. | `/fset -right`
`Alt`+`Space` | `t` | Boolean Wert ein/ausschalten. | `/fset -toggle`
`Alt`+`-` | `-` | subtrahiert 1 vom Wert bei Integer/Farboptionen/Aufzählung, bei anderen Typen kann der Wert editiert werden. | `/fset -add -1`
`Alt`+`+` | `+` | addiert 1 zum Wert bei Integer/Farboptionen/Aufzählung, bei anderen Typen kann der Wert editiert werden. | `/fset -add 1`
`Alt`+`f`, `Alt`+`r` | `r` | Wert resetten. | `/fset -reset`
`Alt`+`f`, `Alt`+`u` | `u` | Wert zurücksetzen. | `/fset -unset`
`Alt`+`Enter` | `s` | Wert setzen. | `/fset -set`
`Alt`+`f`, `Alt`+`n` | `n` | ein neuer Wert wird gesetzt, der alte Wert wird gelöscht. | `/fset -setnew`
`Alt`+`f`, `Alt`+`a` | `a` | dem Wert was hinzufügen. | `/fset -append`
`Alt`+`,` | `,` | markieren/demarkieren einer Option. | `/fset -mark 1`
`Shift`+`↑` |  | eine Zeile nach oben und markiert/demarkiert Option. | `/fset -up; /fset -mark`
`Shift`+`↓` |  | markiert/demarkiert Option und geht eine Zeile nach unten. | `/fset -mark; /fset -down`
| `m:xxx` | markiert Optionen welche angezeigt werden und auf die der Filter "xxx" zutrifft (jeder Filter für Option oder Wert ist erlaubt, siehe Befehl /fset). |
| `u:xxx` | demarkiert Optionen welche angezeigt werden und auf die der Filter "xxx" zutrifft (jeder Filter für Option oder Wert ist erlaubt, siehe Befehl /fset). |
`Ctrl`+`l` (`L`) |  | der Bildschirm wird neu gezeichnet. | `/fset -refresh`
| `$` | Optionen neu einlesen (markierte Optionen werden beibehalten). |
| `$$` | Optionen neu einlesen (Markierungen von Optionen werden dabei gelöscht). |
`Alt`+`p` | `p` | Umschalten der Beschreibung von Erweiterungen (`plugins.desc.*`). | `/mute /set fset.look.show_plugins_desc toggle`
`Alt`+`v` | `v` | Hilfe-Bar Ein-/Ausschalten. | `/bar toggle fset`
| `s:x,y` | sortiert Optionen nach Bereichen x,y (siehe Option fset.look.sort). | `/mute /set fset.look.sort x,y`
| `s:` | setzt Sortierung wieder auf Standardwerte (siehe Option fset.look.sort). | `/mute /unset fset.look.sort`
| `w:xxx` | exportiert Optionen in Datei "xxx". | `/fset -export xxx`
| `w-:xxx` | exportiert Optionen in Datei "xxx", ohne Hilfstext. | `/fset -export -nohelp xxx`
| `w+:xxx` | exportiert Optionen in Datei "xxx", mit Hilfstext. | `/fset -export -help xxx`
`Ctrl`+`x` | `x` | Umschalten zwischen der Darstellung von Optionen. | `/fset -format`
| `q` | fset Buffer schließen. | `/buffer close`

Anmerkung | (1) Die Aktion muss als Eingabe in die Befehlszeile eingegeben werden, gefolgt von `Enter`.

### 6.12. IRC /list Buffer

Diese Tastenbefehle und Aktionen können im IRC /list-Buffer genutzt werden (siehe Befehl /list).

Taste | Action (1) | Beschreibung | Befehl
--- | --- | --- | ---
`↑` |  | einen Eintrag nach oben. | `/list -up`
`↓` |  | einen Eintrag nach unten. | `/list -down`
`PgUp` |  | eine Seite hoch blättern. | `/window page_up`
`PgDn` |  | eine Seite runter blättern. | `/window page_down`
`Alt`+`Home` | `<<` | springt zum ersten Eintrag. | `/list -go 0`
`Alt`+`End` | `>>` | springt zum letzten Eintrag. | `/list -go end`
`F11` | `<` | scrollt horizontal nach links. | `/list -left`
`F12` | `>` | scrollt horizontal nach rechts. | `/list -right`
`Ctrl`+`j` | `j` | Join IRC channel on selected line. | `/list -join`
| `xxx` | zeigt nur Kanäle an mit "xxx" im Namen oder Thema (Groß- und Kleinschreibung wird ignoriert). |
| `n:xxx` | zeigt nur Kanäle mit im Namen (Groß- und Kleinschreibung wird ignoriert). |
| `t:xxx` | zeigt nur Kanäle mit "xxx" im Thema (Groß- und Kleinschreibung wird ignoriert). |
| `u:n` | zeigt nur Kanäle mit wenigstens "n" Usern. |
| `u:>n` | zeigt nur Kanäle mit mehr als "n" Usern |
| `u:<n` | zeigt nur Kanäle mit weniger als "n" Usern |
| `c:xxx` | zeigt nur Kanäle an, die der ausgewerteten Bedingung, "xxx", entsprechen , unter Verwendung folgender Variablen: name, name2, users, topic |
| `s:x,y` | sortiert Kanäle nach Feldern x,y (siehe Befehl /list). |
| `s:` | Sortierung auf den Standardwert zurücksetzen (siehe Befehl /list). |
| `$` | Liste aktualisieren (Der Befehl /list wird erneut ausgeführt). |
| `q` | Buffer schließen. | `/buffer close`

Anmerkung | (1) Die Aktion muss als Eingabe in die Befehlszeile eingegeben werden, gefolgt von `Enter`.

### 6.13. Skriptbuffer

Diese Tasten und Aktionen werden im fset-Buffer verwendet (siehe script manager).

Taste | Action (1) | Beschreibung | Befehl
--- | --- | --- | ---
`↑` |  | eine Zeile nach oben. | `/script -up`
`↓` |  | eine Zeile nach unten. | `/script -down`
`PgUp` |  | eine Seite hoch blättern. | `/window page_up`
`PgDn` |  | eine Seite nach unten blättern. | `/window page_down`
`Alt`+`i` | `i` | Skript installieren. | `/script install`
`Alt`+`r` | `r` | Skript entfernen. | `/script remove`
`Alt`+`l` | `l` | Skript laden. | `/script load`
`Alt`+`L` | `L` | Skript neu laden. | `/script reload`
`Alt`+`u` | `u` | Skript wird beendet. | `/script unload`
`Alt`+`Shift`+`A` | `A` | das Skript wird in das autoload-Verzeichnis eingebunden. | `/script toggleautoload`
`Alt`+`h` | `h` | Skript wird gehalten bzw. freigegeben. | `/script hold`
`Alt`+`v` | `v` | Skript Quelltext anzeigen. | `/script show`
| `s:x,y` | Sortiert Skrips nach Feldern x,y (siehe Option script.look.sort). |
| `s:` | Sortierung auf den Standardwert zurücksetzen (siehe Option script.look.sort). |
| `$` | Liste aktualisieren. |
| `q` | Buffer schließen. | `/buffer close`

Anmerkung | (1) Die Aktion muss als Eingabe in die Befehlszeile eingegeben werden, gefolgt von `Enter`.

## 7. Konfiguration

### 7.1. Fset

Die fset Erweiterung stellt eine Liste aller Optionen in einem Buffer dar und erleichtert die Konfiguration von WeeChat und Erweiterungen.

Beispiel des fset-Buffer, der Optionen anzeigt, die mit `weechat.look` beginnen:

    ┌──────────────────────────────────────────────────────────────────────────────────────┐
    │1.weechat│7/125 | Filter: weechat.look.* | Sortierung: ~name | Taste(input): alt+Lee>>│
    │2.fset   │weechat.look.bare_display_exit_on_input: beendet den einfachen Anzeigemodus │
    │         │durch Tastendruck [Standardwert: on]                                        │
    │         │----------------------------------------------------------------------------│
    │         │  weechat.look.align_end_of_lines              Aufzählung    message        │
    │         │  weechat.look.align_multiline_words           boolesch      on             │
    │         │  weechat.look.bar_more_down                   Zeichenkette  "++"           │
    │         │  weechat.look.bar_more_left                   Zeichenkette  "<<"           │
    │         │  weechat.look.bar_more_right                  Zeichenkette  ">>"           │
    │         │  weechat.look.bar_more_up                     Zeichenkette  "--"           │
    │         │  weechat.look.bare_display_exit_on_input      boolesch      on             │
    │         │  weechat.look.bare_display_time_format        Zeichenkette  "%H:%M"        │
    │         │  weechat.look.buffer_auto_renumber            boolesch      on             │
    │         │  weechat.look.buffer_notify_default           Aufzählung    all            │
    │         │  weechat.look.buffer_position                 Aufzählung    end            │
    │         │  weechat.look.buffer_search_case_sensitive    boolesch      off            │
    │         │  weechat.look.buffer_search_force_default     boolesch      off            │
    │         │  weechat.look.buffer_search_history           Aufzählung    local          │
    │         │  weechat.look.buffer_search_regex             boolesch      off            │
    │         │  weechat.look.buffer_search_where             Aufzählung    prefix_message │
    │         │  weechat.look.buffer_time_format              Zeichenkette  "%H:%M:%S"     │
    │         │[12:55] [2] [fset] 2:fset                                                   │
    │         │█                                                                           │
    └──────────────────────────────────────────────────────────────────────────────────────┘

#### Befehle

- `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

#### Optionen

Sektionen in Datei fset.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`color` | `/set fset.color.*` | Farben.
`format` | `/set fset.format.*` | Format um die Liste der Optionen darzustellen.
`look` | `/set fset.look.*` | Erscheinungsbild.

Optionen:

- 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. Farben

#### Basisfarben

Basisfarben in WeeChat sind:

Name | Farbe
--- | ---
`default` | Standard Terminalfarbe (transparent für Hintergrund)
`black` | Schwarz
`darkgray` | Dunkelgrau
`red` | Dunkelrot
`lightred` | Hellrot
`green` | Dunkelgrün
`lightgreen` | Hellgrün
`brown` | Braun
`yellow` | Gelb
`blue` | Dunkelblau
`lightblue` | Hellblau
`magenta` | Dunkel magenta
`lightmagenta` | Hell magenta
`cyan` | Dunkel türkis
`lightcyan` | Hell türkis
`gray` | Grau
`white` | Weiß

#### erweiterte Farbpalette

WeeChat belegt Farbpaarungen dynamisch, sobald die Farbe genutzt werden soll. Zum Beispiel, um mit einer Farbe Buffer oder Bars zu nutzen.

Zu den Basisfarben können zusätzlich Farben zwischen eins und der maximalen Anzahl an Farben genutzt werden, die vom jeweiligen Terminal zur Verfügung gestellt werden.

Mit dem `/color` Befehl kann man sich sowohl die aktuelle Farbpalette anzeigen lassen als auch die Anzahl der zu nutzenden Farben. Mit `Alt`+`c` kann man vorübergehend zu den Terminalfarben wechseln, um eine Farbe auszuwählen.

Um zum Beispiel die Uhrzeit in einem Buffer in einem schönen Orange darstellen zu lassen:

    /set weechat.color.chat_time 214

oder falls man den Hintergrund der Statusleiste in einm sehr dunklen Grün haben möchte:

    /set weechat.bar.status.color_bg 22

#### Alias

Man kann einer Farbe einen Alias zuordnen um diesen Alias anstelle der Farbzahl in die Optionen einzutragen. Um einen Alias zu definieren nutzt man den Befehl `/color alias`.

Beispiel:

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

#### Attribute

Er ist möglich einer Farbe ein Attribut hinzuzufügen. Dazu wird dem Farbnamen oder der Farbnummer ein- oder mehrere Attribute vorangestellt.

- `%`: blinken

- `.`: "dim" (halb hell)

- `*` : fett

- `!` : invertierte Darstellung

- `/` : kursiven

- `_` : unterstrichen

- `|`: Attribute beibehalten: blinken/dim/fett/invertierte Darstellung/kursiv/unterstrichen nicht zurücksetzen, wenn die Farbe geändert wird

Um zum Beispiel dem eigenen Nick die Farbe weiß und unterstrichen zuzuordnen:

    /set weechat.color.chat_nick_self _white

oder um die Zeitanzeige in der Statuszeile orange, fett und unterstrichen darzustellen:

    /set weechat.color.status_time *_214

Um einer Standard-Terminalfarbe (-1) ein Attribut hinzuzufügen muss eine Zahl gewählt werden die größer ist als die letzte genutzte Farbe des Terminals. Zum Beispiel; maximale Farbwahl in WeeChat: 99999.

Um der Vordergrundfarbe des Terminals das Attribut "fett" zuzuordnen:

    /set weechat.color.status_time *99999

### 7.3. Charset

Die Charset-Erweiterung übernimmt das de-/kodieren der Zeichensätze.

Es existiert ein Standardzeichensatz zum de-/kodieren und spezielle Zeichensätze für Buffer (oder Gruppen von Buffern).

Diese Erweiterung ist optional, sie wird aber empfohlen. Wenn diese Erweiterung nicht genutzt wird steht WeeChat lediglich UTF-8 zur Verfügung.

Die Charset Erweiterung wird automatisch von WeeChat geladen. Um sicher zu gehen dass diese Erweiterung geladen wurde führen Sie folgenden Befehl aus:

    /charset

Wird der Befehl nicht gefunden dann kann die Erweiterung mit dem nachfolgenden Befehl nachgeladen werden:

    /plugin load charset

Wird die Erweiterung nicht geladen dann sollten Sie WeeChat nochmals mit allen Erweiterungen und der Charset Unterstützung kompilieren.

Wird die Charset Erweiterung gestartet dann wird der Terminal und der interne Zeichensatz genutzt. Welcher Terminal Zeichensatz genutzt wird hängt davon ab welchen Zeichensatz Sie lokal nutzen. Intern wird UTF-8 genutzt.

Beispiel:

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

#### Zeichensatz auswählen

Um einen Zeichensatz zum de-/kodieren zu bestimmen wird der Befehl `/set` genutzt.

Beispiel:

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

Wenn der globale Zeichensatz zum dekodieren nicht gesetzt ist (dies tritt beim ersten Aufruf des Charset Erweiterung auf) dann wird automatisch der Zeichensatz genutzt der vom Terminal verwendet wird (sofern dieser nicht UTF-8 ist) oder der Standardzeichensatz ISO-8859-1.

Der Standardwert zum kodieren ist nicht gesetzt. Deshalb wird der interne Zeichensatz (UTF-8) genutzt.

Um einen Zeichensatz für IRC Server einzustellen wird der Befehl `/charset` im Server Buffer ausgeführt. Wird nur der Zeichensatz als Argument übergeben wird dieser sowohl zum kodieren als auch dekodieren genutzt.

Beispiel:

    /charset ISO-8859-15

ist identisch mit den Befehlen:

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

Um den Zeichensatz in einem IRC-Kanal (oder in einem privaten Buffer) zu ändern wird der selbe Befehl im entsprechenden Buffer genutzt.

Um die Zeichenkodierung für alle Kanäle und privaten Buffer eines IRC Server zu ändern:

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

Um sich alle genutzten Zeichensätze anzeigen zu lassen wird folgender Befehl genutzt:

    /set charset.*

#### Fehlersuche

Sollten Probleme bei der Zeichensatzdarstellung auftreten dann werfen Sie bitte einen Blick in die WeeChat FAQ / Charset ↗.

#### Befehle

- `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

#### Optionen

Sektionen in Datei charset.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`default` | `/set charset.default.*` | Vorgegebener Zeichensatz zum De-/kodieren.
`decode` | `/charset decode /set charset.decode.*` | Zeichensatz zum dekodieren (Optionen können in Sektion hinzugefügt/entfernt werden).
`encode` | `/charset encode /set charset.encode.*` | Zeichensatz zum kodieren (Optionen können in Sektion hinzugefügt/entfernt werden).

Optionen:

- 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. Benachrichtigungsstufen

#### Benachrichtigungsstufen einstellen

Es gibt vier Benachrichtigungsstufen für Nachrichten, welche in Buffern dargestellt werden. Nachfolgend eine Liste, sortiert von niedrig nach hoch:

- low: Nachricht mit einer geringen Wertigkeit (zum Beispiel: IRC join/part/quit)

- message: Nachricht von einem User

- private: Nachricht in einem privaten Buffer

- highlight: wenn es sich um eine highlight Nachricht handelt

Jeder Buffer besitzt eine Benachrichtigungsstufe, um festzulegen, bei welchen Nachrichten der entsprechende Buffer in der Hotlist angezeigt werden soll.

Der Wert für die Benachrichtigungsstufe kann mittels folgender Option festgelegt werden: weechat.look.buffer_notify_default, Der Standardwert ist all.

Benachrichtigungsstufe | Welche Nachrichten Berücksichtigung in der Hotlist finden
--- | ---
`none` | (keine)
`highlight` | highlight + private Nachrichten
`message` | highlight + private Nachrichten + normale Nachrichten
`all` | highlight + private Nachrichten + normal Nachrichten + Nachrichten mit einer niedrigen Priorität

Benachrichtigungsstufen können für mehrere Buffer definiert werden. Zum Beispiel für alle Buffer des IRC Servers "libera":

    /set weechat.notify.irc.libera message

Setzt die Benachrichtigungsstufe ausschließlich für den Kanal "#weechat", auf die Stufe highlight:

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

Die Benachrichtigungsstufe für einen Buffer kann mittels dem `/buffer` Befehl festgelegt werden:

    /buffer notify highlight

#### Maximaler Hotlist-Level für Nicks

Es ist möglich den sogenannten maximalen Hotlist-Level für einzele Nicks einzustellen, per Buffer oder für mehrere Gruppen (wie IRC Server).

Die Buffer-Eigenschaft "hotlist_max_level_nicks" kann mit einer Anzahl von Nicks genutzt werden und für jeden einzelen Nick kann ein maximler Hotlist-Level eingestellt wertden. Mögliche Stufen sind:

- -1: keine Änderungen an der Hotlist für den entsprechenden Nick

- 0: niedrige Priorität (zum Beispiel join/part Nachrichten)

- 1: Nachricht

- 2: private Nachricht

- 3: Highlight (eigentlich unnötig, da es standardmäßig die höchste Stufe für alle Nachrichten ist)

Um zum Beispiel Highlights von "joe" und "mike" im aktuellen Buffer zu deaktivieren:

    /buffer setauto hotlist_max_level_nicks_add joe:2,mike:2

### 7.5. Hervorhebungen

#### Hervorhebungen deaktivieren

Hervorhebungen können mit der Option weechat.look.highlight_disable_regex (regulärer Ausdruck) deaktiviert werden.
Wenn eine Hervorhebung mit dieser Option deaktiviert wird, werden die anderen Hervorhebungsoptionen ignoriert.

Zum Beispiel, Nachrichten die eine Hervorhebung besitzen, wo die Nachricht mit "flash" zwischen spitzen Klammern beginnt:

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

Dies kann auch mit der Buffereigenschaft „highlight_disable_regex“ eingestellt werden.

Gleiches Beispiel, spezifisch für den aktuellen Buffer:

    /buffer setauto highlight_disable_regex <flash.*>

#### Worte als Highlights hinzufügen

Standardmäßig werden in WeeChat alle Nachrichten von anderen Personen als highlight deklariert, falls diese den eigenen Nick beinhalten. Deshalb ist ein highlight abhängig vom jeweiligen Buffer (ein Nick kann je nach Buffer unterschiedlich sein)

Es können weitere Wörter zu den highlights hinzugefügt werden, mit der Option weechat.look.highlight, zum Beispiel um neben dem eigenen Nick auch die Wörter "Wort1","Wort2" und alle Wörter die mit "Test" beginnen zu highlighten:

    /set weechat.look.highlight "Wort1,Wort2,Test*"

Wird eine spezielle Regel benötigt, dann können reguläre Ausdrücke verwendet werden. Dazu sollte man folgende Option nutzen: weechat.look.highlight_regex, um zum Beispiel die Wörter "flashcode", "flashcöde" und "flashy" zu highlighten:

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

Die Trennzeichen die Wörter umschließen können angepasst werden, mit der Option: weechat.look.word_chars_highlight.

#### Tags zu highlight hinzufügen

Zeilen die in einem Buffer dargestellt werden enthalten "tags" welche zusätzliche Informationen über die Herkunft der Nachricht oder über die Nachricht selbst beinhalten. + Diese "tags" können mit dem Befehl `/debug tags` dargestellt werden (um die Anzeige wieder zu entfernen, nochmals den Befehl ausführen).

Um Tags als Highlights zu nutzen wird folgende Option verwendet: weechat.look.highlight_tags. Tags werden durch Kommata getrennt und mehrere Tags können mit `+` genutzt werden um ein logischen "und" zu erstellen.

Zum Beispiel um alle Nachrichten vom Nick "FlashCode" und alle notice-Nachrichten von Nicks die mit "toto" beginnen zu highlighten:

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

#### Highlights mit regulärem Ausdruck für einen Buffer nutzen

Man kann reguläre Ausdrücke für Highlights in einem Buffer nutzen, indem man die Eigenschaft des Buffers mittels "highlight_regex" anpasst.

Um zum Beispiel jede Nachricht im aktuellen Buffer als Highlight-Nachricht einzustufen:

    /buffer setauto highlight_regex .*

### 7.6. Bufferprotokollierung

Die Logger Erweiterung erlaubt es den Inhalt von Buffern in Dateien zu sichern. Dabei kann man über Optionen Einfluss darauf nehmen was gesichert und wie etwas gesichert werden soll.

#### Log-Level

Die Protokollierung wird durch einen sogenannten Level für jeden Buffer sichergestellt. Der Standardlevel ist dabei 9 (damit werden alle Nachrichten die im Buffer angezeigt werden protokolliert). Der Grad einer Protokollierung kann separat für jeden einzelnen Buffer oder aber für eine Anzahl von Buffern festgelegt werden.

Mögliche Level sind hierbei 0 bis 9. Null bedeutet, es findet keine Protokollierung statt und neun, dass alle Nachrichten protokolliert werden.

Erweiterungen nutzen unterschiedliche Level um Nachrichten anzuzeigen. Die IRC Erweiterung nutzt folgende Level:

- Level 1: Nachrichten eines Users (im Kanal oder privat)

- Level 2: Nick wurde geändert (der eigene oder von einer anderen Person)

- Level 3: jedwede Server Nachricht (ausgenommen join/part/quit)

- Level 4: Server Nachrichten join/part/quit

Setzen Sie also den Grad der Protokollierung für einen IRC Kanal auf "3" wird WeeChat alle Nachrichten protokollieren, ausgenommen join/part/quit Nachrichten.

weitere Beispiele:

- Level 3 für IRC Kanal #weechat nutzen:

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

- Level 3 für libera Server Buffer nutzen:

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

- Level 3 für alle Kanäle auf dem Server libera nutzen:

    /set logger.level.irc.libera 3

- Level 2 für alle IRC Buffers nutzen:

    /set logger.level.irc 2

#### Dateinamenmaske

Es ist möglich eine Dateinamenmaske für jeden Buffer zu erstellen und diese Maske mit lokalen Buffervariablen zu füllen. Um sich die verfügbaren lokalen Variablen für den aktuellen Buffer anzeigen zu lassen:

    /buffer listvar

Masken werden in absteigender Reihenfolge abgeglichen, beginnend mit `logger.mask.$plugin.*`, dabei fungiert `logger.file.mask` als Fallback-Option.

Zum Beispiel für den Buffer "irc.libera.#weechat". WeeChat sucht in dieser Reihenfolge nach einer Maske:

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

Dies bedeutet dass man eine Maske speziell für einen IRC Server ("logger.mask.irc.libera") anlegen kann oder aber global für die Erweiterung ("logger.mask.irc").

##### Protokolldatei nach Datum

Um Protokolldateien mit einer Datumsrelevanz zu erstellen müssen Datumsspezifikationen in der Maske genutzt werden (siehe `man strftime` für das Format). Zum Beispiel:

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

Erstellt eine Struktur in folgender Form:

    ~/.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
        ...

##### Protokolldateien nach Server und Kanälen

Soll für jeden IRC Server ein Verzeichnis erstellt werden mit jeweils einer Protokolldatei für jeden Kanal:

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

Erstellt eine Struktur in folgender Form:

    ~/.local/share/weechat
    └── logs
        └── irc
            ├── libera
            │   ├── libera.weechatlog
            │   ├── #weechat.weechatlog
            │   └── #mychan.weechatlog
            ├── oftc
            │   ├── oftc.weechatlog
            │   ├── #channel1.weechatlog
            │   └── #channel2.weechatlog
            ...

#### Rotation und Kompressions

Es ist möglich, eine maximale Größe für Protokolldateien zu definieren, und wenn diese erreicht ist, findet eine automatische Rotation der Protokolldatei statt.

Die rotierenden Protokolldateien können mit gzip kompromiert werden oder mit zstd ↗.

Anmerkung | Da die Komprimierung einer Datei einige Zeit in Anspruch nehmen kann, wird diese Aktion im Hintergrund durchgeführt.

Beispiel mit einer maximalen Größe von 2 GB und einer Komprimierung mittels gzip unter Verwendung einer guten Komprimierungsstufe (langsamer als die Standardeinstellung):

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

Wenn Sie eine Dezimalzahl verwenden möchten, können Sie die unten stehende Einheit verwenden und mit 1000 multiplizieren, um beispielsweise die maximale Größe auf 2,5 GB festzulegen:

    /set logger.file.rotation_size_max "2500m"

Mit diesen Einstellungen erhalten Sie eine Dateisktruktur wie die folgende (in diesem Beispiel gibt es nur eine Rotation für das Protokoll des #weechat-Kanals):

    ~/.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

#### Befehle

- `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"

#### Optionen

Sektionen in Datei logger.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set logger.look.*` | Erscheinungsbild.
`color` | `/set logger.color.*` | Farben.
`file` | `/set logger.file.*` | Optionen für Protokolldateien.
`level` | `/set logger.level.*` | Protokollierungslevel pro Buffer (Optionen können in Sektion hinzugefügt/entfernt werden).
`mask` | `/set logger.mask.*` | Dateinamenmaske pro buffer (Optionen können in Sektion hinzugefügt/entfernt werden).

Optionen:

- 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. Mausunterstützung

WeeChat unterstützt Maustasten als auch Mausgesten. Dies funktioniert sowohl im lokalen Terminal wie auch über eine Remote Verbindung via SSH.

#### Mausunterstützung aktivieren

Um die Mausunterstützung beim Programmstart zu aktivieren:

    /set weechat.look.mouse on

Um die Mausunterstützung direkt zu aktivieren, kann man den Tastenkurzbefehl `Alt`+`m` nutzen oder folgenden Befehl ausführen:

    /mouse enable

Es ist möglich die Mausunterstützung kurzzeitig zu deaktivieren und dies auf einen Tastenkurzbefehl zu legen. Zum Beispiel soll über den Tastenkurzbefehl `Alt`+`%` die Mausunterstützung für 10 Sekunden deaktiviert werden:

    /key bind meta-% /mouse toggle 10

Wichtig | Ist die Maus in WeeChat aktiviert werden alle Mausereignisse duch WeeChat gefangen. Dadurch werden Aktionen wie Kopieren+Einfügen oder Klicks auf URLs nicht an das Terminal weitergereicht. + Mittels der `Shift` Taste kann aber das Mausereignis an das Terminal weitergeleitet werden, als ob die Maus deaktiviert wäre (bei einigen Terminals, wie z.B. iTerm, muß die Taste `Alt` anstelle von `Shift` verwendet werden).

Anmerkung | Sollten Probleme bei der Mausunterstützung auftreten, dann sollte Bitte die WeeChat FAQ / Mausunterstützung ↗.

#### Befehle einem Maus-Ereignis zuweisen

Es gibt eine Anzahl von Maus-Ereignissen, die standardmäßig durch WeeChat definiert sind (siehe mouse actions).

Man kann mit dem Befehl `/key` im Kontext "mouse" aber auch eigene Befehle zuweisen und löschen (für die Syntax, siehe Befehl /key).

Der Name eines Ereignisses besteht aus einem Modifier (optional), einer Maustaste/Mausrad und der Mausgeste (optional). Die unterschiedlichen Elemente werden durch ein `-` getrennt.

Liste der Modifikatoren (in der Reihenfolge des Ereignisnamens):

Modifier | Beschreibung
--- | ---
`alt` | Taste `Alt`
`ctrl` | Taste `Ctrl`
`shift` | Taste `Shift` (1)

Anmerkung | (1) Der `shift` Modifikator sollte in WeeChat selten verwendet werden, da es viele Terminals gibt die diesen Modifikator nutzen, um Mausereignisse direkt abzufangen.

Verschiedene Modifikatoren können kombiniert werden, zum Beispiel:

- `alt-ctrl`

- `ctrl-shift`

- `alt-ctrl-shift`

Liste der Maustasten/Mausrad:

Maustaste/-rad | Beschreibung
--- | ---
`button1` | Linker Mausknopf wird gedrückt
`button2` | Rechter Mausknopf wird gedrückt
`button3` | Mittlerer Mausknopf wird gedrückt (häufig der Druck auf das Mausrad)
`button4 …​ button11` | Ein zusätzlicher Mausknopf wird gedrückt
`wheelup` | Mausrad wird nach oben gescrollt
`wheeldown` | Mausrad wird nach unten gescrollt

Liste der Mausgesten (nur für Maustasten, nicht für das Mausrad, anwendbar):

Mausgeste | Distanz
--- | ---
`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 von unvollständigen Ereignissen (nur für Mausknopf, nützlich für Erweiterungen/Skripten):

Ereignis | Beschreibung
--- | ---
`event-down` | Mausknopf ist gedrückt
`event-drag` | Maus wurde mit gedrücktem Mausknopf bewegt

Bespiele von Ereignissen:

- `button1`

- `ctrl-button1`

- `button1-gesture-right`

- `button1-event-down`

- `button1-event-drag`

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

- `wheelup`

- `alt-ctrl-wheeldown`

Hinweis | Wird eine Funktion im "mouse"-Kontext hinzufügt ist es möglich, mehrere Mausereignisse mittels `*` abzufangen. Zum Beispiel fängt `button1-gesture-*` alle Mausgesten ab, die mit der linken Maustaste eingeleitet werden.

Hinweis | Den Namen eines Mausereignisses kann man mittels des Befehls `/input grab_mouse` erfragen. Man führt den Befehl in der Eingabezeile aus und startet das Ereignis. Als Ergebnis erhält man in der Eingabezeile den Namen des ausgeführten Mausereignisses.

### 7.8. Rechtschreibprüfung

Mit der Spell Erweiterung findet eine Rechtschreibprüfung Einzug in WeeChat. Dabei ist es möglich mehrere Wörterbücher für einen Buffer zu nutzen.

Die Rechtschreibprüfung ist standardmäßig deaktiviert und kann mittels dem Tastenbefehl [Alt+s] umgeschaltet werden.

#### Wörterbücher

Um die Rechtschreibprüfung nutzen zu können muss vorab ein Wörterbuch definiert werden, welches genutzt werden soll. Dies kann entweder global oder per Buffer geschehen.

Verschiedene Wörterbücher können parallel verwendet werden. WeeChat gleicht dann die Wörter mit allen Wörterbüchern ab,

Um zum Beispiel Englisch und Deutsch zu nutzen:

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

Es ist möglich ein anderes Wörterbuch für einen speziellen Buffer zu verwenden, zum Beispiel in einem französischen Kanal:

    /spell setdict fr

Um einer Gruppe von Buffern das selbe Wörterbuch zuzuordnen, zum Beispiel das deutsche Wörterbuch für alle Kanäle auf dem libera IRC Server:

    /set spell.dict.irc.libera de

Für weitere Informationen, siehe den Befehl /spell.

#### Optionen für Rechtschreibprüfung

Optionen für die Rechtschreibprüfung können definiert werden indem man die entsprechende Option in die Sektion "option" der Aspell-Konfiguration hinzufügt.

Den Name der Option findet man in der ASpell-Konfigurationsdatei. Eine Auflistung aller möglichen Optionen erhält man durch:

    aspell config

Um zum Beispiel die Option "ignore-case" einzuschalten:

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

#### Rechtschreibkorrektur

Eine Rechtschreibkorrektur wird in der Bar-Item "spell_suggest" angezeigt. Die Anzahl an Vorschlägen, für die Rechtschreibkorrektur, kann mit der Option spell.check.suggestions bestimmt werden.

Um die Rechtschreibkorrektur zu aktivieren, muss für die Option spell.check.suggestions ein Wert ≥ 0 eingestellt werden und das Bar-Item "spell_suggest" zu einer Bar, zum Beispiel status, hinzufügt werden.

Beispiel der Rechtschreibkorrektur, mit einem deutschen Wörterbuch (`de`):

    │[12:55] [6] [irc/libera] 3:#test(+n){4} [dies,Diebs,Viehs]                       │
    │[@Flashy] diehs █                                                                │
    └─────────────────────────────────────────────────────────────────────────────────┘

Beispiel der Rechtschreibkorrektur, mit zwei Wörterbüchern (`en,de`):

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

#### Befehle

- `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.

#### Optionen

Sektionen in Datei spell.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`color` | `/set spell.color.*` | Farben.
`check` | `/set spell.check.*` | Optionen um Einstellungen an der Rechtschreibprüfung vorzunehmen.
`dict` | `/spell setdict /set spell.dict.*` | Wörterbücher für Buffer (Optionen können in Sektion hinzugefügt/entfernt werden).
`look` | `/set spell.look.*` | Erscheinungsbild.
`option` | `/set spell.option.*` | Optionen für Rechtschreibprüfung (Optionen können in Sektion hinzugefügt/entfernt werden).

Optionen:

- 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. Bars

Eine Bar ist ein Bereich der parallel, zum Chatfenster, jedwede Art von Text enthalten kann.

Eine Bar kann mittels `weechat.bar.name.option` konfiguriert werden. Dabei steht `name`, für den Namen der Bar und `option` für die Option dieser Bar.

Aufzählung von Bar-Optionen:

Option | Wert | Beschreibung
--- | --- | ---
`type` | `root`, `window` | Eine Bar vom Typ `root` wird nur einmal auf dem Bildschirm dargestellt und dies außerhalb von Fenstern. Die Standardbar buflist ist vom Typ `root`. Eine Bar vom Typ `window` wird hingegen in jedem Fenster dargestellt, zum Beispiel wenn man den Bildschirm teilt (mit `/window splith` oder `/window splitv`). Diese Bar wird nun in jedem einzelnen Fenster angezeigt. Die Standardbar title, status, input und nicklist sind vom Typ `window`.
`position` | `top`, `bottom`, `left`, `right` | Position der Bar: ober- oder unterhalb des Chatfensters, oder links/rechts davon.
`priority` | integer ≥ 0 | Priorität für die Bar: legt die Reihenfolge fest in der die Bars angeordnet werden sollen, wenn mehrere Bars den selben Typ und Position besitzen. Die Bars werden vom Rand zur Mitte des Bildschirms gezeichnet. Eine höhere Priorität bewirkt, dass die Bar näher am Rand gezeichnet wird. Beispiel: Die input Bar hat eine Priorität von 1000 und wird somit vor der status Bars gezeichnet, da diese lediglich eine Priorität von 500 besitzt.
`size` | integer ≥ 0 | Die Größe der Bar: Anzahl der Spalten, falls die Bar links/rechts bzw. Anzahl an Zeilen falls die Bar oben/unten dargestellt wird. Wird eine Größe `0` gewählt, dann wird die Größe der Bar automatisch bestimmt.
`size_max` | integer ≥ 0 | Die maximale Größe der Bar, `0` = keine Limitierung (diese Option wird nur genutzt, falls die Option `size` = `0` ist).
`color_bg` | color | Hintergrundfarbe, für die Bar.
`color_fg` | color | Textfarbe, für die Bar.
`color_delim` | color | Farbe der Trennzeichen, in der Bar.
`hidden` | `on`, `off` | Ist diese Option `on`, wird die Bar versteckt. Hinweis: anstelle dieser Option sollte vorzugsweise der `/bar` Befehl genutzt werden. Beispiel: `/bar toggle nicklist` (siehe Befehl /bar).
`separator` | `on`, `off` | Ist diese Option `on`, wird ein Separator (Linie) gezeichnet die eine Bar von anderen Bars oder dem Chatbereich trennt.
`items` | string | Eine Aufzählung von items (siehe items für weitere Informationen).
`filling_left_right` | `horizontal`, `vertical`, `columns_horizontal`, `columns_vertical` | Art, wie der Inhalt der Bar die `links` oder `rechts` gezeichnet wird, dargestellt wird (siehe filling für weitere Informationen).
`filling_top_bottom` | `horizontal`, `vertical`, `columns_horizontal`, `columns_vertical` | Art, wie der Inhalt der Bar die `oben` oder `unten` gezeichnet wird, dargestellt wird (siehe filling für weitere Informationen).
`conditions` | string | Bedingungen, wann die Bar angezeigt wird (siehe conditions für weitere Informationen).

#### Items

Die Option items ist ein String, mit einer Anzahl von Bar-Items. Diese werden durch Kommata voneinander getrennt (auf dem Bildschirm wird das Komma durch ein Leerzeichen ersetzt). Möchte man die Items ohne Leerzeichen darstellen, nutzt man ein `+` um die Items zu trennen.

Eine Liste von Bar-Items kann man sich mit dem Befehl `/bar listitems` anzeigen lassen.

Vor oder nach dem Item können Zeichen eingefügt werden. Diese dürfen nicht alphanumerisch, `-` oder `_` sein. Die Zeichen werden mit der entsprechenden Farbe, für Trennzeichen, dargestellt (Option color_delim).

Beispiel einer Bar mit den Items, "[time],buffer_number+:+buffer_plugin+.+buffer_name,[buffer_last_number]":

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

##### Spacer Item

Ein Item namens `spacer` (Abstandshalter) kann verwendet werden, um Items auszurichten (links, mittig, rechts).

Wenn mindestens ein `spacer` in einer Bar verwendung findet, wird die gesamte Breite der Bar verwendet: Die Abstandshalter werden automatisch mit der gleichen Größe (oder fast) erweitert.+ Falls eine Bar nicht groß genug für alle Elemente ist, werden keine Abstandshalter angezeigt.

Anmerkung | Ein `spacer` Bar-Item kann nur in Bars verwendet werden die die Position `top` oder `bottom` besitzen, sowie eine `horizontal` Ausrichtung haben, sowie eine Größe von `1`.

Beipiel einer Bar mit den Items "[time],spacer,buffer_number+:+buffer_plugin+.+buffer_name,spacer,[buffer_last_number]":

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

##### Force buffer

Eine Besonderheit stellt die Möglichkeit dar, ein Item eines bestimmten Buffers anzuzeigen. Syntax: "@buffer:item" ("buffer" ist der vollständige Name des Buffers und "item" der Name der Bar-Item)

Dies ist für root-Bars sinnvoll, um gezielt ein Item eines bestimmten Buffers anzuzeigen, welcher nicht im aktuellen Fenster oder überhaupt nicht sichtbar ist.

Beispiel: Benutzerliste von bitlbee permanent in einer root-Bar darstellen (die Bar heißt hierbei bitlist und der Name des bitlbee Servers bitlbee):

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

##### Benutzerdefinierte Bar-Items

Benutzerdefinierte Bar-Items können mit dem /item Befehl angelegt werden. Dabei hat jedes neue Element zwei Eigenschaften, die über Konfigurationsoptionen definiert werden:

- `conditions`: evaluierte Bedingung um das Element anzuzeigen. Zum Beispiel um das Element nur in bestimmten Buffern anzuzeigen (falls leer, wird das Element in allen Buffern angezeigt)

- `content`: evaluierter Inhalt des Elements.

In beiden Optionen können die folgenden Variablen verwendet werden:

- `window`: Zeiger auf das Fenster, in dem die Bar angezeigt wird (`NULL` für root-Bars).

- `buffer`: Zeiger auf den Buffer, in dem die Bar angezeigt wird (aktueller Bar für root-Bars.

Beispiele für Bedingungen:

Bedingung | Beschreibung
--- | ---
`${window}` | Wird nur in Fenster-Bars angezeigt
`${buffer.number} == 1` | Wird in allem Buffern angezeigt, wo die Nummer =1 ist
`${buffer.plugin.name} == irc` | Wird in allen IRC Buffern angezeigt
`${type} == channel` | Element wird in den Buffern angezeigt wo die lokale Variable `type` vom Typ `channel` gesetzt ist (Beispiel: alle IRC Kanäle)
`${type} == private` | Element wird in den Buffern angezeigt wo die lokale Variable `type` vom Typ `private` gesetzt ist (Beispiel: alle privaten IRC Buffer)

Anmerkung | Es gibt keine integrierte Möglichkeit, die benutzerdefinierten Elemente zu aktualisieren. Dazu muss die Trigger Erweitertung genutzt werden, beispielsweise über einen oder mehrere Signale die abgefragt werden.

Weitere Informationen und Beispiele finden Sie unter dem Befehl /item.

#### Darstellung innerhalb einer Bar

Es gibt folgende vier Möglichkeiten um Text innerhalb einer Bar darzustellen:

- `horizontal`: die Items werden horizontal, von links nach rechts, dargestellt. Sollten neue Zeilen dargestellt werden, dann werden diese durch ein Leerzeichen von der vorherigen getrennt.

- `vertical`: die Items werden von oben nach unten dargestellt. Neue Zeilen werden neben der vorherigen dargestellt.

- `columns_horizontal`: Item werden in Spalten dargestellt, wobei der Text linksbündig ausgerichtet ist. Das erste Item wird in der linken oberen Ecke angezeigt und das zweite Item ist in der selben Zeile, auf der rechten Seite.

- `columns_vertical`: Item werden in Spalten dargestellt, wobei der Text linksbündig ausgerichtet ist. Das erste Item wird in der linken oben Ecke angezeigt und das zweite Item wird eine Zeile darunter angezeigt.

Die Standard-Bars title, status und input nutzen eine horizontal Darstellung und die Standard-Bar nicklist nutzt eine vertical Darstellung.

Einige Beispiele, wie die Bar nicklist dargestellt werden kann:

    ┌───────────────────────────────────────────────────────────────────────┐
    │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 ▲

#### Bedingungen

Der Inhalt der Option conditions ist evaluiert um festzulegen ob die entsprechende Bar angezeigt werden soll oder nicht.

Folgende Zeichenketten sind möglich:

- active : das Fenster muss das aktive Fenster sein

- inactive: das Fenster muss ein inaktives Fenster sein

- nicklist: der Buffer der in einem Fenster dargestellt wird, muss eine Benutzerliste anzeigen.

- ein Ausdruck: wird als boolescher Wert ausgewertet (siehe Befehl /eval)

Für den Ausdruck sind folgende Variablen verfügbar:

- `${active}` : wahr, wenn Fenster aktiv ist

- `${inactive}`: wahr, wenn Fenster inaktiv ist

- `${nicklist}`: wahr, wenn der Buffer im Fenster eine Nicklist anzeigt.

Folgende Zeiger sind verfügbar:

- `${window}`: das Fenster in dem der Zustand ausgewertet wird

- `${buffer}`: der Buffer eines Fensters in dem der Zustand ausgewertet wird

Beispiel für die Anzeige der Nicklist-Bar in allen Buffern mit einer Benutzerliste, allerdings nur dann, wenn die Breite des Terminals größer >100 ist:

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

Die selben Bedingungen wie oben, aber diesmal wird die Benutzerliste immer für den Buffer &bitlbee angezeit (auch dann, wenn das Terminal kleiner ist, als der angegebene Wert):

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

### 7.10. sensible Daten

#### Archivierung

WeeChat kann Passwörter oder sensible Daten verschlüsseln und in der Datei sec.conf speichern.

Diese Konfigurationsdatei wird vor allen anderen Dateien geladen und die gespeicherten Daten können in verschiedenen WeeChat Optionen bzw. Erweiterungen und Skripten genutzt werden.

Es kann eine Passphrase genutzt werden um die Daten in sec.conf zu verschlüsseln. Dies ist nicht obligatorisch wird aber dringend empfohlen, da ansonsten die Daten in Klartext gesichert werden.

    /secure passphrase Dies ist meine Passphrase

##### Passphrase beim Programmstart

Wenn eine Passphrase festgelegt ist, werden Sie von WeeChat aufgefordert, diese beim Start einzugeben (aber nicht bei `/upgrade`).

Wenn Sie einen Passwortmanager verwenden, können Sie ein externes Programm ausführen, um die Passphrase zu lesen, anstatt sie beim Start von WeeChat manuell eingeben zu müssen. Zum Beispiel mit Passwortspeicher (Befehl `pass`):

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

Das Programm fordert Sie möglicherweise auf, Ihren GPG-Schlüssel zu entsperren oder eine andere Passphrase einzugeben, um das Passwort lesen zu können. WeeChat wartet auf das Ende des Befehls, um die Passphrase in der Standardausgabe auszuwerten (die Passphrase muss in der ersten Zeile, ohne zusätzliches Zeichen, stehen).

Wenn die Ausgabe keine Passphrase enthält oder falsch ist, werden Sie von WeeChat aufgefordert, diese manuell einzugeben.

##### Verschlüsselung

Die Daten werden in drei Schritten verschlüsselt:

1. erstellt einen Schlüssel anhand der Passphrase (optional mit Salt).

2. errechnet einen Hash über die Daten die verschlüsselt werden soll.

3. verschlüsselt den Hash + Daten (Ausgabe ist: Salt + Hash/Daten verschlüsselt)

Anmerkung | Der Cipher Block Modus ist CFB.

Das Ergebnis wird als hexadezimale Zeichenkette in sec.conf gesichert. Zum Beispiel:

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

##### Entschlüsselung

Die Entschlüsselung findet in drei Schritten statt:

1. erstellt einen Schlüssel mittels Salt und Passphrase.

2. entschlüsselt Hash + Daten.

3. überprüft ob der entschlüsselte Hash mit dem Hash der entschlüsselten Daten übereinstimmt.

#### Umgang mit sensiblen Daten

Um sensible Daten zu schützen wird der Befehl `/secure set` verwendet. Es folgt ein Beispiel wie man das Passwort für den IRC Server libera schützt:

    /secure set libera meinPasswort

Um einen Überblick über seine schutzwürdigen Daten zu erhalten kann ein gesonderter Buffer geöffnet werden. In diesem Buffer kann man sich mittels `Alt`+`v` seine Passwörter anzeigen lassen. Um den Buffer zu öffnen nutzt man:

    /secure

Verschlüsselte Daten können in einigen Optionen verwendet werden, die z.B. Passwörter beinhalten. Dies dient dazu Passwörter nicht im Klartext als Wert einer Option zu sichern. Dazu wird folgendes Format, anstelle des Passwortes, verwendet: "${sec.data.xxx}". "xxx" ist hierbei der Name den man dem Passwort zugeordnet hat (siehe oben, mittels `/secure set xxx …​`).
Für eine vollständige Liste der unterstützen Optionen, siehe den Befehl /secure.

Um z.B. das oben eingestellte libera Passwort für eine SASL Authentifizierung zu nutzen:

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

### 7.11. Kurzbefehle

Die Alias-Erweiterung erlaubt es, für Befehle, sogenannte Kurzbefehle (einen Alias) zu erstellen.

Einige Aliase existieren standardmäßig, deren Namen sind in Großbuchstaben erstellt (um sie von Standardbefehlen zu unterscheiden); bei Befehlen wird in WeeChat nicht zwischen Groß- und Kleinschreinung unterschieden, der Befehl `/close` führt den Alias `/CLOSE` aus.

Liste der standardmäßigen Aliase:

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` | -

#### Befehle

- `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

#### Optionen

Sektionen in Datei alias.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`cmd` | `/alias /set alias.cmd.*` | Befehle für Alias.
`completion` | `/alias /set alias.completion.*` | Vervollständigung für Alias.

### 7.12. Befehle und Optionen

#### WeeChat Befehle

- `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>

           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)

    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.5.2
      /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!

- `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]

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

    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

#### Optionen für schutzwürdige Daten

Sektionen in Datei sec.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`crypt` | `/set sec.crypt.*` | Optionen für Verschlüsselung.
`data` | `/secure` | geschützte Daten.

Optionen:

- 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`

#### WeeChat Optionen

Sektion in Datei weechat.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`debug` | `/debug set /set weechat.debug.*` | Debug level, für Core und Erweitertungen (Optionen können in Sektion hinzugefügt/entfernt werden).
`startup` | `/set weechat.startup.*` | Optionen die nach dem Programmstart ausgeführt werden.
`look` | `/set weechat.look.*` | Erscheinungsbild.
`palette` | `/color alias /set weechat.palette.*` | Alternativnamen für Farben (Optionen können in Sektion hinzugefügt/entfernt werden).
`color` | `/set weechat.color.*` | Farben.
`completion` | `/set weechat.completion.*` | Optionen für Vervollständigung.
`history` | `/set weechat.history.*` | Optionen für Befehlsverlauf (Befehle und Buffer).
`proxy` | `/proxy /set weechat.proxy.*` | Proxy Optionen.
`network` | `/set weechat.network.*` | Netzwerk/TLS Optionen.
`plugin` | `/set weechat.plugin.*` | Optionen für Erweiterungen.
`signal` | `/set weechat.signal.*` | Optionen für Signale.
`bar` | `/bar /set weechat.bar.*` | Optionen für die Bars.
`layout` | `/layout` | Layouts.
`buffer` | `/buffer setauto` | Eigenschaften, die beim Öffnen des Buffers automatisch angewendet werden.
`notify` | `/buffer notify` | Benachrichtigungsstufe für Buffer (Optionen können in Sektion hinzugefügt/entfernt werden).
`filter` | `/filter` | Filter.
`key` | `/key` | Tastenbefehle in default context.
`key_search` | `/key` | Tastenbefehle in search context.
`key_cursor` | `/key` | Tastenbefehle in cursor context.
`key_mouse` | `/key` | Tastenbefehle in mouse context.

Optionen:

- 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.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-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: "", "(?-i)"

  - 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_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.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

Die IRC Erweiterung ist konzipiert um mittels dem IRC Protokoll mit anderen Menschen zu chatten.

Die Erweiterung ist Multi-Server fähig und verfügt über alle IRC Befehle, einschließlich DCC Chat und Datenübertragung (via xfer Erweiterung, siehe Xfer Erweiterung).

### 8.1. Kommandozeilen Befehle

Es ist möglich eine oder mehrere URL von IRC Servern zu übergeben:

    irc[6][s]://[nick[:password]@]irc.example.org[:port][/channel][,channel[...]]

Beispiel: Anmelden beim Server irc.libera.chat mit dem Nick alice und betreten der Kanäle #weechat und #weechat-fr (Standardport (6667) wird genutzt):

    weechat irc://alice@irc.libera.chat/#weechat,#weechat-fr

### 8.2. Server

#### Server hinzufügen

Standardmäßig sind keine Server angelegt. Es gibt keine Begrenzung für die Anzahl von Servern. Server können mit dem Befehl /server angelegt werden.

Zum Beispiel für eine Verbindung zu libera.chat ↗:

    /server add libera irc.libera.chat

Anmerkung | Der Standardport ist 6697 und TLS (verschlüsselter Datenverkehr) ist aktiviert.

Um WeeChat, beim Programmstart, direkt mit einem Server zu verbinden:

    /set irc.server.libera.autoconnect on

Zur Authentifizierung wird empfohlen, SASL (sofern dies von dem Server unterstützt wird) zu verwenden, wobei das Passwort als gesicherte Daten gespeichert wird (siehe auch das Kapitel über SASL authentication):

    /set irc.server.libera.sasl_username "alice"
    /secure set libera xxxxxxx
    /set irc.server.libera.sasl_password "${sec.data.libera}"

Wenn SASL nicht unterstützt wird, können Sie einen Befehl verwenden, um eine Nachricht an nickserv zu senden, um sich zu authentifizieren:

    /set irc.server.libera.command "/msg nickserv identify ${sec.data.libera}"

Anmerkung | Indem Sie eine Nachricht an nickserv senden, können Sie sich erst nach dem Beitritt zu Kanälen authentifizieren. Dies kann bei Kanälen, die eine Authentifizierung benötigen, zu Problemen führen. In diesem Fall können Sie eine Befehlsverzögerung einstellen: `/set irc.server.libera.command_delay 5`.

#### Server-Optionen

Serveroptinen haben folgenden Aufbau `irc.server.<server>.<option>` hierbei ist `<server>` der interne Name des Server und `<option>` ist der Name der Option.
Der Wert einer Serveroption wird von `irc.server_default.xxx` geerbt wenn die Serveroption den Sonderwert `null` hat.

Wenn Sie beispielsweise den libera-Server mit den obigen Befehlen erstellt haben, sehen Sie dies mit dem Befehl `/fset libera`:

    irc.server.libera.addresses             Zeichenkette  "irc.libera.chat"
    irc.server.libera.anti_flood            integer       null -> 2000
    irc.server.libera.autoconnect           boolesch      on
    irc.server.libera.autojoin              Zeichenkette  null -> ""
    irc.server.libera.autojoin_delay        integer       null -> 0
    irc.server.libera.autojoin_dynamic      boolesch      null -> off
    irc.server.libera.autoreconnect         boolesch      null -> on
    irc.server.libera.autoreconnect_delay   integer       null -> 10
    irc.server.libera.autorejoin            boolesch      null -> off
    irc.server.libera.autorejoin_delay      integer       null -> 30
    irc.server.libera.away_check            integer       null -> 0
    irc.server.libera.away_check_max_nicks  integer       null -> 25
    irc.server.libera.capabilities          Zeichenkette  null -> "*"
    irc.server.libera.charset_message       Aufzählung    null -> message
    irc.server.libera.command               Zeichenkette  null -> ""
    irc.server.libera.command_delay         integer       null -> 0
    irc.server.libera.connection_timeout    integer       null -> 60
    irc.server.libera.default_chantypes     Zeichenkette  null -> "#&"
    irc.server.libera.ipv6                  Aufzählung    null -> auto
    irc.server.libera.local_hostname        Zeichenkette  null -> ""
    irc.server.libera.msg_kick              Zeichenkette  null -> ""
    irc.server.libera.msg_part              Zeichenkette  null -> "WeeChat ${info:version}"
    irc.server.libera.msg_quit              Zeichenkette  null -> "WeeChat ${info:version}"
    irc.server.libera.nicks                 Zeichenkette  null -> "${username},${username}2,${username}3,${username}4,${username}5"
    irc.server.libera.nicks_alternate       boolesch      null -> on
    irc.server.libera.notify                Zeichenkette  null -> ""
    irc.server.libera.password              Zeichenkette  null -> ""
    irc.server.libera.proxy                 Zeichenkette  null -> ""
    irc.server.libera.realname              Zeichenkette  null -> ""
    irc.server.libera.registered_mode       Zeichenkette  null -> "r"
    irc.server.libera.sasl_fail             Aufzählung    null -> reconnect
    irc.server.libera.sasl_key              Zeichenkette  null -> ""
    irc.server.libera.sasl_mechanism        Aufzählung    null -> plain
    irc.server.libera.sasl_password         Zeichenkette  "${sec.data.libera}"
    irc.server.libera.sasl_timeout          integer       null -> 15
    irc.server.libera.sasl_username         Zeichenkette  "alice"
    irc.server.libera.split_msg_max_length  integer       null -> 512
    irc.server.libera.tls                   boolesch      null -> on
    irc.server.libera.tls_cert              Zeichenkette  null -> ""
    irc.server.libera.tls_dhkey_size        integer       null -> 2048
    irc.server.libera.tls_fingerprint       Zeichenkette  null -> ""
    irc.server.libera.tls_password          Zeichenkette  null -> ""
    irc.server.libera.tls_priorities        Zeichenkette  null -> "NORMAL"
    irc.server.libera.tls_verify            boolesch      null -> on
    irc.server.libera.usermode              Zeichenkette  null -> ""
    irc.server.libera.username              Zeichenkette  null -> "${username}"

Wenn Sie beispielsweise automatisch eine Verbindung zu allen von Ihnen erstellten Servern herstellen möchten, ohne dies für jeden Server einzeln einstellen zu müssen, können Sie Folgendes tun:

    /set irc.server_default.autoconnect on

Und dann können Sie die Serveroption zurücksetzen, sodass sie den standardmäßig geerbten Wert verwendet, der jetzt `on` anstelle des Standardwerts `off` ist:

    /unset irc.server.libera.autoconnect

#### TLS Zertifikate

Wenn eine Verbindung mittels TLS zu einem IRC Server hergestellt wird dann überprüft WeeChat immer ob dieser Verbindung sicher ist.

Einige Optionen dienen dazu eine TLS Verbindung zu nutzen:

weechat.network.gnutls_ca_system

  lädt beim Start die standardmäßigen vertrauenswürdigen Zertifizierungsstellen des Systems

weechat.network.gnutls_ca_user

  zusätzliche Datei (en) von Zertifizierungsstellen

irc.server.xxx.tls_cert

  Datei mit den TLS Zertifikaten die genutzt werden um automatisch Ihren Nick zu identifizieren (zum Beispiel CertFP auf oftc, siehe unten)

irc.server.xxx.tls_dhkey_size

  Größe des Schlüssels der genutzt werden soll beim Schlüsseltausch mittels der Diffie-Hellman Methode (Standardwert: 2048)

irc.server.xxx.tls_verify

  überprüft ob der TLS Verbindung uneingeschränkt vertraut werden kann (Standardwert: AN)

Anmerkung | Die Option "tls_verify" ist Vorgabe mäßig immer eingeschaltet. Das gewährleistet dass die Verifizierung sehr streng genommen wird und dadurch vielleicht versagt. Auch wenn die Verbindung mit einer vorherigen Version (<0.3.1) funktioniert hat.

##### erstes Beispiel: Verbindung zu oftc und Überprüfung der Zertifikate

- Importieren Sie die Zertifikate in einer Shell:

    mkdir -p ~/.config/weechat/tls
    wget -O ~/.config/weechat/tls/CAs.pem https://www.spi-inc.org/ca/spi-cacert.crt

Anmerkung | Sie müssen `~/.config/weechat` durch den Pfad zu Ihrem WeeChat-Konfigurationsverzeichnis ersetzen, das auch beispielsweise `~/.weechat` sein kann.

Anmerkung | Es ist möglich mehrere Zertifikate in der Datei CAs.pem zu verwenden.

- In WeeChat, sofern der Server "oftc" schon hinzufügt wurde:

    /connect oftc

##### zweites Beispiel: Verbindung zu oftc mittels CertFP

- Erstellen Sie ein Zertifikat in der 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

Anmerkung | Sie müssen `~/.config/weechat` durch den Pfad zu Ihrem WeeChat-Konfigurationsverzeichnis ersetzen, das auch beispielsweise `~/.weechat` sein kann.

- In WeeChat, sofern der Server "oftc" schon hinzufügt wurde:

    /set irc.server.oftc.tls_cert "${weechat_config_dir}/tls/nick.pem"
    /connect oftc
    /msg nickserv cert add

Weitere Informationen finden Sie unter this page ↗.

#### SASL Authentifizierung

WeeChat unterstützt eine SASL Authentifikation, mittels verschiedener Mechanismen:

- plain: Passwort liegt in Klarschrift vor (Standard)

- scram-sha-1: SCRAM mit SHA-1 Digest-Algorithmus

- scram-sha-256: SCRAM mit SHA-256 Digest-Algorithmus

- scram-sha-512: SCRAM mit SHA-512 Digest-Algorithmus

- ecdsa-nist256p-challenge: Abgleich von öffentlichem/privatem Schlüssel

- external: TLS Zertifikat welches auf Client Seite vorliegt

Optionen für Server sind:

- sasl_mechanism: Mechanismus welcher genutzt werden soll (siehe oben)

- sasl_timeout: Zeitüberschreitung für Authentifizierung (in Sekunden)

- sasl_fail: auszuführende Aktion falls die SASL Authentifizierung fehlschlägt

- sasl_username: Username (Nickname)

- sasl_password: Passwort

- sasl_key: Datei mit privatem ECC Schlüssel (für den ecdsa-nist256p-challenge Mechanismus)

##### SASL ECDSA-NIST256P-CHALLENGE

Es muss ein privater Schlüssel erstellt werden um sich mittels des ECDSA-NIST256P-CHALLENGE Mechanismus authentifizieren zu können (es wird dadurch kein Passwort während des Verbindungsaufbaus benötigt).

Ein Schlüssel kann mit folgendem Befehl erzeugt werden:

    openssl ecparam -genkey -name prime256v1 -out ~/.config/weechat/ecdsa.pem

Anmerkung | Sie müssen `~/.config/weechat` durch den Pfad zu Ihrem WeeChat-Konfigurationsverzeichnis ersetzen, das auch beispielsweise `~/.weechat` sein kann.

Um den öffentlichen Schlüssel zu erhalten (base64 enkodiert) muss folgender Befehl ausgeführt werden:

    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

Nun Verbindung zum Server herstellen, identifizieren (z.B. mittels "nickserv identify") und den öffentlichen Schlüssel für den eigenen Zugang festlegen (der base64 Schlüssel im Beispiel muss durch den eigenen öffentlichen Schlüssel ersetzt werden:

    /connect libera
    /msg nickserv identify your_password
    /msg nickserv set pubkey Av8k1FOGetUDq7sPMBfufSIZ5c2I/QYWgiwHtNXkVe/q

Konfiguration der SASL Optionen des Servers:

    /set irc.server.libera.sasl_mechanism ecdsa-nist256p-challenge
    /set irc.server.libera.sasl_username "your_nickname"
    /set irc.server.libera.sasl_key "${weechat_config_dir}/ecdsa.pem"

Erneut mit dem Server verbinden:

    /reconnect libera

#### Verbindung zum Server

Um sich mit einem Server zu Verbinden, nutzt man den /connect Befehl:

    /connect libera

Um die Verbindung zu trennen:

    /disconnect libera

Oder nur folgenden Befehl, wenn Sie sich in einem Buffer befinden, der zu einem libera Server gehört (Server, Kanal, privat):

    /disconnect

Wenn Sie gleichzeitig mit mehreren Servern verbunden sind, werden die Serverbuffer standardmäßig zusammengeführt. Sie können zwischen zusammengefügten Buffern mit der `Ctrl`+`x` Taste wechseln.

Es ist möglich, die automatische Zusammenführung von Serverbuffern zu deaktivieren, um unabhängige Serverbuffer zu haben:

    /set irc.look.server_buffer independent

#### Connect with Tor and SASL

Einige Server unterstützen eine Verbindungen mittels Tor ↗, dies ist ein Netzwerk mit virtueller Tunneln, durch welchen Personen und Gruppen ihre Privatsphäre und Sicherheit im Internet verbessern können.

Im ersten Schritt muss Tor installiert werden. Für Debian (und Derivate):

    sudo apt-get install tor

In WeeChat muss nun ein socks5-Proxy für den Tor Service erstellt werden (Hostname/IP und Port müssen dabei an die eigene Tor Konfiguration angepasst werden):

    /proxy add tor socks5 127.0.0.1 9050

Fügen Sie nun einen neuen Server hinzu (ersetzen Sie dabei den Servernamen "irc-tor" und die Adresse durch gültige Werte):

    /server add irc-tor hier.ist.die.addresse.onion

Nun einen Proxy für Tor anlegen:

    /set irc.server.irc-tor.proxy "tor"

SASL Authentifikation mit ECDSA-NIST256P-CHALLENGE nutzen (siehe Kapitel SASL ECDSA-NIST256P-CHALLENGE um einen privaten Schlüssel zu generieren):

    /set irc.server.irc-tor.sasl_mechanism ecdsa-nist256p-challenge
    /set irc.server.irc-tor.sasl_username "dein_nickname"
    /set irc.server.irc-tor.sasl_key "${weechat_config_dir}/ecdsa.pem"

Abschließend, stellen Sie eine Verbindung zum Server her:

    /connect irc-tor

### 8.3. IRCv3 support

WeeChat unterstützt folgende IRCv3 extensions ↗:

- 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

Standardmäßig werden alle vom Server und WeeChat unterstützten Funktionen automatisch aktiviert (siehe Option irc.server_default.capabilities).

Mehrere Tabellen mit Auflistung verschiedener IRC-Clients, einschließlich WeeChat, sind verfügbar auf this page ↗.

#### account-notify

Spezifikation: account-notify ↗

Diese Funktion ermöglicht es dem Server, Nachrichten zu senden, wenn Benutzer sich auf dem Server identifizieren oder diese zurück ziehen.
WeeChat zeigt solche Nachrichten an, wenn die Option irc.look.display_account_message aktiviert ist (Standardwert).

Beispiele:

    -- alice wurde identifiziert als Alice01

    -- alice hat sich nicht identifiziert

#### account-tag

Spezifikation: account-tag ↗

Diese Fähigkeit ermöglicht es dem Server, einen Account als Nachrichten-Tag an Befehle zu hängen, die an den Client gesendet werden.
WeeChat analysiert dieses Tag und speichert es in der Nachricht, aber es wird nicht verwendet oder angezeigt. Mit dem /filter Befehl kann man diese Nachrichten explizit filtern, in dem die Accounts nutzt.

Beispiel einer empfangenen IRC-Rohnachricht:

    @account=Alice01 :user@example.com PRIVMSG #test :Hello!

Nachricht wie sie im Kanal angezeigt wird:

    <alice> Hello!

Nachricht, mit Tags:

    <alice> Hello! [irc_privmsg,irc_tag_account_Alice01,notify_message,prefix_nick_lightcyan,nick_alice,host_user@example.com,log1]

#### away-notify

Spezifikation: away-notify ↗

Diese Funktion ermöglicht es dem Server, Abwesenheits-Benachrichtigungen für Benutzer zu versenden, die die selben Kanälen besuchen, wie Sie.

Wenn der Abwesenheitsstatus für einen Benutzer geändert wird (abwesend oder zurück), wird dies mit einer bestimmten Farbe in der Nickliste dargestellt. Siehe folgende Optionen:

- irc.server_default.away_check

- irc.server_default.away_check_max_nicks

- weechat.look.item_away_message

#### batch

Spezifikation: batch ↗

Diese Funktion ermöglicht es dem Server, Batch-Ereignisse (Gruppe von mehreren Nachrichten, die zusammengehören) zu senden.

Im Moment speichert WeeChat nur Nachrichten, die in einem Stapel empfangen werden, und verarbeitet sie wie gewohnt später, wenn der Stapel endet.

#### cap-notify

Spezifikation: cap-notify ↗

Diese Fähigkeit ermöglicht es dem Server, neue oder entfernte Fähigkeiten anzubieten, über die der Server verfügt (mittels der Befehle `CAP NEW` und `CAP DEL`).

Beispiele:

    -- irc: Clientfähigkeit, nicht verfügbar: sasl

    -- irc: Clientfähigkeit, entfernt: sasl

#### chghost

Spezifikation: chghost ↗

Diese Funktion ermöglicht es dem Server, Nachrichten zu senden, wenn Benutzer den Namen oder den Host ändern.
Wenn die Option irc.look.smart_filter_chghost aktiviert ist (Standardwert), werden die Host-Änderungen automatisch ausgeblendet, falls der Nick mehrere Minuten nicht aktiv gewesen ist.
Die Farbe der Change-Host-Meldung wird durch die Option irc.color.message_chghost kontrolliert.

Beispiele:

    -- alice (user@example.com) hat den Host nach test.com geändert

#### draft/multiline

Spezifikation: multiline ↗

Diese Funktion ermöglicht es dem Client und dem Server, Nachrichten über mehrere Zeilen zu senden. Es wird dazu die Fähigkeit batch genutzt, die ebenfalls aktiviert sein muss.

Es gibt Beschränkungen hinsichtlich der Anzahl der Bytes oder der Anzahl der Zeilen in einer mehrzeiligen Nachricht die in der vom Server gesendeten Fähigkeit angegeben sind, zum Beispiel:

    CAP alice LS * :draft/multiline=max-bytes=4096,max-lines=24

Dies legt eine Grenze von 4096 Bytes und 24 Zeilen für einen mehrzeiligen Batch-Inhalt fest.

Wenn die Grenzwerte nicht vom Server vorgegeben sind, sind die Standardwerte in WeeChat:

- max Bytes: 4096

- max Zeilen: 24

Nur Standardnachrichten und solche, die von /notice Befehl gesendet werden können mehrzeilig sein.
ACTION CTCP-Nachrichten, die mit dem Befehl /me gesendet werden, sind nicht betroffen durch diese Fähigkeit. Das bedeutet, dass mehrzeilige Aktionen als Mehrfachaktionen gesendet werden.

Warnung | Da es sich bei der Spezifikation um einen „Entwurf“ handelt, kann sich diese Spezifikation ändern und die Mehrzeilenunterstützung in WeeChat abbrechen. Die Funktion wird automatisch aktiviert, wenn der Server sie unterstützt und kann mit folgendem Befehl deaktiviert werden: `/set irc.server_default.capabilities "*,!draft/multiline"`. Wenn die Funktion deaktiviert ist, wird eine mehrzeilige Nachricht einfach in mehreren Nachrichten gesendet, als ob sie die Nachrichten nacheinander an den Server gesendet wurden.

Beispiel einer IRC Nutzer Nachricht, die über zwei Zeilen geht (`Dies ist ein Test` / `über zwei Zeilen`), und im Kanal #test gesendet wird:

    BATCH +i8Je7M7gquddoyC9 draft/multiline #test
    @batch=i8Je7M7gquddoyC9 PRIVMSG #test :Dies ist ein Test
    @batch=i8Je7M7gquddoyC9 PRIVMSG #test :über zwei Zeilen
    BATCH -i8Je7M7gquddoyC9

Eine gesendete Nachricht wie sie in WeeChat dargestellt wird:

    19:01:45 alice | this is a test
                   | on two lines

#### echo-message

Spezifikation: echo-message ↗

Diese Funktion zwingt den Server, PRIVMSG-, NOTICE- und TAGMSG-Nachrichten zurück an WeeChat zu senden.

WeeChat zeigt nur die empfangene Nachricht und nicht die gesendete Nachricht an, also eine Verzögerung zwischen dem Senden und der Darstellung ist erkennbar. Wenn die Nachricht dargestellt wird, bedeutet dies, dass die Nachricht ordnungsgemäß vom Server empfangen und an andere Clients weitergeleitet wurde, die ebenfalls mit dem Server verbunden sind.

#### extended-join

Spezifikation: extended-join ↗

Diese Funktion ermöglicht es dem Server, sowohl Account und den Realnamen des Users zu senden, wenn diese einen Kanal betreten.
WeeChat zeigt diese zusätzlichen Informationen in Join-Nachrichten an, wenn die Option irc.look.display_extended_join aktiviert ist (Standardwert).

Beispiele:

    --> john [John01] (John Doe) (~user@example.com) hat den Kanal #test betreten

#### invite-notify

Spezifikation: invite-notify ↗

Diese Funktion ermöglicht es dem Server, Einladungsnachrichten zu senden, wenn Benutzer zu Kanälen eingeladen werden.

Beispiele:

    -- alice hat bob in den Kanal #test eingeladen

#### message-tags

Spezifikation: message-tags ↗

Diese Funktion ermöglicht das Hinzufügen von Metadaten zu Nachrichten.
Diese Tags können mit dem Befehl `/debug tags` angezeigt werden.

Um diese Funktion zu verwenden, muss sie aktiviert werden: Schreibbenachrichtigung.

#### monitor

Spezifikation: monitor ↗

Diese Funktion ermöglicht es dem Server, Benachrichtigungen zu senden, wenn Clients Online/Offline gehen.
WeeChat verwendet diese Erweiterung automatisch, sofern verfügbar, wenn der /notify Befehl genutzt wird.

#### multi-prefix

Spezifikation: multi-prefix ↗

Diese Fähigkeit ermöglicht es dem Server, alle Benutzermodi auf einmal zu senden, wenn die Befehle /names und /whois genutzt werden.

Anmerkung | Momentan zeigt WeeChat nicht alle Präfixe in der Ausgabe von `/names` an, selbst wenn diese empfangen und intern ordnungsgemäß verarbeitet werden.

Beispiele: Ausgabe von `/whois alice`:

    -- [alice] @%+#test

#### SASL

Spezifikation: SASL 3.2 ↗

Siehe das entsprechende Kapitel SASL authentication.

#### server-time

Spezifikation: server-time ↗

Diese Fähigkeit ermöglicht es dem Server, die Zeit für Nachrichten als Nachrichten-Tag zu senden.
Wenn die Zeit in einer Nachricht empfangen wird, verwendet WeeChat diese, um die Nachricht anzuzeigen (diese Nachricht kann dann mit einem zurückliegenden Datum angezeigt werden).

Der IRC-Proxy der Relay-Erweiterung unterstützt diese Funktion, deshalb sollte jeder IRC-Client der mit dem Relay verbunden ist, diese Funktion aktivieren, um die korrekte Uhrzeit der Nachricht im Verlaufsspeicher anzuzeigen.

#### setname

Spezifikation: setname ↗

Mit dieser Funktion können Sie Ihren richtigen Namen ändern, indem Sie den /setname Befehl nutzen.

#### typing

Spezifikation: typing ↗

Siehe das entsprechende Kapitel Schreibbenachrichtigung.

#### userhost-in-names

Spezifikation: userhost-in-names ↗

Diese Funktion ermöglicht es dem Server, Hostnamen bei /names zu senden.

Anmerkung | WeeChat zeigt keine Hostnamen in der Aushabe des `/names` Befehls an.

Beispiel für unverarbeitete IRC-Nachrichten, die ohne die Fähigkeit empfangen wurden:

    :irc.server 353 alice = #test :@alice bob +carol

Beispiel für unverarbeitete IRC-Nachrichten, die mit der Funktion empfangen wurden:

    :irc.server 353 alice = #test :@alice!user1@host1 bob!user2@host2 +carol!user3@host3

#### WHOX

Spezifikation: WHOX ↗

Mit dieser Funktion können Sie zusätzliche Felder in der WHO-Antwort anfordern (mit dem Befehl /who).
WeeChat zeigt alle empfangenen Zusatzinformationen in der WHO-Ausgabe an.

### 8.4. Kanäle

Kanäle können mit dem Befehl /join betreten werden:

    /join #channel

Verbindung zum Kanal trennen (der Buffer bleibt geöffnet):

    /part [quit message]

Kanäle die man betreten hat, werden nicht gesichert. Um diese Kanäle automatisch bei einer Verbindung zum Server zu betreten, müssen diese Kanäle in der `autojoin` Option des Servers eingetragen werden:

    /set irc.server.libera.autojoin "#weechat,#weechat-de"

Anmerkung | Es gibt Skripte, die dabei helfen das zu automatisieren, siehe `/script search autojoin`.

Geben Sie acht, Leerzeichen werden verwendet um die Liste der Kanäle von den Schlüsseln zu trennen. Ein Beispiel, wenn `#channel1` einen Schlüssel erfordert, aber nicht `#channel2`:

    /set irc.server.libera.autojoin "#channel1,#channel2 key1"

Hilfe zum Format findet man unter Option irc.server_default.autojoin.

### 8.5. private Nachrichten

Sie können eine private Nachricht mit dem Befehl /query senden, was einen separaten Buffer, für die Konversation, öffnet:

    /query bob hallo, wie geht es Dir?

Ohne Angabe von Argumenten öffnet der Befehl nur den Buffer (oder wählt ihn aus, wenn er bereits geöffnet ist):

    /query bob

Um einen privaten Buffer zu schließen, führt man diesen Befehl in dem privaten Buffer aus:

    /close

### 8.6. Intelligenter Filter

Es steht ein intelligenter Filter zur Verfügung, um einige Nachrichten zu filtern, falls eine Person in einem Kanal, eine vorgegebene Zeit, nicht geschrieben hat:

- join: Person betritt den Kanal

- part: Person verlässt den Kanal

- quit: Person meldet sich vom Server ab

- account: Person ändert seinen Account

- chghost: Persin ändert Name oder Host

- mode: Modus des Kanals wurde geändert

- nick: Person hat seinen Nick geändert

- setname: Person hat seinen Realname geändert

Der intelligente Filterung ist standardmäßig aktiviert, es muss jedoch ein Filter hinzugefügt werden, damit die Zeilen im Buffer unterdrückt werden. Zum Beispiel:

    /filter add irc_smart * irc_smart_filter *

Dabei ist es möglich, einen Filter für nur einen Kanal oder für mehrere Kanäle zu erstellen, die mit dem selben Namen beginnen (siehe den Befehl /filter):

    /filter add irc_smart_weechat irc.libera.#weechat* irc_smart_filter *

Um eine längere Verzögerung (in Minuten) einzurichten:

    /set irc.look.smart_filter_delay 10

Falls jemand in den letzten 10 Minuten nichts geschrieben hat, werden seine join/part/quit Nachrichten standardmäßig in dem Kanal ausgeblendet. Um diese trotzdem angezeigt zu bekommen, muss man die Taste `Alt`+`=` (Filter umschalten) drücken.

### 8.7. CTCP Antworten

Sie haben die Möglichkeit CTCP Antworten anzupassen oder aber bestimmte CTCP Anfragen zu sperren (es wird nicht darauf geantwortet).

Beispiel: Um eine Antwort auf die CTCP Anfrage "VERSION" anzupassen nutzen Sie folgenden Befehl:

    /set irc.ctcp.version "I'm running WeeChat ${version}, it rocks!"

Anmerkung | Der Name von CTCP muss in Kleinbuchstaben geschrieben werden. Das bedeutet, dass die Option irc.ctcp.VERSION nicht funktioniert.

Wenn Sie die Anfrage CTCP "VERSION" blockieren möchten (es wird nicht darauf geantwortet) dann löschen Sie einfach den Rückgabe-String:

    /set irc.ctcp.version ""

Selbst bisher unbekannte CTCP Anfragen können beantwortet werden. Nehmen wir zum Beispiel die Anfrage CTCP "BLABLA":

    /set irc.ctcp.blabla "Dies ist meine Antwort auf CTCP BLABLA"

Auch kann man CTCP Antworten für jeden einzelnen Server anpassen. Dazu muss man lediglich den internen Servernamen vor die CTCP Anfrage setzen:

    /set irc.ctcp.libera.version "WeeChat ${version} (for libera)"

Sollen die CTCP Antworten wieder auf die Standardeinstellungen zurück gesetzt werden dann müssen Sie lediglich die Option löschen:

    /unset irc.ctcp.version

Die CTCP Antworten sind evaluiert (siehe Befehl /eval) und die folgenden zusätzlichen Variablen sind verfügbar:

Variable | Beschreibung | Wert/Beispiel
--- | --- | ---
`${clientinfo}` | Liste der CTCP Antworten | `ACTION DCC CLIENTINFO PING SOURCE TIME VERSION`
`${version}` | WeeChat Version | `4.1.0-dev`
`${versiongit}` | WeeChat Version + Git version (1) | `4.1.0-dev (git: v4.0.0-51-g8f98b922a)`
`${git}` | Git Version (1) | `v4.0.0-51-g8f98b922a`
`${compilation}` | Datum der Kompilierung | `Jul 8 2023 20:14:23`
`${osinfo}` | Info über das genutzte OS | `Linux 5.10.0-23-amd64 / x86_64`
`${site}` | WeeChat Seite | `https://weechat.org/`
`${download}` | WeeChat, Download Seite | `https://weechat.org/download/`
`${time}` | Aktuelle Uhrzeit/Datum | `Sat, 08 Jul 2023 21:11:19 +0200`
`${username}` | Username beim IRC Server | `Name`
`${realname}` | Realname beim IRC Server | `John Doe`

Anmerkung | (1) Die Git Version wird durch die Ausgabe des Befehls `git describe` ermittelt. Dies erfordert, dass WeeChat aus dem Git Repository heraus kompiliert wurde und das Git überhaupt installiert ist.

Die Standard-CTCP-Antworten sind:

CTCP | Antwortformat | Beispiel
--- | --- | ---
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. Zielbuffer für IRC Nachrichten

Sie können einen Zielbuffer einstellen in welchem IRC Nachrichten dargestellt werden sollen. Dazu dienen die Optionen `irc.msgbuffer.*`.

Für einige IRC Nachrichten (siehe unten) können zusätzliche Werte angepasst werden:

current

  aktueller Buffer (falls es ein IRC Buffer ist, ansonsten im entsprechenden Server Buffer)

private

  privaten Buffer, oder im aktuellen/Server Buffer falls nicht vorhanden (gemäß der Einstellung in der Option irc.look.msgbuffer_fallback)

server

  Server Buffer

weechat

  WeeChat "core" Buffer

Falls die Option nicht gesetzt ist (Standard) wählt WeeChat einen geeigneten Buffer aus, üblicherweise handelt es sich dabei um einen Server oder Channel-Buffer.

Unvollständige Liste der IRC Nachrichten bzw. Alias die angepasst werden können:

Nachricht | Alias | Beschreibung
--- | --- | ---
`error` |  | Fehler
`invite` |  | Einladung in einen Channel
`join` |  | join
`kick` |  | kick
`kill` |  | kill
`mode` |  | Modus
`notice` |  | Mitteilung
`part` |  | part
`quit` |  | quit
`topic` |  | topic
`wallops` |  | wallops
| `ctcp` | ctcp (gesendet oder empfangen, in einer privmsg oder notice Nachricht)
`221` |  | User mode string
`275` | `whois` | whois (sichere Verbindung)
`301` | `whois` | whois (abwesend)
`303` |  | ison
`305` | `unaway` | nicht abwesend
`306` | `away` | abwesend
`307` | `whois` | whois (registrierter Nick)
`310` | `whois` | whois (Hilfe Modus)
`311` | `whois` | whois (User)
`312` | `whois` | whois (Server)
`313` | `whois` | whois (Operator)
`314` | `whowas` | whowas
`315` | `who` | who (Ende)
`317` | `whois` | whois (inaktiv)
`318` | `whois` | whois (ende)
`319` | `whois` | whois (Channels)
`320` | `whois` | whois (User identifizieren)
`321` | `list` | list (Start)
`322` | `list` | list (Channel)
`323` | `list` | list (Ende)
`326` | `whois` | whois (hat oper privs)
`327` | `whois` | whois (Host)
`328` |  | Channel URL
`329` |  | Erstellungsdatum des Channel
`330` | `whois` | whois (eingelogged als)
`331` |  | kein Topic für Channel
`332` |  | Channel-Topic
`333` |  | Infos über Topic
`335` | `whois` | whois (ist ein Bot auf)
`338` | `whois` | whois (Host)
`341` |  | inviting
`343` | `whois` | whois (ist opered als)
`344` | `reop` | channel reop
`345` | `reop` | channel reop (Ende)
`346` | `invitelist` | Einladung Liste
`347` | `invitelist` | Einladung Liste (Ende)
`348` | `exceptionlist` | exception Liste
`349` | `exceptionlist` | exception Liste (Ende)
`351` |  | Server Version
`352` | `who` | who
`353` | `names` | Liste von Usern im Channel
`366` | `names` | Ende der /names Liste
`367` | `banlist` | ban Liste
`368` | `banlist` | Ende der ban Liste
`369` | `whowas` | whowas (Ende)
`378` | `whois` | whois (Verbindung von)
`379` | `whois` | whois (genutzte Modi)
`401` | `whois` | kein solcher Nick/Channel
`402` | `whois` | kein solcher Server
`432` |  | fehlerhafter Nickname
`433` |  | Nickname wird schon verwendet
`438` |  | nicht autorisiert um Nicknamen zu ändern
`671` | `whois` | whois (sichere Verbindung)
`728` | `quietlist` | quiet Liste
`729` | `quietlist` | Ende der quiet Liste
`732` | `monitor` | Liste der Nicks welche überwacht werden
`733` | `monitor` | Liste der Nicks welche überwacht werden (Ende)
`901` |  | Sie sind nun eingelogged

andere nummerische Befehle können angepasst werden.

Den IRC Nachrichten kann der Servername vorangestellt werden um zu spezifizieren von welchem IRC Server die Nachricht gekommen ist. Zum Beispiel: `libera.whois`.

einige Beispiele:

- gibt die Antwort von `/whois` im privaten Buffer aus:

    /set irc.msgbuffer.whois private

- stellt die Ausgabe von whois wieder auf Standardbuffer zurück (Server Buffer):

    /unset irc.msgbuffer.whois

- zeigt Einladungen im aktuellen Buffer an, nur für den "libera" Server:

    /set irc.msgbuffer.libera.invite current

- die Nachricht "303" (ison) wird im WeeChat "core" Buffer angezeigt:

    /set irc.msgbuffer.303 weechat

### 8.9. Befehle

- `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 [<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
           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 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. Optionen

Sektionen in Datei irc.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set irc.look.*` | Erscheinungsbild.
`color` | `/set irc.color.*` | Farben.
`network` | `/set irc.network.*` | Netzwerkoptionen.
`msgbuffer` | `/set irc.msgbuffer.*` | Zielbuffer für IRC Nachrichten (Optionen können in Sektion hinzugefügt/entfernt werden).
`ctcp` | `/set irc.ctcp.*` | CTCP Antworten (Optionen können in Sektion hinzugefügt/entfernt werden).
`ignore` | `/ignore` | Ignoriert Menschen.
`server_default` | `/set irc.server_default.*` | Standardwerte für Server (werden genutzt, falls keine Optionen für einen Server gesetzt sind).
`server` | `/server /set irc.server.*` | Server.

Optionen:

- 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

Mit der xfer Erweiterung kann man:

- einen direkten Chat nutzen (zwischen zwei Hosts, ohne Server): zum Beispiel "DCC Chat" mittels IRC Erweiterung

- Datentransfer, zum Beispiel "DCC" mittels IRC Erweiterung

### 9.1. Befehle

- `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. Optionen

Sektionen in Datei xfer.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set xfer.look.*` | Erscheinungsbild.
`color` | `/set xfer.color.*` | Farben.
`network` | `/set xfer.network.*` | Netzwerkoptionen.
`file` | `/set xfer.file.*` | Optionen zum Versenden und Empfangen von Dateien.

Optionen:

- 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. Schreibbenachrichtigung

Die typing-Erweitertung wird verwendet, um andere Benutzer darüber zu informieren, dass Sie Nachrichten schreiben, und zeigt eine Liste der Benutzer an, die derzeit eine Nachricht in dem Buffer eingeben.

Es wird von der IRC-Erweiterung für Kanäle- und private Buffern verwendet, sofern die "message-tags"-Fähigkeit aktiviert ist (dies kann mit folgendenen Befehl, wie folgt überprüfen werden /cap).

Unter der Haube wird das Typing-Client-Tag folgendermaßen verwendet this specification ↗.

### 10.1. Aktivierung

Aus Datenschutzgründen ist diese Tippfunktion standardmäßig deaktiviert.
Wenn Sie es verwenden möchten, müssen Sie Optionen sowohl in den typing- als auch für die IRC-Erweiterung aktivieren:

    /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

Die Tippbenachrichtigungen werden am Ende der Statusleiste angezeigt.

Beispiel für die Statusleiste mit dem "typing" Item: "bob" tippt gerade eine Nachricht und "alice" hat eine Nachricht getippt, machte aber eine Pause:

    │[12:55] [6] [irc/libera] 3:#test(+n){4} [Typing: bob, (alice)]                   │
    │[@Flashy] █                                                                      │
    └─────────────────────────────────────────────────────────────────────────────────┘

### 10.2. Signale gesendet

Wenn Sie eine Nachricht eingeben (Befehle, die mit `/` beginnen, werden ignoriert), sendet die typing-Erweitertung Signale, um andere Erweiterungen (wie z.B. IRC) darüber zu informieren, dass Sie eine Nachricht eingeben. Diese Erweiterungen können dann Tippbenachrichtigungen an andere Benutzer senden.

Die folgenden Signale werden gesendet, wenn Sie eine Nachricht schreiben:

Signal | Argumente | Beschreibung
--- | --- | ---
typing_self_typing | Pointer: buffer. | Du schreibst eine Nachricht.
typing_self_paused | Pointer: buffer. | Du machst beim Schrieben einer Nachricht, eine Pause.
typing_self_cleared | Pointer: buffer. | Du hast die Eingabezeile gelöscht, ohne die Nachricht zu senden.
typing_self_sent | Pointer: buffer. | Du hast die Nachricht in den Buffer geschickt.

### 10.3. Signale empfangen

Die typing-Erweiterung fängt einige Signale ab, die von anderen Erweiterungen (wie IRC) gesendet werden können, um interne Hashtables zu aktualisieren, die verwendet werden, um den Schreibstatus von Nicks in Buffern zu sichern. Diese Hashtabellen werden verwendet, um den Inhalt des "typing"-Items zu erstellen.

Die folgenden Signale werden von der typing-Erweiterung empfangen:

Signal | Argumente | Beschreibung
--- | --- | ---
typing_set_nick | Zeichenkette: Bufferpointer + ";" + Status (möglich: "off", "typing", "paused", "cleared") + ";" + Nick. Beispiele: "0x1234abcd;typing;alice". | Schreibstatus für einen Nick in einem Buffer festlegen.
typing_reset_buffer | Pointer: Buffer. | Schreibstatus für alle Nicks in einem Buffer entfernen.

### 10.4. Optionen

Sektionen in Datei typing.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set typing.look.*` | Erscheinungsbild.

Optionen:

- 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

Die Relay-Erweiterung wird genutzt um Daten, mittels unterschiedlicher Protokolle, über ein Netzwerk zu übermitteln:

- irc: IRC Proxy: um mittels einem oder mehreren IRC-Clients eine Verbindung zu IRC Servern zu unterhalten.

- api: HTTP REST API, wird von WeeChat und Remote-Schnittstellen zur Anzeige und Interaktion mit WeeChat verwendet

- weechat: von Remote-Schnittstellen verwendetes Protokoll zur Anzeige und Interaktion mit WeeChat.

Für die api und weechat Protokolle findet man eine Liste der Remote-Schnittstellen auf this page ↗.

### 11.1. Passwort

Es wird dringend empfohlen, mit diesen Befehlen ein Passwort für das Relay festzulegen:

    /secure set relay meinPasswort
    /set relay.network.password "${sec.data.relay}"

Dieses Passwort wird bei allen Protokollen verwendet.

### 11.2. TOTP

TOTP (Time-based One-Time Password) kann als sekundärer Authentifizierungsfaktor für die Protokolle api und weechat zusätzlich zum Passwort verwendet werden.

Diese Funktion is optional und erhöht den Sicherheitsgrad.

Ein Einmal-Passwort kann mit folgenden Anwendungen erstellt werden, zum Beispiel:

- FreeOTP: Android ↗, iOS ↗ (website ↗)

- Google Authenticator: Android ↗, iOS ↗

Die geheime TOTP Zeichenkette muss in WeeChat und der Anwendung gesetzt werden, welches für die Erstellung des Einmal-Passwort zuständig ist.

Die Zeichenkette muss base32 enkodiert sein, ausschließlich Buchstaben und Zahlen zwischen 2 und 7 sind erlaubt, zum Beispiel:

    /secure set relay_totp secretpasswordbase32
    /set relay.network.totp_secret "${sec.data.relay_totp}"

### 11.3. TLS

Man kann TLS mittels eines selbst erstellten Zertifikates und eines privaten Schlüssels nutzen. Um TLS für die Verbindung zu aktivieren stellt man dem Protokollnamen ein "tls" voran.

Der Standardpfad zum Zertifikat/Schlüssel wird durch die Option definiert relay.network.tls_cert_key.

Ein Zertifikat und einen privaten Schlüssel kann man mit folgenden Befehlen erstellen:

    mkdir -p ~/.config/weechat/tls
    cd ~/.config/weechat/tls
    openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out relay.pem

Anmerkung | Sie müssen `~/.config/weechat` durch den Pfad zu Ihrem WeeChat-Konfigurationsverzeichnis ersetzen, das auch beispielsweise `~/.weechat` sein kann.

Sollte WeeChat schon gestartet worden sein, kann man das Zertifikat und der private Schlüssel mittels folgendem Befehl nachträglich geladen werden:

    /relay tlscertkey

### 11.4. IRC Proxy

Die Relay Erweiterung kann wie ein IRC Proxy genutzt werden. Dabei simuliert die Erweiterung einen IRC Server und man kann sich mit jedem IRC Client zu WeeChat verbinden.

Es kann für jeden IRC Server ein Port definiert werden, oder aber man nutzt ein Port für alle Server.

Wird ein Port für alle Server genutzt, dann muss der Client den internen Namen des zu nutzenden Servers mit dem IRC Befehl "PASS" anfordern (siehe folgendes Beispiel):

    PASS server:meinPasswort

Beispiel: IRC Proxy mit TLS für einen beliebigen Server (Client wählt aus):

    /relay add tls.irc 8000

Beispiel: IRC Proxy ohne TLS und nur für "libera":

    /relay add irc.libera 8000

Nun kann man eine Verbindung zum Port 8000 mit jedem beliebigen IRC Client herstellen, indem man das Server Passwort "meinPasswort" nutzt (oder "libera:meinPasswort" sofern kein Server angegeben wurde).

Wenn Sie beispielsweise WeeChat als IRC-Client über das Relay mit einem Server namens "Relay" und dem Relay-Passwort "secret" verwenden, können Sie das Passwort mit den folgenden Befehlen einrichten:

    /secure set relay_libera libera:secret
    /set irc.server.relay.password "${sec.data.relay_libera}"

### 11.5. API protocol

Die Relay-Erweiterung kann Daten über ein HTTP REST API-Protokoll an einen Remote-WeeChat oder eine Remote-Schnittstelle senden.

Die API kann online durchstöbert und getestet werden: WeeChat Relay API ↗.

Sie können sich mit WeeChat oder einer Remote-Schnittstelle verbinden, siehe this page ↗.

Zum Beispiel:

    /relay add api 9000

Jetzt kann man sich über Port 9000 mit einem WeeChat oder einer Remote-Schnittstelle verbinden, indem das Passwort „mypassword“ verwendet wird.

Um eine lokale Verbindung via api Relay mittels WeeChat herzustelen:

    /remote add weechat http://localhost:9000 -password=mypassword
    /remote connect weechat

Um eine entfernte Verbindung via _api_Relay mittels WeeChat herzustelen (TLS wird dringend empfohlen):

    /remote add weechat https://example.com:9000 -password=mypassword
    /remote connect weechat

Anmerkung | Der Remote-WeeChat muss dieselbe API-Version wie der lokale WeeChat nutzen. Daher wird dringend empfohlen, auf dem Remote- und dem lokalen Client genau dieselbe WeeChat-Version zu verwenden.

### 11.6. WeeChat Protokoll

Die Relay-Erweiterung kann Daten, mittels dem WeeChat Protokoll, an eine externe Oberfläche senden.

Sie können eine Verbindung mit einer Remote-Schnittstelle herstellen, siehe this page ↗.

Wichtig | Eine WeeChat Instanz kann sich NICHT mit einer anderen WeeChat Instanz über dieses Protokoll verbinden.

Zum Beispiel:

    /relay add weechat 9500

Nun kann man über den Port 9500 mittels einer Oberfläche und dem Passwort "meinPasswort" eine Verbindung zu WeeChat herstellen.

### 11.7. WebSocket

Das WebSocket Protokoll (RFC 6455 ↗) wird nun in der Relay Erweiterung unterstützt.

Der WebSocket Handshake wird automatisch erkannt und der Socket ist sofort funktionsfähig, sofern die benötigten Header gefunden werden und die Herkunft bestätigt wurde (siehe Option relay.network.websocket_allowed_origins).

Ein WebSocket kann in HTML5, mit einer JavaScript Zeile, geöffnet werden:

    websocket = new WebSocket("ws://example.com:9500/weechat");

Der Port (im Beispiel: 9500) ist der Port der in der Relay Erweiterung angegeben wurde.

Die URI muss mit „/weechat“ für die Protokolle irc und weechat und mit „/api“ für das Protokoll api enden.

### 11.8. UNIX Domain Sockets

Wenn man die Protokolloption "unix" mit dem Befehl `/relay add` nutzt, kann man jedes Protokoll zum Lauschen an einem UNIX Domain Socket nutzen, indem man einen Pfad angibt. Zum Beispiel:

    /relay add unix.weechat ${weechat_runtime_dir}/relay_socket

Das erlaubt es Clients sich mittels dem weechat Protokoll mit /run/user/1000/weechat/relay_socket zu verbinden. Dies ist besonders zu empfehlen um SSH forwarding für relay Clients zu nutzen, falls andere Ports nicht geöffnet werden können.

OpenSSH nutzen:

    ssh -L 9000:.weechat/relay_socket user@hostname

Dies leitet lokale relay Client Verbindungen von Port 9000 um, zu einer WeeChat Instanz welche auf "hostname" hört.

### 11.9. Befehle

- `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>

          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

    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. Optionen

Sektionen in Datei relay.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set relay.look.*` | Erscheinungsbild.
`color` | `/set relay.color.*` | Farben.
`network` | `/set relay.network.*` | Netzwerkoptionen.
`irc` | `/set relay.irc.*` | für das IRC Protokoll spezifische Optionen (IRC Proxy).
`port` | `/relay add /set relay.port.*` | Ports zur Nutzung der Relay-Erweiterung (Optionen können in Sektion hinzugefügt/entfernt werden).

Optionen:

- 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.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. externe Befehle

Der `/exec` Befehl erlaubt es aus WeeChat heraus einen oder mehrere externe Befehle auszuführen und eine Ausgabe im lokalen Buffer darzustellen oder in einem Buffer auszugeben.

### 12.1. Befehle

- `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. Optionen

Sektionen in Datei exec.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`command` | `/set exec.command.*` | Optionen für Befehle.
`color` | `/set exec.color.*` | Farben.

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. FIFO Pipe

Sie können WeeChat fern steuern indem Sie Befehle oder einen Text an die FIFO Pipe schicken (dazu muss die Option "fifo.file.enabled" aktiviert sein (standardmäßig ist diese Option aktiviert).

Die FIFO-Pipe befindet sich im WeeChat-Laufzeitverzeichnis und wird standardmäßig weechat_fifo_12345 benannt (wobei 12345 die WeeChat-Prozess-ID ist).

Die Syntax der FIFO Pipe Befehle/Text sieht wie folgt aus:

      plugin.buffer *hier Text oder Befehl
      *hier Text oder Befehl

Backslashes können mit diesem Format interpretiert werden, wobei `*` durch `\` ersetzt wird, damit kann man beispielsweise mehrzeilige Nachrichten senden:

      plugin.buffer \text or command here
      \text or command here

einige Beispiele:

- Ändert den eigenen Nick auf dem IRC Server libera in "newnick":

    echo 'irc.server.libera */nick newnick' >/run/user/1000/weechat/weechat_fifo_12345

- Schickt eine Nachrich in den IRC #weechat Channel:

    echo 'irc.libera.#weechat *hello!' >/run/user/1000/weechat/weechat_fifo_12345

- Sendet eine mehrzeilige Nachricht in den IRC Kanal #test, wenn die Fähigkeit "draft/multiline" auf dem Ergo Server aktiviert ist:

    echo 'irc.ergo.#test \hello\n...on two lines!' >/run/user/1000/weechat/weechat_fifo_12345

- Schickt eine Nachricht in den aktuellen Buffer:

    echo '*hello!' >/run/user/1000/weechat/weechat_fifo_12345

- Sendet zwei Befehle um alle Python-Skripten zu entfernen und dann neu zu laden (die beiden Befehle müssen mit "\n" getrennt werden):

    printf '%b' '*/python unload\n*/python autoload\n' >/run/user/1000/weechat/weechat_fifo_12345

### 13.1. Befehle

- `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. Optionen

Sektionen in Datei fifo.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`file` | `/set fifo.file.*` | FIFO Pipe Optionen.

Optionen:

- 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 ist das Schweizer Armeemesser für WeeChat. Es können verschiedene Hooks überwacht werden (signal. modifier, print, …​), der Inhalt von Daten kann verändert werden, es können ein- oder mehrere Befehle ausgeführt werden. Eine Bedingung kann genutzt werden um damit zu verhindern, dass der Trigger unter bestimmten Umständen ausgeführt wird.

Um Trigger nutzen zu können ist es von Vorteil zu wissen wie signals, modifiers, …​ in WeeChat überhaupt funktionieren. Deshalb sollte man überlegen, ob man nicht folgende Anleitung lesen sollte Anleitung für API Erweiterung / Hooks ↗ (Englisch).

### 14.1. standardmäßige Trigger

WeeChat erstellt standardmäßig fünf Trigger, welche deaktiviert, angepasst oder gelöscht werden können:

- ein beep Trigger für Benachrichtigungen

- vier Trigger um Passwörter auf dem Bildschirm zu unterdrücken

Liste der standardmäßigen Trigger:

Name | Hook | Beschreibung
--- | --- | ---
`beep` | print | Beep bei Highlight/privaten Nachrichten.
`cmd_pass` | modifier | unterdrückt Passwörter in den Befehlen: `/msg nickserv id|identify|set password|ghost|release|regain|recover`, `/oper`, `/quote pass`, `/secure passphrase|decrypt|set`.
`cmd_pass_register` | modifier | unterdrückt Passwort im Befehl `/msg nickserv register`.
`msg_auth` | modifier | unterdrückt Passwort einer IRC auth Nachricht (Nachricht welche vom Server empfangen wird, nachdem der User den Befehl verschickt hat).
`server_pass` | modifier | unterdrückt Passwort bei den Befehlen `/server` und `/connect`.

### 14.2. Aufbau eines Triggers

Ein Trigger hat folgende Optionen (Benennung ist `trigger.trigger.<name>.<option>`):

Option | Wert | Beschreibung
--- | --- | ---
`enabled` | `on`, `off` | Wenn die Option auf `off` gesetzt ist, dann ist der Trigger deaktiviert und die Ausführung ist gestoppt.
`hook` | `signal`, `hsignal`, `modifier`, `line`, `print`, `command`, `command_run`, `timer`, `config`, `focus`, `info`, `info_hashtable` | Der hook welcher durch Trigger genutzt werden soll. Für weitere Informationen siehe Anleitung für API Erweiterung / Hooks ↗ (Englisch).
`arguments` | string | Argumente welche der Hook nutzen soll. Dies ist davon abhängig welcher Hook-Typ genutzt wird.
`conditions` | string | Bedingung wann der Trigger ausgeführt werden soll; Inhalt ist evaluiert (siehe Befehl /eval).
`regex` | string | Einer oder mehrere erweiterte reguläre POSIX Ausdrücke, um die empfangenen Daten im Hook-Callback zu ändern (oder Daten die durch die Trigger-Erweiterung hinzugefügt worden sind), siehe reguläre Ausdrücke.
`command` | string | Befehl der ausgeführt werden soll (mehrere Befehle können durch Kommata voneinander getrennt werden); Inhalt ist evaluiert (siehe Befehl /eval).
`return_code` | `ok`, `ok_eat`, `error` | Rückgabewert des Callback (Standardwert: `ok`, sollte für fast jeden Trigger genutzt werden. Die anderen Werte werden höchst selten verwendet).
`post_action` | `none`, `disable`, `delete` | Aktion welche nach der Abarbeitung des Triggers ausgeführt werden soll (Standardwert ist `none` und sollte in den meisten Fällen zur Anwendung kommen.)

Ein Beispiel ist der standardmäßig genutzte Trigger beep, der folgende Optionen besitzt:

    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. Ausführung

Wenn ein Trigger-Callback aufgerufen wird, dann wird folgende Befehlskette abgearbeitet:

1. Überprüfung von Bedingungen; falls unwahr, beenden

2. ersetze Text mittels erweitertem regulärer POSIX Ausdruck (sofern im Trigger definiert)

3. ein oder mehrere Befehle werden ausgeführt (sofern im Trigger definiert)

4. Beendigung mit einem Rückgabewert (ausgenommen sind die Hooks modifier, line, focus, info und info_hashtable)

5. Aktion welche nach der Abarbeitung des Triggers ausgeführt werden soll (falls der Wert abweichend von `none` sein sollte).

### 14.4. Hook Argumente

Die Argumente sind abhängig von dem genutzten Hook und werden durch ein Semikolon getrennt.

Hook | Argumente | Beispiele | Dokumentation (API)
--- | --- | --- | ---
signal | 1. Signalname (Priorität erlaubt) (erforderlich) 2. Signalname (Priorität erlaubt) 3. …​ | `*,irc_in_privmsg` `*,irc_in_privmsg;*,irc_in_notice` `signal_sigwinch` | hook_signal ↗ (Englisch)
hsignal | 1. Signalname (Priorität erlaubt) (erforderlich) 2. Signalname (Priorität erlaubt) 3. …​ | `nicklist_nick_added` | hook_hsignal ↗ (Englisch)
modifier | 1. modifier-Name (Priorität erlaubt) (erforderlich) 2. modifier-Name (Priorität erlaubt) 3. …​ | `weechat_print` `5000|input_text_display;5000|history_add` | hook_modifier ↗ (Englisch)
line | 1. Buffertyp 2. Buffername 3. Tags | `formatted` `free` `*;irc.libera.*` `*;irc.libera.#weechat` `formatted;irc.libera.#weechat;irc_notice` | hook_line ↗ (Englisch)
print | 1. Buffername 2. Tags 3. Nachricht 4. entferne Farben (0/1) | `irc.libera.*` `irc.libera.#weechat` `irc.libera.#weechat;irc_notice` `*;;;1` | hook_print ↗ (Englisch)
command | 1. Befehlsname (Priorität erlaubt) (erforderlich) 2. Beschreibung (evaluiert, siehe Befehl /eval) 3. Argumente (evaluiert, siehe Befehl /eval) 4. Beschreibung der Argumente (evaluiert, siehe Befehl /eval) 5. Vervollständigung (evaluiert, siehe Befehl /eval) | `test` `5000|test` `test;test command;arg1 arg2;arg1: description 1${\n}arg2: description 2` | hook_command ↗ (Englisch)
command_run | 1. Befehl (Priorität erlaubt) (erforderlich) 2. Befehl (Priorität erlaubt) 3. …​ | `/cmd arguments` | hook_command_run ↗ (Englisch)
timer | 1. Intervall in Millisekunden (erforderlich) 2. Abgleich der Sekunden (Standardwert: 0) 3. max. Anzahl an Aufrufen (Standardwert: 0, was "unendlich" bedeutet) | `3600000` `60000;0;5` | hook_timer ↗ (Englisch)
config | 1. Name der Option (Priorität erlaubt) (erforderlich) 2. Name der Option (Priorität erlaubt) 3. …​ | `weechat.look.*` | hook_config ↗ (Englisch)
focus | 1. area Name (Priorität erlaubt) (erforderlich) 2. area Name (Priorität erlaubt) 3. …​ | `buffer_nicklist` | hook_focus ↗ (Englisch)
info | 1. info name (Priorität erlaubt) (erforderlich) 2. info name (Priorität erlaubt) 3. …​ | `my_info` | hook_info ↗ (Englisch)
info_hashtable | 1. info name (Priorität erlaubt) (erforderlich) 2. info name (Priorität erlaubt) 3. …​ | `my_info` | hook_info_hashtable ↗ (Englisch)

### 14.5. Bedingungen

Bedingungen werden benötigt um eine Ausführung am Laufen zu halten oder um diese zu stoppen.

Diese sind evaluiert und die Daten im Callback können verwendet werden (siehe Daten in Callbacks und Befehl /eval).

Beispiel: der standardmäßig genutzte Trigger beep nutzt folgende Bedingungen, um ausschließlich bei einer privaten Nachricht oder einem Highlight ausgeführt zu werden:

    ${tg_displayed} && (${tg_highlight} || ${tg_msg_pv})

### 14.6. Reguläre Ausdrücke

Der reguläre Ausdruck wird verwendet, um Variablen in der Callback-Hashtabelle zu ändern.

Format ist eines der folgenden:

    /string1/string2
    /string1/string2/var
    s/string1/string2
    s/string1/string2/var
    y/string1/string2
    y/string1/string2/var

Felder:

- `s` oder `y`: ein Buchstabe mit dem Befehl; falls nicht vorhanden, ist der Standardbefehl `s` und das erste Zeichen wird dann als Trennzeichen verwendet:

  - `s`: Regex-Ersetzung: Die erste Zeichenfolge ist ein regulärer Ausdruck, die zweite Zeichenfolge ist der Ersatz für jede passende Zeichenfolge

  - `y`: Zeichenübersetzung: Die erste Zeichenfolge ist eine Reihe von Zeichen, die ersetzt werden durch die Zeichen in der zweiten Zeichenfolge; einmal ausgewertet, muss jeder String haben genau die gleiche Anzahl von UTF-8-Zeichen

- `/`: das Regex-Trennzeichen; das Zeichen "/" kann durch ein beliebiges Zeichen ersetzt werden (ein oder mehrere identische Zeichen)

- `string1`: die erste Zeichenkette (Verwendung ist abhängig vom Befehl)

- `string2`: die zweite Zeichenkette (Verwendung ist abhängig vom Befehl)

- `var`: die zu aktualisierende Hashtable-Variable

Mehrere reguläre Ausdrücke können durch ein Leerzeichen getrennt werden, zum Beispiel:

    s/regex1/replace1/var1 y/abcdef/ABDDEF/var2

#### Regex ersetzen

Für den Befehl `s` ist das Format: `s/regex/replace` oder `s/regex/replace/var` (wobei var eine Variable der Hashtabelle ist).

Da `s` der Standardbefehl ist, kann dieser weggelassen werden, also ist es auch `/regex/replace` gültig (aber das erste Zeichen, das das Trennzeichen ist, darf kein Buchstabe sein).

Zutreffende Gruppen können in replace verwendet werden:

- `${re:0}` nach `${re:99}`: `${re:0}` ist die ganze Trefferanzahl, `${re:1}` nach `${re:99}` sind als Gruppen erfasst.

- `${re:+}`: das letzte Treffer (mit der höchsten Zahl)

- `${re:#}`: index of last group captured

- `${re:repl_index}`: index of replacement being done (starts to 1)

- `${hide:c,${re:N}}`: Treffer "N" mit allen Zeichen die durch "c" ersetzt wurden (Beispiele: `${hide:*,${re:2}}` ist die Gruppe #2, mit allen Zeichen die durch `*` ersetzt wurden).

Beispiel: Verwenden Sie Fettschrift für Wörter zwischen `*`:

    s/\*([^ ]+)\*/*${color:bold}${re:1}${color:-bold}*/

Beispiel: Der Standardtrigger server_pass verwendet diesen regulären Ausdruck zum Ausblenden des Passwortes in den Befehlen `/server` und `/connect` (Zeichen in Passwörtern werden ersetzt durch `*`):

    s==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}

Anmerkung | In diesem Beispiel ist das verwendete Trennzeichen "==", da ein "/" in dem regulären Ausdruck vorhanden ist.

#### Zeichen ersetzen

Für den Befehl „y“ ist das Format: „y/chars1/chars2“ oder „y/chars1/chars2/var“. (wobei var eine Variable der Hashtabelle ist).

Beispiel: ersetze "a", "b" und "c" durch Großbuchstaben:

    y/abc/ABC/

Beispiel: rotiere Pfeile im Uhrzeigersinn:

    y/←↑→↓/↑→↓←/

Beispiel: konvertiere alle Zeichen in Kleinbuchstaben:

    y/${chars:upper}/${chars:lower}/

Beispiel: verschiebt jeden Buchstaben um eine Position, wobei die Groß- und Kleinschreibung erhalten bleibt: a→b, b→c … y→z, z→a:

    y/${chars:a-z}${chars:A-Z}/${chars:b-z}a${chars:B-Z}A/

#### Variablen

Wenn var nicht in der Hashtabelle vorhanden ist, wird es automatisch mit einem leerer Wert erstellt. Dies ermöglicht das Erstellen benutzerdefinierter temporärer Variablen.

Wenn var nicht angegeben ist, wird die Standardvariable verwendet, sie hängt vom Hook-Typ ab:

Hook | Standard-Variable | Update erlaubt (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 |  | alle Variablen die in der hashtable empfangen wurden

Anmerkung | (1) Alle Variablen können im Trigger upgedated werden, aber nur diese Variablen haben einen Einfluss auf den Wert der vom Trigger zurückgegeben wird und dann von WeeChat genutzt wird.

### 14.7. Befehl

Der Befehl wird erst ausgeführt nach dem mittels eines regulären Ausdruckes der Text verändert wurde. Mehrere Befehle können durch Semikolon voneinander getrennt werden.

Der Inhalt ist evaluiert (siehe Befehl /eval) und der durch einen regulären Ausdruck veränderte Text kann in dem Befehl verwendet werden.

Beispiel: der standardmäßig genutzte Trigger beep nutzt folgenden Befehl um einen Ton (BEL) zu erzeugen.

    /print -beep

### 14.8. Daten in Callbacks

Daten, die dem Callback übergeben werden, werden in einer Hashtable (Pointer und Strings) gesichert und können durch folgende Optionen genutzt werden:

- conditions

- regex

- command

Der Inhalt eines Hashtable ist abhängig von dem Hook-Typ.

Ein komfortabler Weg um die Daten eines Triggers zu sehen ist es den Monitor-Buffer zu öffnen:

    /trigger monitor

Alle Callbacks setzen folgende Variablen in das hashtable:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_trigger_name` | string | Name des Trigger.
`tg_hook_type` | string | Hook-Typ: "signal", "command", etc.

#### Signale

Der Callback von "signal" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_signal` | string | Name des Signals.
`tg_signal_data` | string | Daten die vom Signal gesendet wurde.

Sollte das Signal eine IRC Nachricht beinhalten, wird die Nachricht analysiert und die Daten in einer Hashtable gesichert:

Variable | Typ | Beschreibung
--- | --- | ---
`irc_server` | pointer | Pointer auf IRC Server (Variable in hdata vom Typ "irc_server" kann verwendet werden, wie `${irc_server.name}`).
`irc_channel` | pointer | Pointer auf IRC Channel (Variable in hdata vom Typ "irc_channel" kann verwendet werden, wie `${irc_channel.name}`).
`server` | string | Name des Server (Beispiel: "libera").
`tags` | string | Tags in Nachricht (findet selten Verwendung).
`message_without_tags` | string | Nachricht ohne Tags.
`nick` | string | Nick. (1)
`host` | string | Hostname.
`command` | string | IRC Befehl (Beispiel: "PRIVMSG", "NOTICE", …​).
`channel` | string | IRC Channel.
`arguments` | string | Argumente des Befehls (Beinhaltet Wert von channel).
`text` | string | Text (zum Beipiel eine Nachricht eines Users).
`pos_command` | string | Index von command innerhalb einer Nachricht ("-1" falls command nicht gefunden wird).
`pos_arguments` | string | Index von_arguments_ innerhalb einer Nachricht ("-1" falls arguments nicht gefunden wird).
`pos_channel` | string | Index von channel innerhalb einer Nachricht ("-1" falls channel nicht gefunden wird).
`pos_text` | string | Index von text innerhalb einer Nachricht ("-1" falls text nicht gefunden wird).

Anmerkung | (1) Der Nick, ist der Absender der Nachricht. Der eigene Nick für den Server ist `${irc_server.nick}`.

Sofern es sich bei den Daten um einen Pointer handelt, kann die Variable `tg_signal_data` wie im folgenden Beispiel genutzt werden um den Inhalt von hdata zu lesen (im Beispiel wird der Pointer eines Buffer verwendet):

    ${buffer[${tg_signal_data}].full_name}

#### Hsignal

Der Callback von "hsignal" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_signal` | string | Name des Signals.

Das Hashtable enthält alle Schlüssel/Werte (Typ: string/string).

#### Modifier

Der Callback von "modifier" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_modifier` | string | Name des modifier.
`tg_modifier_data` | string | Daten die der modifier übermittelt.
`tg_string` | string | Zeichenkette die verändert werden kann.
`tg_string_nocolor` | string | Zeichenkette ohne Farbcodes.

Für den modifier weechat_print gilt, Tags werden hinzugefügt, sofern sie vorhanden sind (siehe hook print weiter unten), und nachfolgende Variablen:

Variable | Typ | Beschreibung
--- | --- | ---
`buffer` | pointer | Buffer in welchem die Nachricht geschrieben werden soll.
`tg_plugin` | string | Erweiterung des entsprechenden Buffers.
`tg_buffer` | string | vollständiger Name des Buffers.
`tg_prefix` | string | Präfix der Nachricht.
`tg_prefix_nocolor` | string | Präfix ohne Farbcodes.
`tg_message` | string | Nachricht die ausgegeben werden soll.
`tg_message_nocolor` | string | Nachricht die ausgegeben werden soll, ohne Farbcodes.

Sollte das Signal eine IRC Nachricht beinhalten, wird die Nachricht analysiert und die Daten in einer Hashtable gesichert (siehe hook signal).

#### Line

Der Callback von "line" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`buffer` | pointer | Buffer.
`buffer_name` | string | Buffername.
`buffer_type` | string | Buffertyp ("formatted" oder "free").
`y` | string | Zeilennummer bei einem Buffer mit freier Einteilung (≥ 0), -1 für einen Buffer mit formatiertem Inhalt.
`date` | string | Datum der Zeile (Zeitstempel).
`date_usec` | string | Mikrosekunden des Zeilendatums.
`date_printed` | string | Datum wann die Zeile dargestellt wurde (Zeitstempel).
`date_usec_printed` | string | Mikrosekunden des Datums, an dem die Zeile angezeigt wurde.
`str_time` | string | Datum für Darstellung. Kann Farbkodierungen erhalten.
`tags` | string | Tags einer Nachricht (Komma wird automatisch zu Beginn und Ende den Tags hinzugefügt).
`displayed` | string | "1" wenn Zeile dargestellt wird, "0" wenn Zeile gefiltert wird.
`notify_level` | string | "-1" = keine Benachrichtigung, "0" = niedrige Stufe, "1" = Nachricht, "2" = private Nachricht, "3" = Highlight
`highlight` | string | "1" wenn Highlight, andernfalls "0".
`prefix` | string | Prefix.
`tg_prefix_nocolor` | string | Prefix, ohne Farbkodierung.
`message` | string | Nachricht.
`tg_message_nocolor` | string | Nachricht, ohne Farbkodierung.

Variablen die mittels Tags in der Nachricht gesetzt werden:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_tags_count` | string | Anzahl an Tags der Nachricht.
`tg_tag_nick` | string | Nick (extrahiert aus Tag "nick_xxx").
`tg_tag_prefix_nick` | string | Nickfarbe für Präfix (extrahier aus Tag "prefix_nick_ccc").
`tg_tag_host` | string | Username und Host, Format: username@host (extrahiert aus Tag "host_xxx").
`tg_tag_notify` | string | Benachrichtigungsstufe (none, message, private, highlight).
`tg_tag_irc_xxx` | string | Tag einer IRC Nachricht (Schlüssel "xxx"). (1)
`tg_notify` | string | Benachrichtigungsstufe, falls von none abweichend.
`tg_msg_pv` | string | "1" für eine private Nachricht, andernfalls "0".

Anmerkung | (1) Kommas werden durch Semikolon ersetzt in IRC Tag (Schlüssel und Wert).

#### Print

Der Callback von "print" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`buffer` | pointer | Buffer.
`tg_date` | string | Datum/Uhrzeit der Nachricht (Format: `%FT%T.%f`, siehe WeeChat plugin API reference / util_strftimeval ↗).
`tg_displayed` | string | "1" wenn Nachricht dargestellt wird, "0" falls Nachricht gefiltert wird.
`tg_highlight` | string | "1" falls es sich um eine Highlight-Nachricht handelt, andernfalls "0".
`tg_prefix` | string | Präfix.
`tg_prefix_nocolor` | string | Präfix ohne Farbcodes.
`tg_message` | string | Nachricht.
`tg_message_nocolor` | string | Nachricht ohne Farbcodes.

Variablen die mittels Tags in der Nachricht gesetzt werden:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_tags` | string | Tags einer Nachricht (Komma wird automatisch zu Beginn und Ende den Tags hinzugefügt).
`tg_tags_count` | string | Anzahl an Tags der Nachricht.
`tg_tag_nick` | string | Nick (extrahiert aus Tag "nick_xxx").
`tg_tag_prefix_nick` | string | Nickfarbe für Präfix (extrahier aus Tag "prefix_nick_ccc").
`tg_tag_host` | string | Username und Host, Format: username@host (extrahiert aus Tag "host_xxx").
`tg_tag_notify` | string | Benachrichtigungsstufe (none, message, private, highlight).
`tg_tag_irc_xxx` | string | Tag einer IRC Nachricht (Schlüssel "xxx"). (1)
`tg_notify` | string | Benachrichtigungsstufe, falls von none abweichend.
`tg_msg_pv` | string | "1" für eine private Nachricht, andernfalls "0".

Anmerkung | (1) Kommas werden durch Semikolon ersetzt in IRC Tag (Schlüssel und Wert).

#### Command

Der Callback von "command" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`buffer` | pointer | Buffer.
`tg_argc` | string | Die Anzahl von Argumenten (der Befehl wird mitgezählt).
`tg_argvN` | string | Argument #N (`tg_argv0` ist der Befehl selber, die weiteren sind Argumente).
`tg_argv_eolN` | string | von Argument #N bis zum Ende der Argumente (`tg_argv_eol0` enthält den eigentlichen Befehl).
`tg_shell_argc` | string | Die Anzahl der Argumente mit einer Aufteilung wie bei der Shell (der Befehl selbst zählt als eins).
`tg_shell_argvN` | string | #N Argumente mit einer Aufteilung wie bei der Shell (`tg_shell_argv0` ist der eigentliche Befehl, alle weiteren sind die Argumente, des Befehls).

#### Command_run

Der Callback von "command_run" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`buffer` | pointer | Buffer.
`tg_command` | string | auszuführender Befehl.

#### Timer

Der Callback von "timer" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_remaining_calls` | string | Anzahl der noch ausstehenden Aufrufe.
`tg_date` | string | aktuelles Datum und Uhrzeit (Format: `%FT%T.%f`, siehe WeeChat plugin API reference / util_strftimeval ↗).

#### Config

Der Callback von "config" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_option` | string | Option.
`tg_value` | string | Wert.

#### Focus

Der Callback von "focus" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`window` | pointer | Fenster.
`buffer` | pointer | Buffer.

Das Hashtable enthält alle Schlüssel/Werte (Typ: string/string).

#### Info

Der Callback von "info" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_info_name` | string | Name der Information.
`tg_arguments` | string | Argumente.
`tg_info` | string | ein leerer String (die Information die zurückgegeben werden soll).

#### Info_hashtable

Der Callback von "info_hashtable" legt folgende Variablen in der Hashtable an:

Variable | Typ | Beschreibung
--- | --- | ---
`tg_info_name` | string | Name der Information.

Das Hashtable enthält alle Schlüssel/Werte (Typ: string/string).

### 14.9. Beispiele

#### URLs werden eingefärbt

Zeigt URLs in grün an:

    /trigger add url_color modifier weechat_print "${tg_notify}" "==[a-zA-Z0-9_]+://[^ ]+==${color:green}${re:0}${color:reset}=="

Anmerkung | Dies ist ein einfacher regulärer Ausdruck der möglicherweise nicht alle URLs erkennt, dafür ist er aber wesentlich schneller als ein komplexer regulärer Ausdruck.

#### automatisierte "pong" Antwort, bei einer "ping" Anfrage

Wenn jemand eine "ping" Nachricht in einen privaten Buffer sendet, verschickt dieser Trigger automatisch eine `pong` Antwort:

    /trigger add pong print "" "${type} == private && ${tg_message} == ping" "" "pong"

#### reaktives layout

Der nachfolgende Trigger kann verwendet werden um Anpassungen vorzunehmen, falls sich die Größe des Terminalfensters verändert:

    /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"

Der Trigger nutzt das Signal "signal_sigwinch", welches durch WeeChat verschickt wird sobald das Signal SIGWINCH vom Terminal empfangen wird.

Die Bedingung `${info:term_width}` überprüft die Breite des Terminal (zusätzlich kann auch `${info:term_height}` genutzt werden).

In obigem Beispiel wird die Nicklist versteckt, sobald das Terminal verkleinert wird. Die Benutzerliste wird wieder angezeigt, sobald die Breite des Terminals größer oder gleich 100 Zeichen ist.

#### automatisches speichern der Konfiguration

Die Konfigurationsdateien (`*.conf`), können automatisch jede Stunde gespeichert werden:

    /trigger add cfgsave timer 3600000;0;0 "" "" "/mute /save"

Argumente für den Hook-Timer sind:

- 3600000: 3600 * 1000 Millisekunden, der Callback wird jede Stunde ausgeführt

- 0: Abgleich der Sekunden (es findet keine Justierung statt)

- 0: maximale Anzahl an aufrufen (0 = unbegrenzt)

Der Befehl `/mute /save` sorgt dafür, dass die Konfiguration ohne kommentarlos gespeichert wird (es findet keine Ausgabe im Core-Buffer statt).

### 14.10. Befehle

- `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. Optionen

Sektionen in Datei trigger.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set trigger.look.*` | Erscheinungsbild.
`color` | `/set trigger.color.*` | Farben.
`trigger` | `/trigger add /trigger set /set trigger.trigger.*` | Trigger Optionen.

Optionen:

- 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. WeeChat erweitern

WeeChat ist modular aufgebaut und kann durch Erweiterungen und Skripten in der Funktionalität erweitert werden.

Es ist wichtig zwischen Erweiterung und Skript zu unterscheiden. Eine Erweiterung ist eine Binärdatei die kompiliert wurde und mit dem Befehl `/plugin` geladen wird. Dem gegenüber ist ein Skript eine Textdatei die durch eine Erweiterung z.B. python mittels dem Befehl `/python` geladen wird.

### 15.1. Erweiterungen

Eine WeeChat Erweiterung ist eine dynamische Bibliothek (library), die in C geschrieben und kompiliert ist. Unter GNU/Linux besitzt eine Erweiterung als Dateiendung ".so", unter Windows ".dll".

Erweiterungen die gefunden werden, werden beim Start von WeeChat automatisch geladen. Natürlich ist es möglich während einer laufenden Sitzung von WeeChat Erweiterungen nachträglich zu laden oder zu entfernen.

Mit dem Befehl `/plugin` kann eine Erweiterung geladen bzw. entfernt werden. Auch können mit dem Befehl alle installierten Erweiterungen aufgelistet werden.

Sobald eine Erweiterung beendet wird, entfernt WeeChat:

- Buffer

- Konfigurationsoptionen (Optionen die in Datein geschrieben wurden)

- alle Hooks: commands, modifiers, process, etc.

- Infos und Infolisten

- hdata

- Bar-Items.

Beispiele wie man Erweiterungen lädt, entfernt und auflistet:

    /plugin load irc
    /plugin unload irc
    /plugin list

Standarderweiterungen:

Erweiterung | Beschreibung
--- | ---
alias | definiert Alias für Befehle.
buflist | Bar-Item mit der Liste aller Buffern.
charset | Zeichensatz (de)-kodierung in Buffern.
exec | ausführen von externen Befehlen aus WeeChat heraus.
fifo | FIFO Pipe die zur Fernsteuerung von WeeChat genutzt werden kann.
fset | Optionen von WeeChat und Erweiterungen schnell anpassen.
irc | IRC Chat-Protokoll.
logger | erstellt Protokolldateien von Buffern.
relay | Daten via Netzwerk übermitteln.
script | Skripten-Manager.
python | Python-Skript API.
perl | Perl-Skript API.
ruby | Ruby-Skript API.
lua | Lua-Skript API.
tcl | Tcl-Skript API.
guile | Guile(scheme)-Skript API.
javascript | JavaScript-Skript API.
php | PHP-Skript API.
spell | Rechtschreibprüfung für Befehlszeile.
trigger | Veränderung von Text und Ausführen von Befehlen bei einem Ereignis, welche durch WeeChat oder eine Erweiterung ausgelöst werden.
typing | Benutzer anzeigen, die gerade Nachrichten schreiben.
xfer | Datentransfer und Direktchat.

Um mehr über Erweiterungen- und Skriptenprogrammierung (mittels API) zu erfahren, sollten Sie die Anleitung für API Erweiterung ↗ (Englisch) oder WeeChat scripting guide ↗ lesen.

### 15.2. Skripten

WeeChat unterstützt Erweiterungen für insgesamt acht Skriptsprachen: Python, Perl, Ruby, Lua, Tcl, Guile (scheme), JavaScript und PHP. Mit jeder dieser Erweiterungen können Skripten geladen, ausgeführt und entfernt werden.

Sollten wir Ihr Interesse geweckt haben selber Skripten für WeeChat zu programmieren, dann lesen Sie bitte die WeeChat scripting Guide ↗.

#### Skriptmanager

Der Skriptmanager (Befehl /script) wird benutzt um Skripte jeder Sprache zu starten/beenden, sowie Skripte aus dem WeeChat Skriptrepositorium zu installieren/entfernen, diese sind aufgelistet auf this page ↗.

Aus Datenschutzgründen ist das Herunterladen von Skripten standardmäßig deaktiviert.
Um es zu aktivieren, geben Sie diesen Befehl ein:

    /script enable

Dann können Sie die Liste der Skripte herunterladen und in einem separaten Buffer, mit dem Befehl /script, anzeigen lassen:

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │1.weechat│322/322 Skripten (Filter: *) | Sortierung: i,p,n | Alt+Taste/Eingabe: i=installieren, r=entfernen,>>│
    │2.scripts│*      autosort.py                     3.10    2023-12-31 | Behält die Gruppierung der Buffer nach S│
    │         │*      highmon.pl                      2.7     2020-06-21 | Startet einen Highlight Monitor Buffer. │
    │         │*ia r  grep.py                   0.8.6 0.8.6   2022-11-11 | Sucht nach regulären Ausdrücken in Buffe│
    │         │*      colorize_nicks.py               32      2023-10-30 | Im Textbereich oder der Eingabezeile wir│
    │         │*ia r  go.py                     3.0.1 3.0.1   2024-05-30 | Schneller Wechsel zu Buffern.           │
    │         │       aesthetic.py                    1.0.6   2020-10-25 | Macht Nachrichten Ä S T H E T I S C H an│
    │         │       aformat.py                      0.2     2018-06-21 | Alternative Textformatierung, nützlich f│
    │         │       alternatetz.py                  0.4     2022-01-25 | Fügt der Bar-Item eine zusätzliche Zeitz│
    │         │       amarok2.pl                      0.7     2012-05-08 | Fernbedienung für Amarok2 und zum anzeig│
    │         │       amqp_notify.rb                  0.1     2011-01-12 | Schickt private Nachrichten und Highligh│
    │         │       announce_url_title.py           19      2021-06-05 | Schickt einen URL Titel an einen User od│
    │         │       anotify.py                      1.0.2   2020-05-16 | Benachrichtigung von privaten Nachrichte│
    │         │       anti_password.py                1.2.1   2021-03-13 | Verhindert, dass ein Kennwort versehentl│
    │         │       apply_corrections.py            1.3     2018-06-21 | Zeigt den korrigierten Text an wenn der │
    │         │       arespond.py                     0.1.2   2022-01-25 | Anfragen werden automatisch beantwortet.│
    │         │       atcomplete.pl                   0.001   2016-10-29 | Fügt "@" Präfix bei der Nick Tab-Vervoll│
    │         │       audacious.pl                    0.3     2009-05-03 | Zeigt an welche Musik gerade von Audacio│
    │         │       auth.rb                         0.3     2014-05-30 | Automatische Authentifizierung mittels S│
    │         │       auto_away.py                    0.4     2018-11-11 | Ein einfaches Abwesenheit-Skript.       │
    │         │       autoauth.py                     1.3     2021-11-07 | Erlaubt automatische Authentisierung, we│
    │         │       autobump.py                     0.1.0   2019-06-14 | Springt zu Buffern nach deren Aktivität.│
    │         │       autoconf.py                     0.4     2021-05-11 | Automatisches speichern/laden von Option│
    │         │       autoconnect.py                  0.3.3   2019-10-06 | Öffnet erneut die Server und Channel die│
    │         │       autojoin_on_invite.py           0.9     2022-10-25 | Betritt automatisch einen Kanal wenn man│
    │         │       automarkbuffer.py               1.0     2015-03-31 | Buffer werden als gelesen markiert falls│
    │         │       automerge.py                    0.2     2018-03-03 | Automatische Zusammenführung neuer Buffe│
    │         │[12:55] [2] [script] 2:scripts                                                                      │
    │         │█                                                                                                   │
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

##### Skript Befehle

- `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

##### Script Optionen

Sektionen in Datei script.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set script.look.*` | Erscheinungsbild.
`color` | `/set script.color.*` | Farben.
`scripts` | `/set script.scripts.*` | Optionen für den Download von Skripten.

Optionen:

- 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"`

#### Skripterweiterung

##### Python Befehle

- `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.

##### Perl Befehle

- `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.

##### Ruby Befehle

- `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.

##### Lua Befehle

- `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.

##### Tcl Befehle

- `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.

##### Guile Befehle

- `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.

##### PHP Befehle

- `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.

##### Python Optionen

Sektionen in Datei python.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set python.look.*` | Erscheinungsbild.

Optionen:

- 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`

##### Perl Optionen

Sektionen in Datei perl.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set perl.look.*` | Erscheinungsbild.

Optionen:

- 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`

##### Ruby Optionen

Sektionen in Datei ruby.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set ruby.look.*` | Erscheinungsbild.

Optionen:

- 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`

##### Lua Optionen

Sektionen in Datei lua.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set lua.look.*` | Erscheinungsbild.

Optionen:

- 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`

##### Tcl Optionen

Sektionen in Datei tcl.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set tcl.look.*` | Erscheinungsbild.

Optionen:

- 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`

##### Guile Optionen

Sektionen in Datei guile.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set guile.look.*` | Erscheinungsbild.

Optionen:

- 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`

##### PHP Optionen

Sektionen in Datei php.conf:

Sektion | Steuerbefehl | Beschreibung
--- | --- | ---
`look` | `/set php.look.*` | Erscheinungsbild.

Optionen:

- 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. Unterstützung

Bevor man nach Unterstützung fragt sollte man sicherstellen, dass man sowohl die Dokumentation als auch die FAQ gelesen hat, welche mit WeeChat bereitgestellt wird.

Unterstützung im IRC findet man auf dem Server irc.libera.chat:

- offizielle Kanäle (Entwickler vertreten):

  - #weechat (englisch)

  - #weechat-fr (französisch)

- keine offiziellen Kanäle:

  - #weechat-de (deutsch)

  - #weechat-fi (finnisch)

Weitere Möglichkeiten der Unterstützung finden Sie unter this page ↗.