WeeChat Benutzerhandbuch ======================== Sébastien Helleu Diese Anleitung beschreibt den WeeChat Chat Client und ist Teil von WeeChat. Die aktuelle Version dieser Anleitung finden Sie auf: http://www.weechat.org/doc [[introduction]] Einleitung ---------- WeeChat (Wee Enhanced Environment for Chat) ist ein freier, schneller und schlanker Chat-Client der für viele Betriebssysteme entwickelt wird. [[features]] Funktionen ~~~~~~~~~~ wesentliche Merkmale: * Multi-Protokoll fähig (IRC, Jabber) * Multi-Server Verbindungen (mittels SSL, IPv6, proxy) * verschiedene GUIs: Curses (wxWidgets, Gtk und Qt sind in der Entwicklung) * klein, schnell und schlank * den eigenen persönlichen Bedürfnissen anpassbar und durch Erweiterungen und Skripten in der Funktionalität erweiterbar * IRC RFCs konform http://www.ietf.org/rfc/rfc1459.txt[1459], http://www.ietf.org/rfc/rfc2810.txt[2810], http://www.ietf.org/rfc/rfc2811.txt[2811], http://www.ietf.org/rfc/rfc2812.txt[2812] and http://www.ietf.org/rfc/rfc2813.txt[2813] * Betriebssystemunabhängig (GNU/Linux, *BSD, MacOS X, Windows und weitere) * 100% GPL, freie Software Die WeeChat Homepage findet man unter: http://www.weechat.org/ [[pre-requisites]] Vorbereitung ~~~~~~~~~~~~ Um WeeChat zu installieren wird folgendes benötigt: * ein laufendes GNU/Linux System (mit Kompilierungswerkzeugen für Quellpakete), oder ein kompatibles OS * 'root' Privilegien (um WeeChat im Systemverzeichnis zu installieren) * ncurses library [[install]] Installation ------------ [[binary_packages]] Binärpaket ~~~~~~~~~~ Binärpakete sind für folgende Distributionen erhältlich: * Debian (oder Debian kompatible Distribution): `apt-get install weechat-curses` * Mandriva/RedHat (oder eine RPM kompatible Distribution): `rpm -i /path/to/weechat-x.y.z-1.i386.rpm` * Gentoo: `emerge weechat` * Arch Linux: `pacman -S weechat` * Fedora Core: `yum install weechat` * Sourcemage: `cast weechat` zusätzliche Pakete können/sollten installiert werden. Zum Beispiel: weechat-plugins. Für andere Distributionen schauen Sie bitte in die jeweilige Anleitung, wie Pakete zu installieren sind. [[source_package]] Quellpakete ~~~~~~~~~~~ WeeChat kann mittels cmake oder autotools kompiliert werden (cmake sollte dabei die bevorzugte Methode sein). [[dependencies]] Abhängigkeiten ^^^^^^^^^^^^^^ folgende Tabelle beschreibt welche Pakete zwingend notwendig sind um WeeChat zu kompilieren und welche Pakete optional genutzt werden können. [width="80%",cols="4,^2,13",options="header"] |======================================== | Paket ^(1)^ | benötigt | Funktion | cmake | *ja* | zum kompilieren (autotools ist möglich. cmake wird aber empfohlen) | libncursesw5-dev ^(2)^ | *ja* | ncurses Oberfläche // TRANSLATION MISSING | gettext | nein | internationalization (translation of messages; base language is english) | libgcrypt11-dev | nein | SASL Authentifikation am IRC Server mittels DH-BLOWFISH Methode | libgnutls-dev (>= 2.2.0) | nein | SSL Verbindung zu einem IRC Server | libaspell-dev | nein | aspell Erweiterung | libperl-dev | nein | perl Erweiterung | python-dev | nein | python Erweiterung | ruby1.8-dev | nein | ruby Erweiterung | liblua5.1-0-dev | nein | lua Erweiterung | tcl-dev (>= 8.5) | nein | tcl Erweiterung | asciidoc (>= 8.5.0) | nein | erstellt Dokumentation (HTML Dateien) | source-highlight | nein | Syntax highlight für Quelltext in HTML Dokumentation |======================================== [NOTE] ^(1)^ Paketnamen wurden von der Debian GNU/Linux Distribution übernommen. Versionen und Paketnamen können für andere Distributionen abweichend sein. + ^(2)^ WeeChat kann auch mit libncurses5-dev kompiliert werden. Dies wird aber *NICHT* empfohlen (es treten dabei Darstellungsfehler mit breiten Zeichen auf). [[compile_with_cmake]] Kompilieren mit cmake ^^^^^^^^^^^^^^^^^^^^^ * Installation in das Systemverzeichnis (benötigt 'root' Privilegien): ---------------------------------------- $ mkdir build $ cd build $ cmake .. $ make % make install (als root) ---------------------------------------- * Installation in ein benutzerdefiniertes Verzeichnis: ---------------------------------------- $ mkdir build $ cd build $ cmake .. -DPREFIX=/Pfad/zum/Verzeichnis $ make $ make install ---------------------------------------- [[compile_with_autotools]] Kompilieren mit autotools ^^^^^^^^^^^^^^^^^^^^^^^^^ * Installation in das Systemverzeichnis (benötigt 'root' Privilegien): ---------------------------------------- $ ./configure $ make % make install (als root) ---------------------------------------- * Installation in ein benutzerdefiniertes Verzeichnis: ---------------------------------------- $ ./configure --prefix=/Pfad/zum/Verzeichnis $ make $ make install ---------------------------------------- [[git_sources]] 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 gewarnt! Um die GIT Quellen zu beziehen nutzen Sie folgende Befehle: ---------------------------------------- $ git clone git://git.sv.gnu.org/weechat.git ---------------------------------------- Sollten die autotools genutzt werden (und nicht cmake), muss dieses Skript ausgeführt werden: ---------------------------------------- $ ./autogen.sh ---------------------------------------- Folgen Sie bitte der Anleitung zur Erstellung aus Quellpaketen (siehe <>). [[report_crashes]] Abstürze melden ~~~~~~~~~~~~~~~ Falls es zu einem Absturz von WeeChat gekommen ist und Sie diesen Fehler melden wollen: * kompilieren Sie WeeChat mit Debug-Information (oder installieren Sie das Binärpaket mit Debug-Information) * aktivieren Sie 'core' Dateien auf Ihrem System * installieren Sie gdb [[debug_info]] Debug info ^^^^^^^^^^ Bei der Kompilierung mit cmake muss folgende Option gesetzt werden: ---------------------------------------- $ cmake .. -DCMAKE_BUILD_TYPE=Debug ---------------------------------------- Bei der Kompilierung mit autotools, ist debug standardmäßig aktiviert (`--with-debug=1`). Wird ein Binärpaket genutzt dann muss zusätzlich das Paket 'weechat-dbg' installiert werden. [[core_files]] Core Dateien ^^^^^^^^^^^^ Um 'core' Dateien zu aktivieren muss der `ulimit` Befehl genutzt werden. 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 ---------------------------------------- [[gdb_backtrace]] Rückverfolgung mit gdb ^^^^^^^^^^^^^^^^^^^^^^ Falls WeeChat abstürzen sollte wird auf Ihrem System eine 'core' bzw. 'core.12345' Datei ('12345' ist die Prozess-Id) erzeugt. Diese Datei wird in dem Verzeichnis erzeugt aus welchem Sie WeeChat gestartet haben (dies ist *nicht* das Verzeichnis in welchem sich WeeChat befindet!). Beispiel: 'weechat-curses' ist installiert in '/usr/bin/' und die 'core' Datei befindet sich in '/home/xxx/'. Nun wird gdb mit folgendem Befehl aufgerufen: ---------------------------------------- gdb /usr/bin/weechat-curses /home/xxx/core ---------------------------------------- [NOTE] Ist das Binärpaket 'weechat-dbg' (z.B. Debian) installiert dann sollte dieser Pfad zum starten von WeeChat genutzt werden: '/usr/lib/debug/usr/bin/weechat-curses' Nun startet man 'gdb' und führt den Befehl `bt full` innerhalb gdb aus um die Fehlermeldung auszugeben. Eine Fehlermeldung von gdb sieht z.B. wie folgt aus: ---------------------------------------- (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 #4 0x000000000044cb24 in hook_process_timer_cb (arg_hook_process=0x254eb90, remaining_calls=) at /some_path/src/core/wee-hook.c:1364 hook_process = 0x254eb90 status = #5 0x000000000044cc7d in hook_timer_exec () at /some_path/src/core/wee-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 }} write_fds = {fds_bits = {0 }} except_fds = {fds_bits = {0 }} max_fd = ---------------------------------------- Diese Fehlermeldung senden Sie bitte an den Entwickler und beschreiben was den Fehler ausgelöst hat. Danke für Ihre Mithilfe! [[usage]] Nutzung ------- [[running_weechat]] WeeChat starten ~~~~~~~~~~~~~~~ Befehlszeile: -a, --no-connect:: deaktiviert das automatische Verbinden mit den Servern beim Start von WeeChat -c, --colors:: Zeigt die Standardfarben im Terminal an. -d, --dir 'path':: legt den Konfigurationsordner für WeeChat fest (Voreinstellung: ~/.weechat) in dem die Erweiterungen, Skripten, Protokolldateien etc.pp. gesichert werden. Sollte das Verzeichnis nicht existieren wird es beim Start angelegt. -h, --help:: zeigt einen Hilfstext an -k, --keys:: zeigt die Standard-Tastaturbelegung an -l, --license:: zeigt die Lizenz von WeeChat an -p, --no-plugin:: unterbindet das Laden der Erweiterungen beim Programmstart -s, --no-script:: Skripten werden beim Programmstart nicht geladen -v, --version:: zeigt die Version von WeeChat an plugin:option:: Option für Erweiterung (siehe Dokumentation für weitere Einzelheiten) Um WeeChat zu starten muss folgender Befehl ausgeführt werden: ---------------------------------------- $ weechat-curses ---------------------------------------- Wird WeeChat zum ersten mal gestartet wird eine Konfigurationsdatei mit Standardparametern erstellt. Die Konfigurationsdatei heißt: '~/.weechat/weechat.conf'. Die Einstellungen für WeeChat können an die eigenen Bedürfnisse angepasst werden. Dazu sollten Veränderungen an der Konfigurationsdatei mit dem internen Befehl `/set` durchführt werden. (siehe <>). [[screen_layout]] Screen layout ~~~~~~~~~~~~~ Beispiel des WeeChat-Terminals: ........................................ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │Welcome to #test, this is a test channel │ │12:52:27 --> | flashy (n=flashcod@hellix.flashtux.org) has joined #test │@ChanServ │ │12:52:27 -- | Nicks #test: [@ChanServ @flashy +_FlashB0t joe mike] │@flashy │ │12:52:27 -- | Channel #test: 5 nicks (2 ops, 0 halfop, 1 voice, 2 normal) │+_FlashB0t│ │12:52:27 -- | Channel created on Tue Jan 27 06:30:17 2009 │joe │ │12:54:15 flashy | hey! │mike │ │12:55:01 joe | hi flashy! │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │[12:55] [6] [irc/freenode] 3:#test(+n){5}* [Act: 4:#abc(2,5), 6] │ │[flashy] hi joe!█ │ └─────────────────────────────────────────────────────────────────────────────────────────┘ ........................................ Der Bildschirm setzt sich aus folgenden Bereichen zusammen: * Chat-Bereich (in der Mitte des Bildschirms) enthält den geschrieben Text und für jede Zeile: ** die Uhrzeit ** Prefix (links von dem "|") ** Nachricht (rechts von dem "|") * Bars können um den Chat-Bereich angeordnet werden. Standard-Bars sind: ** '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 'status'-Bar besitzt als Standardeinträge: [width="100%",cols="^3,^3l,10",options="header"] |======================================== | Item | Beispiel | Beschreibung | time | [12:55] | Uhrzeit | buffer_count | [6] | Anzahl der geöffneten Buffer | buffer_plugin | [irc/freenode] | Erweiterung des aktuellen Buffers (IRC Erweiterung setzt den IRC Servername für den Buffer) | buffer_number | 3 | aktuelle Nummer des Buffers | buffer_name | #test(+n) | Name des aktuellen Buffers (mit Channel-Modi für IRC-Channels) | buffer_nicklist_count | {5} | Anzahl der Nicks in Nickliste | buffer_filter | * | Filteranzeige: `*` bedeutet das Zeilen gefiltert (unterdrückt) wurden. Ein leerer Eintrag zeigt an dass alle Zeilen dargestellt werden | lag | [Lag: 2.5] | Verzögerungsanzeige, in Sekunden (keine Anzeige falls Verzögerung gering) | hotlist | [Act: 4:#abc(2,5), 6] | Liste der Buffer mit Aktivität (ungelesene Nachrichten) (für das Beispiel: 2 Highlights und 5 ungelesene Nachrichten im Channel '#abc', eine ungelesene Nachricht in Buffer #6) | completion | abc(2) def(5) | Liste von Wörtern für Vervollständigung, die Zahl zeigt an wie viele Varianten möglich sind | scroll | -MORE(50)- | Scroll Indikator, zeigt an wie viele Zeilen unterhalb der zur Zeit dargestellten Zeile vorhanden sind |======================================== In der 'input' Bar lautet die Standardeinstellung: [width="100%",cols="^3,^6l,8",options="header"] |======================================== | Item | Beispiel | Beschreibung | input_paste | [Paste 7 lines ? [ctrl-Y] Ja [ctrl-N] Nein] | Nachfrage ob sieben Zeilen eingefügt werden sollen | input_prompt | [flashy] | input prompt (Nickname für den IRC) | away | (away) | Abwesenheitsanzeige | input_search | [Text search] | Textsuche | input_text | hi joe! | Text der eingegeben wird |======================================== [[key_bindings]] Standard Tastenbelegung ~~~~~~~~~~~~~~~~~~~~~~~ // 'C-' = ctrl, 'A-' = alt, 'S-' = shift [[key_bindings_command_line]] Tastenbefehle für die Befehlszeile ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [width="100%",cols="^.^3,.^10,.^5l",options="header"] |======================================== | Taste | Beschreibung | Befehl | @k(←) .2+| setzt den Cursor eine Position nach links .2+| /input move_previous_char | @k(C-)@k(b) | @k(→) .2+| setzt den Cursor eine Position nach rechts .2+| /input move_next_char | @k(C-)@k(f) | @k(C-)@k(←) .2+| springt in der Befehlszeile zum Anfang des vorherigen Wortes .2+| /input move_previous_word | @k(A-)@k(b) | @k(C-)@k(→) .2+| springt in der Befehlszeile zum Anfang des nächsten Wortes .2+| /input move_next_word | @k(A-)@k(f) | @k(Home) .2+| springt zum Anfang der Befehlszeile .2+| /input move_beginning_of_line | @k(C-)@k(a) | @k(End) .2+| springt ans Ende der Befehlszeile .2+| /input move_end_of_line | @k(C-)@k(e) | @k(C-)@k(c) , @k(b) | fügt Steuerzeichen für fett geschrieben Text ein | /input insert \x02 | @k(C-)@k(c) , @k(c) | fügt Steuerzeichen für Textfarbe ein | /input insert \x03 | @k(C-)@k(c) , @k(i) | fügt Steuerzeichen für kursiven Text ein | /input insert \x1D | @k(C-)@k(c) , @k(o) | fügt Steuerzeichen für Standardfarbe ein | /input insert \x0F | @k(C-)@k(c) , @k(r) | fügt Steuerzeichen für Hintergrundfarbe ein | /input insert \x12 | @k(C-)@k(c) , @k(u) | fügt Steuerzeichen für unterstrichenen Text ein | /input insert \x15 | @k(Del) .2+| entfernt in der Befehlszeile das nächste Zeichen .2+| /input delete_next_char | @k(C-)@k(d) | @k(Backsp.) .2+| entfernt in der Befehlszeile das vorherige Zeichen .2+| /input delete_previous_char | @k(C-)@k(h) | @k(C-)@k(k) | entfernt alle Zeichen vom Cursor bis zum Ende der Zeile (Zeichenkette wird in Zwischenablage kopiert) | /input delete_end_of_line | @k(C-)@k(r) | Textsuche im Verlaufsspeicher des Buffers (siehe <>) | /input search_text | @k(C-)@k(t) | Zeichen austauschen | /input transpose_chars | @k(C-)@k(u) | entfernt alle Zeichen vom Cursor bis zum Anfang der Zeile (Zeichenkette wird in Zwischenablage kopiert) | /input delete_beginning_of_line | @k(C-)@k(w) | entfernt das Wort links vom Cursor (entferntes Wort wird in Zwischenablage kopiert) | /input delete_previous_word | @k(C-)@k(y) | fügt Zeichenkette aus Zwischenablage ein | /input clipboard_paste | @k(C-)@k(_) | Rückgängig machen der letzten Aktion, in der Befehlszeile | /input undo | @k(A-)@k(_) | Wiederherstellen der letzten Aktion, in der Befehlszeile | /input redo | @k(Tab) | Vervollständigung von Befehlen oder Nicks (nochmaliges @k(Tab): findet nächste Vervollständigung) | /input complete_next | @k(S-)@k(Tab) | ohne Vervollständigung: führt eine teilweise Vervollständigung durch. Bei unerledigter Vervollständigung : wird die vorherige Vervollständigung genutzt | /input complete_previous | @k(Enter) .3+| führt einen Befehl aus oder sendet den Text (im Such-Modus: stoppt Suche) .3+| /input return | @k(C-)@k(j) | @k(C-)@k(m) | @k(↑) | ruft vorherigen Befehl oder Nachricht aus dem Verlaufsspeicher auf (im Such-Modus: rückwärts suchen) | /input history_previous | @k(↓) | ruft nächsten Befehl oder Nachricht aus dem Verlaufsspeicher auf (im Such-Modus: vorwärts suchen) | /input history_next | @k(C-)@k(↑) | ruft vorherigen Befehl/Nachricht aus dem globalen Verlaufsspeicher auf (für alle Buffer) | /input history_global_previous | @k(C-)@k(↓) | ruft nächsten Befehl/Nachricht aus dem globalen Verlaufsspeicher auf (für alle Buffer) | /input history_global_next | @k(A-)@k(d) | löscht das Wort rechts vom Cursor (Zeichenkette wird in Zwischenablage kopiert) | /input delete_next_word | @k(A-)@k(k) | zeigt den Tastencode, einschließlich des eingebundenen Befehls, einer Tastenkombination an und fügt diesen in die Befehlszeile ein | /input grab_key_command | @k(A-)@k(r) | komplette Eingabezeile löschen| /input delete_line |======================================== [[key_bindings_buffers_windows]] Tastenbefehle für Buffer / Fenster ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [width="100%",cols="^.^3,.^10,.^5l",options="header"] |======================================== | Taste | Beschreibung | Befehl | @k(C-)@k(l) | Fenster wird neu gezeichnet | /window refresh | @k(C-)@k(s) , @k(C-)@k(u) | setzt für alle Buffer die Markierung für ungelesene Nachrichten | /input set_unread | @k(C-)@k(x) | sind mehrere Buffer zu einem Buffer zusammen gefügt wechselt man diese durch | /input switch_active_buffer | @k(PgUp) | eine Seite im Verlaufsspeicher des Buffers nach oben blättern | /window page_up | @k(PgDn) | eine Seite im Verlaufsspeicher des Buffer nach unten blättern | /window page_down | @k(A-)@k(PgUp) | einige Zeilen im Verlaufsspeicher des Buffer nach oben blättern | /window scroll_up | @k(A-)@k(PgDn) | einige Zeilen im Verlaufsspeicher des Buffer nach unten blättern | /window scroll_down | @k(A-)@k(Home) | springt zur ersten Zeile des Verlaufsspeichers des aktuellen Buffers| /window scroll_top | @k(A-)@k(End) | springt zur letzten Zeile des Verlaufsspeichers des aktuellen Buffers | /window scroll_bottom | @k(A-)@k(←) .4+| zum vorherigen Buffer springen .4+| /buffer -1 | @k(A-)@k(↑) | @k(C-)@k(p) | @k(F5) | @k(A-)@k(→) .4+| zum nächsten Buffer springen .4+| /buffer +1 | @k(A-)@k(↓) | @k(C-)@k(n) | @k(F6) | @k(F7) | zum vorherigen Fenster wechseln | /window -1 | @k(F8) | zum nächsten Fenster wechseln | /window +1 | @k(F9) | Titel des Buffers nach links verschieben | /bar scroll title * -30% | @k(F10) | Titel des Buffers nach rechts verschieben | /bar scroll title * +30% | @k(F11) | Nickliste um eine Seite nach oben blättern | /bar scroll nicklist * -100% | @k(F12) | Nickliste um eine Seite nach unten blättern | /bar scroll nicklist * +100% | @k(A-)@k(F11) | springt zum Anfang der Nickliste | /bar scroll nicklist * b | @k(A-)@k(F12) | springt zum Ende der Nickliste | /bar scroll nicklist * e | @k(A-)@k(a) | wechselt zum nächsten Buffer mit Aktivität (nach Priorität: highlight, Nachricht, ...) | /input jump_smart | @k(A-)@k(h) | löscht Hotliste (Aktivitätsanzeige für die Buffer) | /input hotlist_clear | @k(A-)@k(j) , @k(A-)@k(l) | wechselt zum letzten Buffer | /input jump_last_buffer | @k(A-)@k(j) , @k(A-)@k(r) | wechselt zum IRC RAW Buffer | /server raw | @k(A-)@k(j) , @k(A-)@k(s) | wechselt zum IRC Server Buffer | /server jump | @k(A-)@k(0...9) | wechselt zum Buffer mit der Nummer (0 = 10) | /buffer *N | @k(A-)@k(j) , @k(01...99) | wechselt zum Buffer mit der angegeben Nummer | /buffer NN // TRANSLATION MISSING | @k(A-)@k(m) | Toggle mouse | /mouse toggle | @k(A-)@k(n) | springt zur nächsten Highlight Nachricht | /window scroll_next_highlight | @k(A-)@k(p) | springt zur vorherigen Highlight Nachricht | /window scroll_previous_highlight | @k(A-)@k(u) | springt zur ersten ungelesenen Zeile im Buffer | /input scroll_unread | @k(A-)@k(w) , @k(A-)@k(↑) | wechselt zum oberen Fenster | /window up | @k(A-)@k(w) , @k(A-)@k(↓) | wechselt zum unteren Fenster | /window down | @k(A-)@k(w) , @k(A-)@k(←) | wechselt zum linken Fenster | /window left | @k(A-)@k(w) , @k(A-)@k(→) | wechselt zum rechten Fenster | /window right | @k(A-)@k(w) , @k(A-)@k(b) | passt die Größe aller Fenster an | /window balance | @k(A-)@k(w) , @k(A-)@k(s) | Wechselt Buffer von zwei Fenstern | /window swap | @k(A-)@k(z) | Zoom für aktuelles Fenster (nochmals @k(A-)@k(z): stellt die vorherigen Einstellungen wieder her) | /window zoom | @k(A-)@k(<) | springt zum letzten besuchten Buffer | /input jump_previously_visited_buffer | @k(A-)@k(>) | springt zum nächsten besuchten Buffer | /input jump_next_visited_buffer | @k(A-)@k(=) | schaltet Filterfunktion an/aus | /filter toggle |======================================== [[key_bindings_search_context]] Tasten für "Suchen"-Kontext ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Diese Tasten werden im Kontext "search" verwendet (wenn @k(C-)@k(r) genutzt wird um in einem Buffer nach einem Text zu suchen). [width="100%",cols="^.^3,.^10,.^5l",options="header"] |======================================== | Taste | Beschreibung | Befehl | @k(C-)@k(r) | auf Groß-/Kleinschreibung umschalten | /input search_switch_case | @k(↑) | sucht vorheriger Zeile | /input search_previous | @k(↓) | sucht nächste Zeile | /input search_next | @k(Enter) .3+| Suche abbrechen .3+| /input search_stop | @k(C-)@k(j) | @k(C-)@k(m) |======================================== // TRANSLATION MISSING [[key_bindings_cursor_context]] Keys for "cursor" context ^^^^^^^^^^^^^^^^^^^^^^^^^ These keys are used in context "cursor" (free movement of cursor on screen). [width="100%",cols="^.^3,^.^3,.^10,.^5l",options="header"] |======================================== | Key | Area | Description | Command | @k(↑) | - | Move cursor one line up | /cursor move up | @k(↓) | - | Move cursor one line down | /cursor move down | @k(←) | - | Move cursor one column left | /cursor move left | @k(→) | - | Move cursor one column right | /cursor move right | @k(A-)@k(↑) | - | Move cursor one area up | /cursor move area_up | @k(A-)@k(↓) | - | Move cursor one area down | /cursor move area_down | @k(A-)@k(←) | - | Move cursor one area left | /cursor move area_left | @k(A-)@k(→) | - | Move cursor one area right | /cursor move area_right | @k(b) | nicklist | Ban nick | /ban ${nick} | @k(k) | nicklist | Kick nick | /kick ${nick} | @k(K) | nicklist | Kick and ban nick | /kickban ${nick} | @k(q) | nicklist | Open query with nick | /query ${nick};/cursor stop | @k(w) | nicklist | Do a whois on nick | /whois ${nick} | @k(Enter) .3+| - .3+| Stop cursor mode .3+| /cursor stop | @k(C-)@k(j) | @k(C-)@k(m) |======================================== // TRANSLATION MISSING [[key_bindings_mouse_context]] Keys for "mouse" context ^^^^^^^^^^^^^^^^^^^^^^^^ These keys are used in context "mouse", namely when a mouse event occurs. [width="100%",cols="^.^3,^.^3,^.^3,.^10,.^5l",options="header"] |======================================== | Button | Gesture | Area | Description | Command | ◾◽◽ | left | chat | zum vorherigen Buffer springen | /buffer +1 | ◾◽◽ | right | chat | zum nächsten Buffer springen | /buffer +1 | ◾◽◽ | left (long) | chat | Switch to first buffer | /buffer 1 | ◾◽◽ | right (long) | chat | wechselt zum letzten Buffer | /input jump_last_buffer | wheel ⇑ | - | chat | einige Zeilen im Verlaufsspeicher des Buffer nach oben blättern | /window scroll_up | wheel ⇓ | - | chat | einige Zeilen im Verlaufsspeicher des Buffer nach unten blättern | /window scroll_down | ◾◽◽ | up | nicklist | Nickliste um eine Seite nach oben blättern | /bar scroll nicklist * -100% | ◾◽◽ | down | nicklist | Nickliste um eine Seite nach unten blättern | /bar scroll nicklist * +100% | ◾◽◽ | up (long) | nicklist | springt zum Anfang der Nickliste | /bar scroll nicklist * b | ◾◽◽ | down (long) | nicklist | springt zum Ende der Nickliste | /bar scroll nicklist * e | ◾◽◽ | - | nicklist | Open query with nick | /query ${nick} | ◽◽◾ | - | nicklist | Do a whois on nick | /whois ${nick} | ◾◽◽ | left | nicklist | Kick nick | /kick ${nick} | ◾◽◽ | left (long) | nicklist | Kick and ban nick | /kickban ${nick} | ◽◽◾ | left | nicklist | Ban nick | /ban ${nick} | wheel ⇑ | - | any bar | Scroll bar by -10% | /bar scroll ${_bar_name} * -10% | wheel ⇓ | - | any bar | Scroll bar by +10% | /bar scroll ${_bar_name} * +10% | ◽◾◽ | - | anywhere | Start cursor mode at this point | /cursor go ${_x},${_y} |======================================== [[command_line]] Befehlszeile ~~~~~~~~~~~~ In der WeeChat Befehlszeile (am unteren Rand des Fensters) können Befehle ausgeführt oder ein Text in den Buffer geschrieben werden. [[command_line_syntax]] 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 ---------------------------------------- [[command_line_colors]] 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 @k(C-)@k(c), gefolgt von einem der folgenden Zeichen, genutzt werden: @k(C-)@k(c) , @k(b):: Text wird fett dargestellt @k(C-)@k(c) , @k(c) , @k(xx):: Textfarbe `xx` (siehe Farbtabelle) @k(C-)@k(c) , @k(c) , @k(xx,yy):: Textfarbe `xx` und Hintergrundfarbe `yy` (siehe Farbtabelle) @k(C-)@k(c) , @k(o):: deaktiviert Farben und Attribute @k(C-)@k(c) , @k(r):: Farben umkehren (kehrt Textfarbe und Hintergrundfarbe um) @k(C-)@k(c) , @k(u):: Text wird mit Unterstrich dargestellt [NOTE] Der selbe Befehl (ohne den Wert für @k(C-)@k(c) , @k(c)) sollte genutzt werden um die Farbkodierungen bzw. Attribute zu deaktivieren. Farbtabelle für @k(C-)@k(c) , @k(c): [width="50%",cols="^1m,3,3",options="header"] |======================================== | Code | IRC | WeeChat (curses) | 00 | weiß | white | 01 | schwarz | black | 02 | dunkelblau | blue | 03 | dunkelgrün | green | 04 | hellrot | lightred | 05 | dunkelrot | red | 06 | magenta | magenta | 07 | orange | brown | 08 | gelb | yellow | 09 | hellgrün | lightgreen | 10 | türkis | cyan | 11 | hell türkis | lightcyan | 12 | hellblau | lightblue | 13 | hell magenta | lightmagenta | 14 | grau | gray | 15 | hellgrau | white |======================================== Beispiel: Im Buffer wird "Hallo an alle!" ausgegeben. Dabei wird "Hallo" in fett und hellblau und "an alle" rot und unterstrichen dargestellt. ---------------------------------------- ^Cc12^CbHallo ^Cb^Cc04^Cuan alle^Cu^Cc! ---------------------------------------- [[weechat_options]] WeeChat Optionen (weechat.conf) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include::autogen/user/weechat_options.txt[] [[weechat_commands]] WeeChat Befehle ~~~~~~~~~~~~~~~ include::autogen/user/weechat_commands.txt[] [[colors]] Farben ~~~~~~ WeeChat kann bis zu 256 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: [width="50%",cols="8,>2,>2",options="header"] |======================================== | $TERM | Farben | Paare ^(1)^ | "rxvt-unicode", "xterm",... | 88 | 256 | "rxvt-256color", "xterm-256color",... | 256 | 32767 | "screen" | 8 | 64 | "screen-256color" | 256 | 32767 |======================================== [NOTE] ^(1)^ Auch falls die Terminal-Emulation mehr als 256 Farbpaare unterstützten sollte können lediglich 256 Farbpaare durch WeeChat genutzt werden, dies ist eine Einschränkung von ncurses. Mittels `weechat-curses --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' * screen wird nicht genutzt: 'xterm-256color', 'rxvt-256color', 'putty-256color',... [NOTE] 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 ---------------------------------------- Enthält die 'TERM'-Umgebungsvariable einen falschen Wert und WeeChat wird bereits ausgeführt, keine Panik! Mittels dem Skript 'shell.py' kann eine Änderung der Umgebungsvariable durchgeführt werden, ohne das WeeChat neu gestartet werden muss: ---------------------------------------- /shell setenv TERM=screen-256color /upgrade ---------------------------------------- [[colors_basic]] Basisfarben ^^^^^^^^^^^ Basisfarben in WeeChat sind: [width="50%",cols="^3m,8",options="header"] |======================================== | 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ß |======================================== [[colors_extended]] erweiterte Farbpalette ^^^^^^^^^^^^^^^^^^^^^^ WeeChat belegt die Farbpaare dynamisch, sobald die Farbe genutzt werden sollte. 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 @k(A-)@k(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 darzustellen: ---------------------------------------- /set weechat.color.chat_time 214 ---------------------------------------- oder falls man den Hintergrund der Statusbar in einm sehr dunklen Grün haben möchte: ---------------------------------------- /set weechat.bar.status.color_bg 22 ---------------------------------------- [[colors_aliases]] Alias ^^^^^ Man kann einer Farbe einen Alias zuordnen um diesen Alias anstelle einer Zahl 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 ---------------------------------------- [[colors_attributes]] Attribute ^^^^^^^^^ Er ist möglich einer Farbe ein Attribut hinzuzufügen. Dazu wird dem Farbnamen oder der Farbnummer ein- oder mehrere Attribute vorangestellt. * "*": fett * "!": invertierte Darstellung * "_": unterstrichen 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 Statusbar 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 ---------------------------------------- [[plugins]] Erweiterungen ------------- Um mehr über Erweiterungen- und Skriptenprogrammierung (mittels API) zu erfahren, sollten Sie die 'WeeChat Plugin API Reference' oder 'WeeChat Scripting Guide' lesen. [[plugins_in_weechat]] Erweiterungen in WeeChat ~~~~~~~~~~~~~~~~~~~~~~~~ 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 Session von WeeChat Erweiterungen nachträglich zu laden oder zu entfernen. 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. 'perl' mittels dem Befehl `/perl` geladen wird. Mit dem Befehl `/plugin` kann eine Erweiterung geladen bzw. entfernt werden. Auch können mit dem Befehl alle installierten Erweiterungen aufgelistet werden. Wird eine Erweiterung entfernt hat dies Einfluss auf die von dieser Erweiterung geöffneten Buffer. Diese Buffer werden dann geschlossen. Beispiele wie man Erweiterungen lädt, entfernt und auflistet: ---------------------------------------- /plugin load irc /plugin unload irc /plugin list ---------------------------------------- Standarderweiterungen: [width="50%",cols="^1,5",options="header"] |======================================== | Erweit. | Beschreibung | alias | definiert Alias für Befehle | aspell | Rechtschreibprüfung für Befehlszeile | charset | Zeichensatz (de)-kodierung in Buffern | demo | Demo Erweiterung (nicht standardmäßig kompiliert) | fifo | FIFO Pipe die zur Fernsteuerung von WeeChat genutzt werden kann | irc | IRC Chat-Protokoll | logger | erstellt Protokolldateien von Buffern | relay | Daten via Netzwerk übermitteln (IRC Proxy) | rmodifier | wandelt Schlüsselwörter mit regulären Ausdrücken | perl | Perl-Skript API | python | Python-Skript API | ruby | Ruby-Skript API | lua | Lua-Skript API | tcl | Tcl-Skript API | xfer | Datentransfer und Direktchat |======================================== [[alias_plugin]] Alias Erweiterung ~~~~~~~~~~~~~~~~~ Die Alias-Erweiterung erlaubt es, für Befehle, sogenannte Kurzbefehle (einen Alias) zu erstellen. [[alias_commands]] Befehle ^^^^^^^ include::autogen/user/alias_commands.txt[] [[aspell_plugin]] Aspell Erweiterung ~~~~~~~~~~~~~~~~~~ Mit der ASpell Erweiterung findet eine Rechtschreibprüfung Einzug in WeeChat. Dabei ist es möglich mehrere Wörterbücher für einen Buffer zu nutzen. [[aspell_options]] Optionen (aspell.conf) ^^^^^^^^^^^^^^^^^^^^^^ include::autogen/user/aspell_options.txt[] [[aspell_commands]] Befehle ^^^^^^^ include::autogen/user/aspell_commands.txt[] [[aspell_speller_options]] 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 aspell.option.ignore-case "true" ---------------------------------------- [[charset_plugin]] Charset Erweiterung ~~~~~~~~~~~~~~~~~~~ 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 ........................................ [[charset_options]] Optionen (charset.conf) ^^^^^^^^^^^^^^^^^^^^^^^ include::autogen/user/charset_options.txt[] [[charset_commands]] Befehle ^^^^^^^ include::autogen/user/charset_commands.txt[] [[charset_set]] 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-Channel (oder in einem privaten Buffer) zu ändern wird der selbe Befehl im entsprechenden Buffer genutzt. Um sich alle genutzten Zeichensätze anzeigen zu lassen wird folgender Befehl genutzt: ---------------------------------------- /set charset.* ---------------------------------------- [[charset_troubleshooting]] Fehlersuche ^^^^^^^^^^^ sollten Probleme bei der Zeichensatzdarstellung auftreten dann werfen Sie bitte einen Blick in die 'WeeChat FAQ'. [[fifo_plugin]] Fifo Erweiterung ~~~~~~~~~~~~~~~~ Sie können WeeChat fern steuern indem Sie Befehle oder einen Text an die FIFO Pipe schicken (dazu muss die Option "plugins.var.fifo.fifo" aktiviert sein (standardmäßig ist diese Option aktiviert). Die FIFO pipe findet man in '~/.weechat/' und heisst 'weechat_fifo_xxxx' ('xxxx' ist dabei die ID (PID) der laufenden WeeChat Session). Die Syntax der FIFO Pipe Befehle/Text sieht wie folgt aus: ........................................ plugin.buffer *hier Text oder Befehl *hier Text oder Befehl ........................................ einige Beispiele: * Den eigenen Nick auf dem IRC Server freenode in "newnick" ändern: ---------------------------------------- $ echo 'irc.server.freenode */nick newnick' >~/.weechat/weechat_fifo_12345 ---------------------------------------- * Den Text 'Hallo!' in den Channel #weechat schreiben: ---------------------------------------- $ echo 'irc.freenode.#weechat *Hallo!' >~/.weechat/weechat_fifo_12345 ---------------------------------------- * Einen Text im aktuellen Buffer ausgeben: ---------------------------------------- $ echo '*hello!' >~/.weechat/weechat_fifo_12345 ---------------------------------------- * sendet zwei Befehle um alle Perl-Skripten zu entfernen und dann neu zu laden (die beiden Befehle müssen mit "\n" getrennt werden): ---------------------------------------- $ echo -e '*/perl unload\n*/perl autoload' >~/.weechat/weechat_fifo_12345 ---------------------------------------- Das nachfolgende Skript sendet einen Befehl an alle laufenden WeeChat Instanzen: [source,shell] ---------------------------------------- #!/bin/sh if [ $# -eq 1 ]; then for fifo in ~/.weechat/weechat_fifo_* do echo -e "$1" >$fifo done fi ---------------------------------------- Falls man das Skript "auto_weechat_command" benennt ruft man es wie folgt auf: ---------------------------------------- $ ./auto_weechat_command 'irc.freenode.#weechat *Hallo' ---------------------------------------- [[irc_plugin]] IRC Erweiterung ~~~~~~~~~~~~~~~ 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 <>). [[irc_command_line_options]] Kommandozeilen Befehle ^^^^^^^^^^^^^^^^^^^^^^ Es ist möglich eine oder mehrere URL von IRC Servern zu übergeben: ---------------------------------------- irc[6][s]://[pseudo[:mot_passe]@]irc.example.org[:port][/channel][,channel[...] ---------------------------------------- Beispiel: Anmelden beim Server 'irc.freenode.net' mit dem Nick 'nono' und betreten der Channels '#weechat' und '#toto' (Standardport (6667) wird genutzt): ---------------------------------------- $ weechat-curses irc://nono@irc.freenode.net/#weechat,#toto ---------------------------------------- [[irc_options]] Optionen (irc.conf) ^^^^^^^^^^^^^^^^^^^ include::autogen/user/irc_options.txt[] [[irc_commands]] Befehle ^^^^^^^ include::autogen/user/irc_commands.txt[] [[irc_ssl_certificates]] SSL Zertifikate ^^^^^^^^^^^^^^^ Wenn eine Verbindung mittels SSL zu einem IRC Server hergestellt wird dann überprüft WeeChat immer ob dieser Verbindung sicher ist. Einige Optionen dienen dazu eine SSL Verbindung zu nutzen: weechat.network.gnutls_ca_file:: Pfad zu einer Datei mit SSL Zertifikaten (Standardpfad: "%h/ssl/CAs.pem") irc.server.xxx.ssl_cert:: Datei mit den SSL Zertifikaten die genutzt werden um automatisch Ihren Nick zu identifizieren (zum Beispiel CertFP auf oftc, siehe unten) irc.server.xxx.ssl_dhkey_size:: Größe des Schlüssels der genutzt werden soll beim Schlüsseltausch mittels der Diffie-Hellman Methode (Standardwert: 2048) irc.server.xxx.ssl_verify:: überprüft ob der SSL Verbindung uneingeschränkt vertraut werden kann (Standardwert: AN) [NOTE] Die Option "ssl_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. [[irc_connect_oftc_with_certificate]] erstes Beispiel: Verbindung zu oftc und Überprüfung der Zertifikate +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * Importieren Sie die Zertifikate in einer Shell: ---------------------------------------- $ mkdir ~/.weechat/ssl $ wget -O ~/.weechat/ssl/CAs.pem http://www.spi-inc.org/secretary/spi-cacert.crt ---------------------------------------- Hinweis: es ist möglich mehrere Zertifikate in der Datei CAs.pem zu halten. * In WeeChat startet man nun eine Verbindung zum "oftc" Server (der vorher angelegt werden musste): ---------------------------------------- /connect oftc ---------------------------------------- [[irc_connect_oftc_with_certfp]] zweites Beispiel: Verbindung zu oftc mittels CertFP +++++++++++++++++++++++++++++++++++++++++++++++++++ * Erstellen Sie ein Zertifikat in der Shell: ---------------------------------------- $ openssl req -nodes -newkey rsa:2048 -keyout nick.key -x509 -days 365 -out nick.cer $ cat nick.cer nick.key > ~/.weechat/ssl/nick.pem ---------------------------------------- * In WeeChat startet man nun eine Verbindung zum "oftc" Server (der vorher angelegt werden musste): ---------------------------------------- /set irc.server.oftc.ssl_cert "%h/ssl/nick.pem" /connect oftc /msg nickserv cert add ---------------------------------------- Für weiterreichende Informationen lesen Sie bitte: http://www.oftc.net/oftc/NickServ/CertFP [[irc_tor_freenode]] Verbindung zu Freenode mittels TOR/SASL herstellen ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Neben der Möglichkeit eine Verbindung zum Freenode Server mittels SSL aufzubauen, kann man außerdem eine Verbindung via TOR (https://www.torproject.org/) herstellen. Dies dient dazu die eigene Privatsphäre und Sicherheit im Internet zu erhöhen. Zuerst sollte man sicher gehen, dass WeeChat mit <> kompiliert wurde (sofern WeeChat aus den Quellen erstellt wurde); es ist nicht verpflichtend, allerdings bietet DH-BLOWFISH eine größere Sicherheit als eine PLAIN Authentifikation mittels SASL. 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 ---------------------------------------- Nun erstellt man einen neuen Server, zum Beispiel: ---------------------------------------- /server add freenode-tor p4fsi4ockecnea7l.onion ---------------------------------------- Der Proxy muss für TOR angelegt werden: ---------------------------------------- /set irc.server.freenode-tor.proxy "tor" ---------------------------------------- Die SASL Authentifikation einstellen: ---------------------------------------- /set irc.server.freenode-tor.sasl_mechanism dh-blowfish /set irc.server.freenode-tor.sasl_username "your_nickname" /set irc.server.freenode-tor.sasl_password "your_password" ---------------------------------------- Zum Abschluss stellt man eine Verbindung zum Server her: ---------------------------------------- /connect freenode-tor ---------------------------------------- Um mehr über Freenode und TOR zu erfahren: http://freenode.net/irc_servers.shtml#tor [[irc_smart_filter_join_part_quit]] einfacher Filter für join/part/quit Nachrichten ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Es existiert ein einfacher Filter für join/part/quit Nachrichten falls ein Nick für eine vorgegebene Zeit in einem Channel inaktiv gewesen ist. Diese Funktion ist standardmäßig aktiviert, aber Sie müssen einen Filter erstellen damit solche Nachrichten im Buffer unterdrückt werden. Ein Beispiel: ---------------------------------------- /filter add irc_smart * irc_smart_filter * ---------------------------------------- Dabei ist es natürlich möglich den Filter in der Form einzurichten dass er nur für einen Channel Gültigkeit besitzt oder aber für mehrere Channels die mit dem selben Namen beginnen (siehe `/help filter`): ---------------------------------------- /filter add irc_smart_weechat irc.freenode.#weechat irc_smart_filter * /filter add irc_smart_weechats irc.freenode.#weechat* irc_smart_filter * ---------------------------------------- Sie können auch nur join oder part/quit Nachrichten unterdrücken: ---------------------------------------- /set irc.look.smart_filter_join on /set irc.look.smart_filter_quit on ---------------------------------------- Zusätzlich kann auch eine Verzögerung (in Minuten) eingestellt werden: ---------------------------------------- /set irc.look.smart_filter_delay 5 ---------------------------------------- Falls ein Nick in den letzten fünf Minuten nicht aktiv gewesen ist werden seine join und/oder part/quit Nachrichten im Channel unterdrückt. [[irc_ctcp_replies]] 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!" ---------------------------------------- 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.freenode.version "WeeChat $version (for freenode)" ---------------------------------------- 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 ---------------------------------------- Folgende Platzhalter können in den CTCP-Antworten genutzt werden. Diese werden dann mit dem entsprechenden Wert ersetzt: [width="100%",cols="^2l,4,8l",options="header"] |======================================== | Platzhalter | Beschreibung | Wert/Beispiel | $clientinfo | Liste der CTCP Antworten | ACTION DCC CLIENTINFO FINGER PING SOURCE TIME USERINFO VERSION | $version | WeeChat Version | 0.3.0 | $compilation | Datum der Kompilierung | Sep 13 2009 | $osinfo | Info über das genutzte OS | Linux 2.6.31 / i686 | $site | WeeChat Seite | http://www.weechat.org | $download | WeeChat, download Seite | http://www.weechat.org/download | $time | aktuelle Uhrzeit/Datum | Sun Sep 13 15:48:31 2009 | $username | Username beim IRC Server | Nick | $realname | Realname beim IRC Server | mein Name |======================================== Falls CTCP Optionen nicht festgelegt sind, lauten die CTCP Antworten: [width="100%",cols="^2,4l,8l",options="header"] |======================================== | CTCP | Antwortformat | Beispiel | CLIENTINFO | $clientinfo | ACTION DCC CLIENTINFO FINGER PING SOURCE TIME USERINFO VERSION | FINGER | WeeChat $version | WeeChat 0.3.0 | SOURCE | $download | http://www.weechat.org/download | TIME | $time | Sun Sep 13 15:48:31 2009 | USERINFO | $username ($realname) | Nick (mein Name) | VERSION | WeeChat $version ($compilation) | WeeChat 0.3.0 (Sep 13 2009) |======================================== [[irc_target_buffer]] 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: [width="60%",cols="^1m,^3m,8",options="header"] |======================================== | 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 | 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 | 344 | reop | channel reop | 345 | reop | channel reop (Ende) | 346 | invitelist | Einladung list | 347 | invitelist | Einladung list (Ende) | 348 | exceptionlist | exception list | 349 | exceptionlist | exception list (end) | 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) | 432 | | fehlerhafter Nickname | 433 | | Nickname wird schon verwendet | 438 | | nicht autorisiert um Nicknamen zu ändern | 671 | whois | whois (sichere Verbindung) | 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: `freenode.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 "freenode" Server: ---------------------------------------- /set irc.msgbuffer.freenode.invite current ---------------------------------------- * die Nachricht "303" (ison) wird im WeeChat "core" Buffer angezeigt: ---------------------------------------- /set irc.msgbuffer.303 weechat ---------------------------------------- [[logger_plugin]] Logger Erweiterung ~~~~~~~~~~~~~~~~~~ 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. [[logger_options]] Optionen (logger.conf) ^^^^^^^^^^^^^^^^^^^^^^ include::autogen/user/logger_options.txt[] [[logger_commands]] Befehle ^^^^^^^ include::autogen/user/logger_commands.txt[] [[logger_log_levels]] Log Levels ^^^^^^^^^^ 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 Channel 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 Channel auf "3" wird Weechat alle Nachrichten protokollieren, ausgenommen join/part/quit Nachrichten. weitere Beispiele: * Level 3 für IRC Channel #weechat nutzen: ---------------------------------------- /set logger.level.irc.freenode.#weechat 3 ---------------------------------------- * Level 3 für freenode Server Buffer nutzen: ---------------------------------------- /set logger.level.irc.server.freenode 3 ---------------------------------------- * Level 3 für alle Channels auf dem Server freenode nutzen: ---------------------------------------- /set logger.level.irc.freenode 3 ---------------------------------------- * Level 2 für alle IRC Buffers nutzen: ---------------------------------------- /set logger.level.irc 2 ---------------------------------------- [[logger_filenames_masks]] Dateinamenmaske ^^^^^^^^^^^^^^^ Es ist möglich eine Dateinamenmaske für jeden Buffer zu erstellen und diese Maske mit lokalen Buffervariablen zu füllen. Um zu sehen welche lokalen Variabel es gibt: ---------------------------------------- /buffer localvar ---------------------------------------- Zum Beispiel für den Buffer "irc.freenode.#weechat". WeeChat sucht in dieser Reihenfolge nach einer Maske: ---------------------------------------- logger.mask.irc.freenode.#weechat logger.mask.irc.freenode logger.mask.irc logger.file.mask ---------------------------------------- Dies bedeutet dass man eine Maske speziell für einen IRC Server ("logger.mask.irc.freenode") anlegen kann oder aber global für die Erweiterung ("logger.mask.irc"). [[logger_files_by_date]] 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: ........................................ ~/.weechat/ |--- logs/ |--- 2010/ |--- 11/ | irc.server.freenode.weechatlog | irc.freenode.#weechat.weechatlog |--- 2010/ |--- 12/ | irc.server.freenode.weechatlog | irc.freenode.#weechat.weechatlog ........................................ [[logger_irc_files_by_server_channel]] Protokolldateien nach Server und Channel ++++++++++++++++++++++++++++++++++++++++ Soll für jeden IRC Server ein Verzeichnis erstellt werden mit jeweils einer Protokolldatei für jeden Channel: ---------------------------------------- /set logger.mask.irc "irc/$server/$channel.weechatlog" ---------------------------------------- Erstellt eine Struktur in folgender Form: ........................................ ~/.weechat/ |--- logs/ |--- irc/ |--- freenode/ | freenode.weechatlog | #weechat.weechatlog | #mychan.weechatlog |--- oftc/ | oftc.weechatlog | #chan1.weechatlog | #chan2.weechatlog ........................................ [[relay_plugin]] Relay Erweiterung ~~~~~~~~~~~~~~~~~ Die Relay-Erweiterung wird genutzt um Daten, mittels unterschiedlicher Protokolle, über ein Netzwerk zu übermitteln. Zur Zeit wird ausschließlich das "IRC" Protokoll unterstützt (IRC Proxy). [[relay_options]] Optionen (relay.conf) ^^^^^^^^^^^^^^^^^^^^^ include::autogen/user/relay_options.txt[] [[relay_commands]] Befehle ^^^^^^^ include::autogen/user/relay_commands.txt[] [[relay_irc_proxy]] IRC proxy ^^^^^^^^^ Die Relay-Erweiterung verhält sich wie ein IRC Proxy: Es kann ein Port als IRC Server definiert und ein Passwort für Clients genutzt werden. Beispiel: ---------------------------------------- /set relay.network.password "mein Passwort" /relay add irc.freenode 8000 ---------------------------------------- Nun kann mittels eines IRC Clients (WeeChat, XChat, irssi, ...) am Port 8000 und dem Server-Passwort "mein Passwort" eine Verbindung hergestellt werden. Die Anzahl an erlaubten Clients kann limitiert werden: ---------------------------------------- /set relay.network.max_clients 1 ---------------------------------------- [[rmodifier_plugin]] Rmodifier Erweiterung ~~~~~~~~~~~~~~~~~~~~~ Mittels der Rmodifer Erweiterung kann man Schlüsselwörter mittels regulären Ausdrücken wandeln. Ein typischer Anwendungsfall ist das Passwörter bei der Eingabe verborgen werden, oder das WeeChat diese verbirgt wenn sie im Befehlsverlauf gesichert werden. Ein einfaches Anwendungsbeispiel. Es ist möglich jedes einzelne Zeichen eines Passwortes durch das Zeichen "*" zu ersetzen. [[rmodifier_options]] Optionen (rmodifier.conf) ^^^^^^^^^^^^^^^^^^^^^^^^^ include::autogen/user/rmodifier_options.txt[] [[rmodifier_commands]] Befehle ^^^^^^^ include::autogen/user/rmodifier_commands.txt[] [[rmodifier_creation]] Erstellen eines rmodifier ^^^^^^^^^^^^^^^^^^^^^^^^^ Ein rmodifier besteht aus drei Elementen: . ein oder mehrere "modifiers" . ein regulärer Ausdruck um "Gruppen" zu erkennen . eine Zeichenkette die als Textausgabe von "Gruppen" erkannt werden soll Um eine Auflistung der modifiers zu erhalten die von WeeChat oder einer Erweiterung genutzt werden siehe ''WeeChat Plugin API Reference', Funktion 'weechat_hook_modifier'. Für jede erkannte Gruppe sind folgende Aktionen möglich: * Gruppe wird in der vorliegenden Form beibehalten (wenn man die Gruppennummer nutzt) * alle Zeichen der Gruppe werden ersetzt um deren Inhalt zu verbergen (Gruppennummer + "*") * Gruppe wird entfernt (falls Gruppe nicht in Zeichenkette genutzt wird) Beispiel der rmodifier-Standardeinstellung für den Befehl `/oper`: * modifiers: `history_add,input_text_display` ** `history_add`: wird aufgerufen sobald WeeChat einen Befehl im Befehlsverlauf sichert ** `input_text_display`: wird aufgerufen sobald sich die Eingabezeile ändert (dies hat nur Einfluss auf die Darstellung aber nicht auf den Inhalt der Befehlszeile) * regulärer Ausdruck: `^(/oper +\S+ +)(.*)` * Gruppen: `1,2*` Bei jedem Aufruf von "history_add" oder "input_text_display" durch modifier wird der reguläre Ausdruck überprüft. Stimmen die Zeichenketten überein wird die Zeichenkette durch das definierte Zeichen ersetzt. In obigem Beispiel wird die Ausgabe für Gruppe 1 beibehalten und für die Gruppe 2 werden alle Zeichen ersetzt. Das Zeichen welches zum Ersetzten genutzt werden soll kann in der Konfiguration bestimmt werden (Option: 'rmodifier.look.hide_char'). Lautet die Befehlszeile `/oper nick password` wird diese in der Befehlszeile als `/oper nick ********` dargestellt. [[scripts_plugins]] Skripten Erweiterungen ~~~~~~~~~~~~~~~~~~~~~~ WeeChat unterstützt fünf Skript-Erweiterungen: Perl, Python, Ruby, Lua und Tcl. Diese Erweiterungen können für die jeweilige Sprache die Skripten laden, ausführen und entfernen. Sollten Sie Interesse daran haben wie man Skripten für WeeChat erstellt dann lesen Sie bitte die 'WeeChat Scripting Guide'. Skripten für WeeChat finden Sie auf: http://www.weechat.org/scripts [[perl_commands]] Perl Befehle ^^^^^^^^^^^^ include::autogen/user/perl_commands.txt[] [[python_commands]] Python Befehle ^^^^^^^^^^^^^^ include::autogen/user/python_commands.txt[] [[ruby_commands]] Ruby Befehle ^^^^^^^^^^^^ include::autogen/user/ruby_commands.txt[] [[lua_commands]] Lua Befehle ^^^^^^^^^^^ include::autogen/user/lua_commands.txt[] [[tcl_commands]] Tcl Befehle ^^^^^^^^^^^ include::autogen/user/tcl_commands.txt[] [[xfer_plugin]] Xfer Erweiterung ~~~~~~~~~~~~~~~~ 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 [[xfer_options]] Optionen (xfer.conf) ^^^^^^^^^^^^^^^^^^^^ include::autogen/user/xfer_options.txt[] [[xfer_commands]] Befehle ^^^^^^^ include::autogen/user/xfer_commands.txt[] [[authors]] Autoren ------- [[developers]] Entwickler ~~~~~~~~~~ Hauptentwickler:: Sébastien Helleu (FlashCode) [[contributors]] Liste der Beitragenden ~~~~~~~~~~~~~~~~~~~~~~ Paket Ersteller:: Emmanuel Bouthenot (kolter), Julien Louis (ptitlouis), Odin Übersetzungen:: Jiri Golembiovsky, soltys, Nils Görs, rettub, Frank Zacharias, Pavel Shevchuk, Elián Hanisch (m4v), Voroskoi, Marco Paolone, Ivan Sichmann Freitas Patches:: Dmitry Kobylin, Rudolf Polzer, Jim Ramsay, Pistos, Gwenn, Dominik Honnef, JD Horelick, Stefano Pigozzi, Gu1ll4um3r0m41n [[support]] Unterstützung ------------- Bevor Sie um Unterstützung nachsuchen lesen Sie bitte die Dokumentation und die FAQ von WeeChat durch (mit Dokumentation ist dieses Dokument gemeint. Falls Sie nicht alles gelesen haben sollten und trotzdem diese Zeilen lesen, dann beginnen Sie bitte noch mal von vorne!). Wie erhalte ich Unterstützung: * IRC: Server 'irc.freenode.net', Channels '#weechat' (englisch) und '#weechat-fr' (französisch) * WeeChat Forum: http://forums.flashtux.org/ * Mailing Liste: ** eintragen: http://mail.nongnu.org/mailman/listinfo/weechat-support ** sende email an: weechat-support@nongnu.org ** Archiv: http://mail.nongnu.org/archive/html/weechat-support