# Irssi

Dieses Buch steht im Regal EDV.
Diese Seite hat mittlerweile eine Größe erreicht, die es als geeignet erscheinen lässt, sie in mehrere einzelne Seiten zu zerlegen. In welche Teile diese Seite zerlegt werden könnte, kann auf der Diskussionsseite besprochen werden. Wie man es macht, steht im Wikibooks-Lehrbuch im Abschnitt Buch in Kapitel untergliedern.

## Zusammenfassung des Projekts

* Buchpatenschaft / Ansprechperson: Zur Zeit niemand. Buch darf übernommen werden.
* Sind Co-Autoren gegenwärtig erwünscht? Ja, sehr gerne.

## Vorwort

Irssi ist ein Konsolen-IRC-Client. Diese Anleitung soll in die Bedienung von irssi einführen, nicht in den Umgang mit IRC im allgemeinen. Es wird daher davon ausgegangen, dass der Leser bereits andere IRC-Clients genutzt hat, die Bedeutung bekannter Befehle wie "/join" kennt, mit der Benennung der Chaträume mit #Raum vertraut ist und dergleichen mehr.
Mit diesen Angaben ist Irssi geeignet, zum Beispiel den Chatroom der deutschen Wikibooks zu besuchen.

## Installation & Start

Irssi läuft unter allen gängigen Unices, unter Mac OS X sowie über Cygwin unter Microsoft Windows. Die stabile Version trägt derzeit die Versionsnummer 1.4.5. Dieser Artikel bezieht sich auf 0.8.9, sollte jedoch auch auf die aktuelle Version anwendbar sein, da die Unterschiede minimal sind. Hinweise zur installation gibt das entsprechende Kapitel im Linux-Praxisbuch.
Das Programm wird durch die Eingabe von irssi auf der Kommandozeile gestartet. Will man das ganze in ein Menü integrieren oder auf einen Shortcut legen, bedient man sich der "-e" Option seines Terminal-Emulators. Am Beispiel von aterm wäre der Befehl: aterm -e irssi. Im Abschnitt "Tipps und Tricks" wird zudem auf die sehr nützliche Kombination von screen und irssi eingegangen.

## Allgemeines

Irssi wird ausschließlich durch Eingabe von Kommandos gesteuert und konfiguriert. Dadurch ist eine konsistente Bedienung aller Funktionen und Einstellungen möglich. Hilfe zu den Befehlen bekommt man durch Eingabe von /HELP <BEFEHL>.
Das erste, was man nach dem Start von irssi sieht, ist das Status-Fenster. In diesem werden Meldungen der IRC-Server, Hilfe-Texte und ähnliches angezeigt. Wenn das Programm gestartet ist, kann man wie gewohnt mit den Befehlen /connect und /join zu einem Server verbinden und einen Raum betreten.
irssis Einstellungen lassen sich mit /set <einstellung> <wert> ändern. Eine komplette Liste aller verfügbarer Optionen erhält man, wenn man /set ohne Argumente eingibt. Um die Optionen zu einem bestimmten Stichwort anzusehen, kann /set <teildeswortes> verwendet werden (z.B. /set log). Die Liste zusammen mit einer deutschen Erklärung findet sich auch im Anhang. Solange die Option settings_autosave nicht aktiviert ist, muss man seine Einstellungen von Hand mit /save speichern.

## Fenster

Es wurde bereits auf das Status-Fenster hingewiesen, das automatisch beim Start von irssi gezeigt wird. Jedesmal wenn man einen Raum betritt oder ein Query öffnet, erstellt irssi automatisch ein neues Fenster. In der Statusleiste steht das aktuell aktive Fenster (z.B. [5:#linuxforen.de(+nt)]). Zwischen den Fenstern kann man auf verschiedene Arten hin- und her wechseln: Mit /window <Nummer> oder mit dem Tastenkürzel ALT+<Nummer> (bei mehr als 10 Fenstern geht es eine Reihe weiter unten mit dem 'q' weiter). Falls ALT+<Nummer> anders belegt ist, kann man auch ESC <Nummer> verwenden, wobei man beachten muss, dass man diese beiden Tasten nacheinander und nicht gleichzeitig drückt. Zum nächsten bzw. vorherigen Fenster geht's mit /window {left,right} oder ALT+Pfeiltaste {links,rechts}.
Man kann auch mehrere Fenster gleichzeitig anzeigen ("splitting" genannt, weil der vorhandene Platz aufgeteilt wird). Dazu ist der WINDOW SHOW Befehl zuständig. Wenn man Beispielsweise im Fenster 2 ist und auch das vierte angezeigt bekommen will, gibt man folgenden Befehl ein:
Man kann das mit mehreren Fenstern machen. Die Größe der Fenster kann man mit WINDOW GROW und WINDOW SHRINK beeinflußen. Sollen alle gleich viel Platz bekommen, nutzt man WINDOW BALANCE. Das wechseln zwischen den Fenstern funktioniert wie bisher - wechselt man in ein nicht sichtbares Fenster, wird dieses anstelle des gerade aktiven Fensters angezeigt. mit WINDOW HIDE kann man die Trennung wieder aufheben. Mit /LAYOUT SAVE kann man seine Einstellungen nun speichern. Beim nächsten Start sollten dann die Fenster wieder so angeordnet sein wie vorher.

## Netze, Server und Channels verwalten

Netze, Server und Channels verwaltet man unter irssi mit den Kommandos ircnet, server und channel.
Um ein neues Netzwerk hinzuzufügen, nutzt man zunächst den ircnet-Befehl:
(Ab Version 0.8.10 ist /ircnet durch /network ersetzt (irssi-ChangeLog for 0.8.10)) Es ist möglich, für einzelne Netzwerke Standardeinstellungen wie den Nickname zu ändern (siehe /help network).
Nun kann man dem neuen Netzwerk einen Server hinzufügen:
Interessante Optionen sind -auto (autologin beim irssi-start) und -ssl.
Für einzelne Netzwerke kann man auch seine Lieblings-Räume eintragen, um diese automatisch zu betreten:
Es gibt keinen extra Befehl zum Ändern. Hat man etwas falsch gemacht, korrigiert man einfach den ADD-Befehl. Solange der jeweilige Name nicht geändert wurde, wird dann automatisch eine Änderung durchgeführt - ansonsten muss der alte Eintrag mit /befehl REMOVE <Name> gelöscht werden.

## Themes

Eine große Auswahl an themes steht auf der Irssi-Homepage bereit. Die .theme-Dateien werden nach ~/.irssi/ gespeichert und mit /set theme <name> geladen.

## Completion

Wie viele Shells unterstützt irssi eine sehr hilfreiche Completion-Funktion, die Befehle, Einstellungen, Nicknames und Pfade im Dateisystem vervollständigen kann. Wenn man also z.B. /he<TAB> drückt, wird der Befehl automatisch auf /help erweitert. Gibt es mehrere Möglichkeiten, kann man diese durch erneutes drücken von TAB erreichen.
Mit dem completion-Befehl kann das sogar erweitert werden:
Dieser Befehl bewirkt, dass nach der eingabe von "lol<TAB>" das lol durch "Das ist ja lustig!" ersetzt wird.
Mit Auto-Completions kann man zudem seine Lieblingstippfehler beseitigen lassen:
Das ganze ist übrigens nicht case-sensitive, das heißt, es wird sowohl der standart als auch der Standart korrigiert (aber immer zum Standard, nicht zum standard).

## Alias-Befehl

Alias-Befehle sind nützlich, um häufig benutzte Befehle abzukürzen. Ein bekannter Alias, der auch zur Standard-Konfiguration von irssi gehört, ist /J, welches ein alias auf /JOIN ist. Um sich alle eingerichteten Aliase anzeigen zu lassen, benutzt man den "/alias" Befehl ohne Argumente. Gibt man als erstes Argument einen Buchstaben ein, zeigt irssi alle aliase, die mit diesem beginnen. Der alias-Befehl wird immer in Großbuchstaben angezeigt, ist jedoch nicht case-sensitive: /J und /j ist das selbe.
Um einen eigenen Alias zu erstellen, gibt man als ersten Parameter den gewünschten alias und als zweiten Parameter den gewünschten Befehl an. Beispiel:
Mit diesem Alias wird aus "/meta Hannes" ein "Hannes: http://www.metafrage.de/", somit kann man Nutzer auf den Artikel zu Metafragen in der Wikipedia hinweisen, ohne die URL suchen und kopieren zu müssen.

## Highlighting

Standardmässig hebt irssi alle Zeilen hervor, die den eigenen Nickname enthalten. Mit den Befehlen HILIGHT und DEHILIGHT lassen sich zusätzliche Highlight-Wörter definieren. Die einfachste Art, ein Hilight-Wort zu definieren, ist:
Hilight kennt jedoch einige Optionen, hier die interessantesten: -{nick, word, line}: Steuert, ob der Nickname, das Hilight-Wort oder die ganze Zeile markiert werden sollen. -color: Farbe der Hervorhebung. Farbformat: siehe Anhang. -actcolor: Farbe der Fensternummer in der Statusleiste oder %n um Hervorhebungen nicht in der Statusbar anzuzeigen. -level: Level, auf die dieses Hilight zutrifft (siehe Anhang für eine Liste der verfügbaren Level) -channels: Räume, in denen die Hervorhebung aktiv ist.

## Statusbars

Die Leisten am oberen und unteren Bildrand, werden Statusbar genannt und können mit dem gleichlautenden Befehl verändert werden. Irssi kennt standardmässig vier solcher Statusbars. Ihre Namen und Einstellungen kann man sich anzeigenlassen, indem man /statusbar eingibt:
| Name | Type | Placement | Position | Visible |
| window | window | bottom | 1 | active |
| window_inact | window | bottom | 1 | inactive |
| prompt | root | bottom | 100 | always |
| topic | root | top | 1 | always |
Bedeutung der Einstellungen: Type: Statusleisten vom Typ 'Window' werden für jedes Fenster einzeln erstellt, das heißt sie können z.B. den channelnamen enthalten. Ist eine Leiste vom Typ 'root' so wird sie hingegen nur ein einziges Mal erstellt und überall angezeigt. Placement: Bestimmt, ob die Leiste am oberen oder am unteren Rand ist. Position: Die Abfolge der Leisten. Leisten mit einer höheren Nummer werden unter denen mit niedrigen Nummern angezeigt. In der Standardeinstellung ist also der prompt unter der Leiste mit den Channel-Infos. Würde man eine zusätzliche Leiste mit Placement=bottom und Position=23 einfügen, würde diese zwischen den beiden anderen angezeigt. Visible: Das aktuelle Fenster ist 'active', alle anderen 'inactive'. Dies macht natürlich nur Sinn, wenn man mehrere Fenster gleichzeitig anzeigt ("splitting"), da man die inaktiven Fenster ja sonst nicht sieht.

### Items

Sieht man sich jetzt die Standard-Statusleiste "window" mit dem befehl "/statusbar window" an, so erhält man zusätzlich zu den bereits oben gesehen Informationen die Liste der Items. Items sind die auf der Leiste verteilten Informationen. Jedem Item kann eine Priorität ("priority") und eine Ausrichtung ("alignment" - left oder right) zugewiesen werden. Wofür die Priorität steht ist mir noch nicht ganz klar.
| Name | Beschreibung |
| barstart | Beginn der Leiste |
| barend | Ende der Leiste |
| time | Aktueller Timestamp |
| user | Nickname |
| window | Channelname oder Name des Query-Partners |
| window_empty | Server-Name im Statusfenster |
| lag | Lag-Anzeige in sekunden |
| act | Nachrichten in anderen Fenstern |
| more | Informiert darüber, wenn man etwas hochgescrolled hat und es neue Zeilen gibt. |
| prompt | Der Prompt: [#channel] |
| prompt_empty | Das Eingabefeld (der wirkliche Prompt) |
| input | Eingabefeld |
| topicbarstart | Unterschied zu barstart? |
| topicbarend | ??? |
| topic | Thema des aktuellen Channels |
| topic_empty | ??? |

### Statusleisten bearbeiten

Mit /statusbar <Name> ENABLE bzw. DISABLE kann man die Leisten ein- oder ausblenden. Nicht existierende Leisten werden bei einem ENABLE automatisch erstellt. Um eine eigene Leiste wieder zu löschen, dient RESET.
Mittels TYPE window|root, PLACEMENT top|bottom, POSITION num und VISIBLE always|active|inactive können die oben erwähnnten Einstellungen für eine bestehende Leiste geändert werden.
Um Items hinzuzufügen, dient STATUSBAR <Name> ADD. Als Argumente kann man die Position mittels -before <item> bzw. -after <item> angeben, beispielsweise fügt der folgende Befehl zunächst die Lag-Anzeige und dann davor die Aktivitätsanzeige auf der rechten seite der delmonico-Leiste hinzu:
Das Äquivalent zum Löschen von Items ist logischweise STATUSBAR <Name> REMOVE

## Tastaturbefehle

Mit dem Befehl BIND lässt sich die Tastatursteuerung von irssi komplett den eigenen Wünschen anpassen.
Ein dem Buchstaben vorangestelltes "^" steht für STRG, Meta ist meistens die Alt-Taste (als Alternative kann Escape genutzt werden):
Zusätzlich stehen die folgenden Tasten zur Verfügung:
| Name | Taste |
| return | Return |
| space | Leertaste |
| backspace | Backspace |
| up, down, left, right | Pfeiltasten |
| cleft, cright | STRG bzw. CTRL links/rechts |
| home | Pos1 |
| end | Ende |
| prior | PageUp / Bild hoch |
| next | PageDown / Bild runter |
| insert | Einfügen |
| delete | Entfernen |
Mit diesen Tasten verbinden kann man alle Befehle, die in der HELP-Page von BIND aufgelistet sind (könnte man hier auch mal ne Tabelle machen) sowie alle /BEFEHL-Befehle.
BIND ohne weitere Angaben gibt die Liste der bereits eingestellten bindings aus.
Um eine neue Tastenkombination hinzuzufügen oder eine bestehende mit einem anderen Befehl zu belegen: /BIND <Tasten-Kombination> <Kommando>
Um eine Tastenbelegung zu löschen: /BIND -delete <Tasten-Kombination>
Beispiel: Fenster steuerung mit STRG+W und anschließendem N(ew), C(lose):

## Message-Levels

Message Levels finden fast überall Verwendung. Jede Art von Nachricht, egal ob sie vom Server oder IRSSI stammt, wird einem dieser Level zugeordnet. Die jeweiligen Levels sind im Anhang aufgeführt:
Ein Channelfenster zeigt eine Nachrichte an, wenn sein Level mit dem der Nachricht übereinstimmt. Steht der Level nicht ausdruecklich auf IGNORE (s.u.), landet die Nachricht im Statusfenster. Den Level des aktuellen Fensters zeigt
Neue Fenster stehen per default auf NONE (kein Level zugeteilt). Da das Statusfenster (fast) alle Meldungen aufsammelt, sind hier allerdings auch (fast) alle im Anhang aufgeführten Level vertreten. Nun ist es möglich, einen Level hinzuzufügen bzw. wieder zu entfernen:

## Ignorieren

Irssi hat eine mächtige Ignorier-Funktion, die mit den Befehlen /ignore und /unignore gesteuert wird.

### Leute ignorieren

Wenn ein bestimmter Nutzer stört, kann man einfach alles ignorieren, was dieser sagt:
Wenn sich andere Chatter sich auf eine Diskussion mit ihm einlassen, kann man ignore noch die option -replies geben. Dann werden auch Antworten der Form "Nickname: Du hast doch keine Ahnung!" mit ignoriert.
* -replies Auch Antworten an einen Chatter ignorieren.
* -channels <channel> Nur in bestimmten Channels ignorieren.
* -time <secs> Ignore nach einer bestimmten Zeit automatisch wieder aufheben.

### Levels ignorieren

In einem Channel, in dem sehr viele Leute sind, können die vielen Joins, Quits und Nickchanges durchaus störend sein. Irssi unterscheidet solche Meldungen von normalen Chats, in dem sie in sogenannte levels aufgeteilt werden.
Dabei stehen die im Anhang aufgeführten Levels zur Verfügung.

### Ignores löschen

/unignore kann man auf zweierleiweise nutzen: Bei einfache Ignore-Argumenten wie einem Nickname, kann man das Ignore genauso aufheben, wie man es gesetzt hat (z.B. /unignore Newbie). Alternativ zeigt /ignore ohne weitere Angaben alle eingerichteten Ignores. Diese sind durchnnummeriert und können mit /unignore <Nummer> aufgehoben werden.

## Logging
### Lastlog

Wenn man nachsehen möchte, was zu einem Bestimmten Begriff oder von einer Person in der letzten Zeit gesagt wurde, kann man den LASTLOG-Befehl nutzen:
Dieser Befehl sucht im aktuellen Fenster nach "Suchbegriff", lässt sich jedoch sehr vielseitig einsetzen (siehe /help lastlog).

### Manuelles loggen

Wenn man das loggen selber starten und stoppen will:
Gibt man nur /log ein, erhält man eine Liste der offenen Log-Files mit ihren IDs. Will man bestimmte files beim Start von Irssi automatisch öffnen, gibt man /log open die Option -autoopen mit. Mit -window kann man zudem das zu loggende Fenster und mit -targets die zu loggenden Channels oder Nicknames angeben. Auch eine -levels-Option fehlt natürlich nicht (siehe Anhang: Levels).

### Auto-logging

Automatisches loggen: Um automatisch alle Gespräche loggen zu lassen, sollte man zunächst die Option autolog_path ändern. Neben der Pfad-Angabe (ich bevorzuge ~/.irssi/logs/) lassen sich hier die Variablen $tag für den Server und $0 für den Channel bzw. Nickname des Chatpartners nutzen. Zusätzlich kann man mit den aus man strftime zu entnehmenden Zeitformatierungsvariablen ein automatisches Wechseln des Logfiles zu bestimmten Zeitpunkten erreichen. Beispiel:
Diese Einstellung erzeugt eine Log-Datei pro Channel und Tag in ~/.irssi/logs/. Diese werden in Unterordnern für den Server und den Channel gespeichert. Die Logdatei für den Raum #archlinux.de im Freenode-Netzwerk am 18.10.2004 würde also als ~/.irssi/logs/freenode/#archlinux.de/2004-10-18.log gespeichert.
Ist autolog_path den eigenen Wünschen angepasst, kann man autologging mittels "/set autolog on" aktivieren. Das Verhalten des Loggings wird durch die im Anhang erläuterten Optionen beeinflußt.

## Scripts

Ein wichtiges Feature ist die Möglichkeit, Irssi durch Perl-Skripte zu erweitern. Auf der Irssi-Homepage steht eine große Anzahl fertiger Skripte zum Download bereit. Die Skripte können ins Verzeichnis ~/.irssi/scripts/ gespeichert werden. Manche Distributionen liefern ein Paket mit, daß Skripte Systemweit bereitstellt. Debian macht dies mit dem Paket irssi-scripts, dass in /usr/share/irssi/scripts/ über 300 Skripte bereithält.
Um das Script in irssi zu laden: /script load <name>. Die Bedienung der Scripts ist meist im Code selbst oder auf einer eigenen Homepage dokumentiert. Viele Skripte erweitern irssi auch um zusätzliche /set-Optionen. Um Skripte direkt beim Start zu laden kann man in ~/.irssi/scripts/autorun/ einen Symlink auf das Skript erstellen.

### Nützliche Scripte
#### Scriptassist, die Mutter aller Scripte

Scriptassist ist ein Script zur Verwaltung von Scripten. Tatsächlich ist es das einzige Script von der Irssi-Homepage, das ihr selber installieren müsst. Danach könnt ihr über dieses Script andere Scripts suchen und installieren, Autostart einstellen, alle geladenen Scripte aktualisieren und so weiter.
Evtl. Probleme: Wenn scriptassist.pl nicht fehlerfrei geladen wurde, kann es sein dass euch einige module fehlen, wie z.B. LWP/UserAgent.pm. in diesem Fall einfach das Package "libwww-perl" installieren was diese Module beinhaltet. Für gentoo linux user einfach mal im Portage mit # emerge -s libwww-perl nachschauen.
Die wichtigsten Befehle (weitere mit /scriptassist help): Scripts suchen:
Scripts installieren:
Script beim irssi-Start automatisch laden:
Nach verfügbaren updates gucken:
Script updaten:
Alle Scripts updaten:

#### Trackbar

Trackbar zeichnet beim Verlassen eines Fensters eine Linie als unterste Zeile. Damit kann man beim zurückwechseln zu diesem Fenster direkt sehen, wo man zuletzt gelesen hat.

#### nm

nm zentriert die Nicknames im Channel anhand des längsten Namens. Das steigert die Übersichtlichkeit ungemein (Hinweis: Einige Themes bieten diese Option auch ohne Script)

#### Tinyurl

In vielen Channels sind sehr lange URLs, etwa von Ebay, nicht gern gesehen. Abhilfe schafft ein Besuch auf der TinyURL Website, wo man sich eine kurze URL generieren lassen kann. Viel einfacher geht das ganze mit Tinyurl.pl: Einfach "/tinyurl <URL>" eingeben und das Script lässt die URL generieren und gibt sie im aktuellen Fenster aus.

#### oops

oops.pl zeigt bei der Eingabe von "ls" (ohne /) die Userlist (/names) an und ist damit für Shelluser recht nützlich.

#### splitlong

Irssi hat eine interne maximale Zeilenlänge, die gesendet werden kann. Eine längere Zeile wird abgeschnitten. Das Skript splitlong.pl verhindert dies, in dem es eine neue Zeile beginnt.

#### nicklist

Eine Liste der Nicknames im aktuellen Channel wird mit nicklist.pl angezeigt.

## Dateitransfer (DCC)
### Dateien empfangen

Erhält man ein Datei-Angebot, so wird man darüber im Status-Fenster informiert. Um den Transfer zu starten, nutzt man den Befehle DCC GET <Name des anbietenden Users> <Dateiname>. Um Dateien automatisch herunterzuladen, kann man die Option dcc_autoget aktivieren. Abgebrochene Transfers lassen sich per DCC RESUME vervollständigen, die Option dcc_autoresume sorgt dafür, dass unvollständige Dateien automatisch auch bei einem GET vervollständigt werden.

### Dateien versenden
## Tipps und Tricks
### Irssi im screen

Das Programm screen stellt eine ideale Ergänzung zu irssi (und anderen Konsolen-Chat-Programmen) dar: Es ermöglicht es, irssi auf mehreren Terminals gleichzeitig zu sehen, etwa auf der Konsole, unter X und remote über SSH. Schließt man einmal versehentlich den Terminal-Emulator, läuft irssi weiter.
Um irssi im screen zu starten, dient der Befehl "screen -S irssi irssi" - das "-S irssi" gibt der screen-session einen Namen, sodass man sie auch dann wieder attachen kann, wenn man mehrere screens laufen hat. Will man jetzt auf einem weiteren Terminal oder nach einem schließen des irssi-fensters wieder ins irc, reicht "screen -x irssi". Und damit man das alles gar nicht mehr braucht, setzt man sich im Startupfile seiner shell (~/.bashrc, ~/.zshrc, etc.) folgende Zeile:
screen prüft dann in diesem Fall, ob bereits eine screen-Instanz mit dem session-Namen 'irssi' existiert. Ist dies der Fall so wird diese attached. Falls dies nicht der Fall ist, wird irssi in einem neuen screen gestartet und dieser screen-Instanz der Name 'irssi' zugewiesen
Wer Probleme damit hat, dass irssi, welches in einer screen remote auf einem Rechner laeuft, aber trotz screen bei der beliebten 24-Stunden-Zwangstrennung austimet, sollte es mal mit der screen-option "nonblock on" versuchen. Offensichtlich blockt screen das letzte aktive Fenster, bis die ssh-Verbindung austimet, da der timeout >3 Minuten ist, verliert irssi die Verbindung zum irc-server.

## Anhang
### Levels

| Level | Beschreibung |
| CRAP | Whois Messages und andere Messages |
| CTCPS | Client-to-Client-Protocol |
| JOINS | Chatter betritt den Raum |
| PARTS | Chatter verläßt den Raum |
| QUITS | User verläßt den Server |
| KICKS | User wird gekickt |
| TOPICS | Änderung des Channel-Themas |
| PUBLIC | Channel Nachrichten |
| SNOTES | |
| NOTICES | |
| MODES | Änderung des Modes (Op, voice, etc) |
| DCC | DCC-Events |
| NICKS | Änderung von Nicknames |
| ACTIONS | "/me tut das und das" |
| WALLOPS | |
| MSGS | Private Nachrichten |
| INVITES | Einladung in einen Raum |
| DCCMSGS | Private Nachrichten via DCC |
| CLIENTNOTICE | |
| CLIENTCRAP | Einige andere Messages von Irssi |
| CLIENTERROR | Fehlermeldungen die IRSSI generiert (z.B. Irssi: Unknown command: xyz) |

### Spezielle Level

| Option | Beschreibung |
| HILIGHT | Nachrichtentext wird hervorgehoben |
| NOHILIGHT | Hervorhebung wird ausgeschaltet |
| NO_ACT | Kommt eine neue Nachricht in den Channel, wird trotzdem keine Aktivitaet signalisiert |
| NEVER | Nachrichten dieses Typs werden NIE ignoriert oder geloggt |

### Optionen

Die Optionen sind größtenteils auf der Homepage irssi::Settings dokumentiert. Optionen erlauben es, die Basiseinstellungen des Programmes zu ändern, den Bedürfnissen und Anforderungen des Benutzers anzupassen. Optionen können entweder mittels /SET <option> <Wert> für eine Sitzung geändert oder, wenn sie in der Konfigurationsdatei "config" eingetragen werden, dauerhaft bestimmt werden.
| Option | Standard | Beschreibung/Beispiel |
| (Nick) completion ||||
| completion_strict | OFF | |
| completion_keep_privates | 10 | |
| completion_char | : | |
| completion_auto | OFF | |
| completion_nicks_lowercase | OFF | |
| completion_keep_publics | 50 | |
| dcc ||||
| dcc_autorename | OFF | |
| dcc_autoresume | OFF | |
| dcc_timeout | 5min | |
| dcc_autoget | OFF | |
| dcc_upload_path | ~ | |
| dcc_autoget_masks | |
| dcc_autoget_max_size | |
| dcc_send_replace_space_with_underscore | OFF | |
| dcc_own_ip | |
| dcc_download_path | ~ | |
| dcc_file_create_mode | 644 | |
| dcc_port | 0 | |
| dcc_autochat_masks | |
| dcc_mirc_ctcp | OFF | |
| dcc_autoaccept_lowports | OFF | |
| flood ||||
| autoignore_time | 5min | |
| autoignore_level | |
| flood_timecheck | 8 | |
| cmds_max_at_once | 5 | |
| cmd_queue_speed | 2200msec | |
| max_ctcp_queue | 5 | |
| flood_max_msgs | 4 | |
| history ||||
| scrollback_save_formats | OFF | |
| scroll_page_count | /2 | |
| window_history | OFF | |
| max_command_history | 100 | |
| scrollback_time | 1day | |
| rawlog_lines | 200 | |
| scrollback_lines | 500 | |
| scrollback_burst_remove | 10 | |
| log ||||
| log_close_string |
| log_timestamp | %H:%M | |
| autolog_colors | OFF | |
| autolog_level | all -crap -clientcrap -ctcps | |
| awaylog_colors | ON | |
| log_day_changed |
| autolog | OFF | |
| autolog_path | ~/irclogs/$tag/$0.log | |
| awaylog_level | msgs hilight | |
| awaylog_file | ~/.irssi/away.log | |
| log_theme = | |
| log_create_mode | 600 | |
| log_open_string |
| lookandfeel ||||
| show_names_on_join | ON | |
| window_check_level_first | OFF | |
| emphasis | ON | |
| autocreate_split_windows | OFF | |
| beep_msg_level | |
| actlist_moves | OFF | |
| hilight_nick_matches | ON | |
| emphasis_multiword | OFF | |
| hide_colors | OFF | |
| names_max_width | 0 | |
| mirc_blink_fix | OFF | |
| autoclose_windows | ON | |
| bell_beeps | OFF | |
| hide_server_tags | OFF | |
| show_nickmode | ON | |
| theme | default | |
| timestamps | ON | Zeitstempel vor jeder Nachricht ausgeben |
| indent | 10 | |
| timestamp_format | |
| activity_msg_level | PUBLIC | |
| print_active_channel | OFF | |
| autoclose_query | 0 | |
| activity_hide_targets | |
| use_msgs_window | OFF | |
| timestamp_timeout | |
| use_status_window | ON | |
| windows_auto_renumber | ON | |
| show_nickmode_empty | ON | |
| beep_when_away | ON | |
| timestamp_level | ALL | |
| indent_always | OFF | |
| hilight_color | %Y | |
| emphasis_replace | OFF | |
| hilight_level | PUBLIC DCCMSGS | |
| hilight_act_color | %M | |
| term_type | 8bit | |
| expand_escapes | OFF | |
| autocreate_windows | ON | |
| autocreate_query_level | MSGS DCCMSGS | |
| term_auto_detach | OFF | |
| window_default_level | NONE | |
| hide_text_style | OFF | |
| names_max_columns | 6 | |
| chanmode_expando_strip | OFF | |
| show_quit_once | OFF | |
| show_away_once | ON | |
| autocreate_own_query | ON | |
| activity_hilight_level | MSGS DCCMSGS | |
| autostick_split_windows | ON | |
| query_track_nick_changes | ON | |
| scroll | ON | |
| window_auto_change | OFF | |
| beep_when_window_active | ON | |
| activity_hide_level | |
| show_own_nickchange_once | OFF | |
| reuse_unused_windows | OFF | |
| colors | ON | |
| term_force_colors | OFF | |
| autofocus_new_items | ON | |
| misc ||||
| opermode | |
| lag_check_time | 1min | |
| quit_message | leaving | |
| paste_detect_time | 5msecs | |
| notify_check_time | 1min | |
| help_path | /usr/share/irssi/help | |
| ctcp_userinfo_reply | $Y | |
| override_coredump_limit | ON | |
| join_auto_chans_on_invite | ON | |
| netjoin_max_nicks | 10 | |
| channel_sync | ON | |
| notify_idle_time | 1hour | |
| massjoin_max_joins | 3 | |
| write_buffer_size | 0 | |
| STATUS_OPER | * | |
| ban_type | normal | |
| lag_max_before_disconnect | 5min | |
| part_message | |
| auto_whowas | ON | |
| paste_verify_line_count | 5 | |
| max_wildcard_modes | 6 | |
| hide_netsplit_quits | ON | |
| knockout_time | 5min | |
| massjoin_max_wait | 5000 | |
| lag_min_show | 1sec | |
| wall_format | [Wall/$0] $1- | |
| netsplit_nicks_hide_threshold | 15 | |
| settings_autosave | ON | |
| translation | |
| group_multi_mode | ON | |
| cmdchars | / | |
| notify_whois_time | 5min | |
| kick_first_on_kickban | OFF | |
| usermode | +i | |
| ignore_signals | |
| netsplit_max_nicks | 10 | |
| ctcp_version_reply | irssi v$J - running on $sysname $sysarch | |
| write_buffer_timeout | 0 | |
| perl ||||
| perl_use_lib | /usr/lib/perl5/5.8.5/i686-linux-thread-multi | |
| proxy ||||
| use_proxy | OFF | |
| proxy_string | CONNECT %s %d | |
| proxy_string_after | |
| proxy_port | 6667 | |
| proxy_address | |
| proxy_password | |
| server ||||
| server_connect_timeout | 5min | |
| resolve_reverse_lookup | OFF | |
| use_ssl | OFF | |
| ssl_cafile | |
| hostname | |
| user_name | root | |
| resolve_prefer_ipv6 | OFF | |
| ssl_cert | |
| nick | root | |
| alternate_nick | |
| ssl_cacert | |
| real_name | root | |
| ssl_pkey | |
| ssl_verify | OFF | |
| skip_motd | OFF | |
| server_reconnect_time | 5min | |
| servers ||||
| channels_rejoin_unavailable | ON | |

### Interne Variablen
#### Umgang mit den Variablen

Irssi besitzt einige interne Variablen, die man zum Beispiel in Alias-Befehlen verwenden kann. Um den inhalt einer Variable anzusehen, kann man im Statusfenster "/eval echo $VARIABLE" eingeben. Auch die werte von /set-Optionen können als $option angesprochen werden. Die Variablen können auch wie folgt formatiert und ausgewertet werden:
| Schreibweise | Beschreibung |
| $variable | Normale ausgabe |
| $[n]variable | Gibt die Variable auf n Zeichen gekürzt aus. Bei n<0 wird von rechts gezählt. |
| $#variable | Gibt die Anzahl der Wörter in #variable zurück. |
| $@variable | Gibt die Anzahl der Zeichen in #variable zurück. |
| $($subvariable) | Der Inhalt von $subvariable wird als Name der zu nutzenden Variable genutzt (wenn $subvariable == hostname, wird der hostname zurückgegeben). |
| ${expression} | Muss genutzt werden, wenn die Variable direkt im text steht, z.B. so: foo${N}foo |
| $!history! | Letzter eingegebener Befehl, der "history" enthält, wird zurückgegeben. |

#### Variablen

| Variable | Beschreibung |
| $, | Die letzte Person, die einem eine MSG geschickt hat. |
| $. | Die letzte Person, an die man eine MSG geschickt hat. |
| $: | Die letzte Person, die einen der Channels betreten hat, in denen der User ist. |
| $; | Die letzte Person, die in einem der Channels, in denen der User ist, eine Nachricht geschrieben hat. |
| $A | Text der Away-Message |
| $B | Die letzte verschickte MSG |
| $C | Aktueller Channel |
| $D | Gibt die letzte Person aus, die Online gekommen ist, und in deiner Notify-List steht |
| $E | Idle-Zeit in Sekunden |
| $F | Zeit, zu der der client gestartet wurde. |
| $H | ??? "current server numeric being processed" |
| $I | Der Channel, in den man zuletzt eingeladen wurde. |
| $J | Irssi-Version |
| $K | /set cmdchars |
| $k | Erstes zeichen von $cmdchars |
| $L | Aktueller Inhalt der Eingabezeile |
| $M | Modes des aktuellen Channels |
| $N | Nickname |
| $O | ???"value of STATUS_OPER if you are an irc operator" |
| $P | "@", wenn man Channel-Operator in $C ist. |
| $Q | Nicknames, mit denen Querys offen sind |
| $R | Server-Version |
| $S | Server Name |
| $T | Channel/Nick/Query je nachdem wo man sich befindet. |
| $U | ???"value of cutbuffer" |
| $V | Release-Datum des Clients |
| $W | Aktuelles Verzeichnis |
| $X | wie "/userhost $N" (user@host) |
| $Y | Real name |
| $Z | Tageszeit im Format von $timestamp_format |
| $$ | Das $-Zeichen |
| $versiontime | ???"prints time of the irssi version in HHMM format" |
| $sysname | Systemname (z.B. Linux) |
| $sysrelease | System-Version (z.B. 2.4.28) |
| $sysarch | System-Architektur (z.B. i686) |
| $topic | Channel-Topic |
| $usermode | User mode |
| $cumode | ???"own channel user mode" |
| $cumode_space | Wie $cumode, gibt aber ein Leerzeichen zurück, wenn kein user mode |
| $tag | Server tag |
| $chatnet | Netzwerk zu dem der aktuelle Server gehört. |
| $winref | Fenster-Nummer |
| $winname | Fenster-Name |
| $itemname | Ähnlich $T, aber mit dem "visible name" (???) |

### Farben
#### mIRC-Farben bei PRIVMSGs

In irssi ist es möglich normale mIRC-Farben zu verwenden. Man sollte es allerdings nicht übertreiben. Farben werden mit ^C(Vordergrundfarbe|,Hintergrundfarbe) eingefügt. ^C steht wie immer für die Tastenkombination Strg+C. Dabei erscheint dann als erstes ein invertiertes C. Danach gibt man den Wert der Vordergrundfarbe und - optional, durch ein Komma getrennt - den der Hintergrundfarbe ein. Bei einstelligen Farbwerten sollte man aufpassen: Folgt auf den Wert eine Ziffer, die eigentlich zum farbigen Text gehören soll, wird diese auch als Teil des Farbwertes interpretiert. Um das zu vermeiden, reicht es dem Farbwert einfach eine 0 voranzustellen damit er zweistellig wird.
Um die Farbe zurückzusetzen reicht ein einfaches ^C.
| Farbwert | Vordergrund | Hintergrund |
| 00 | Weiß | Hellgrau (blinkend) |
| 01 | Schwarz | Schwarz |
| 02 | Blau | Blau |
| 03 | Grün | Grün |
| 04 | Hellrot | Rot (blinkend) |
| 05 | Rot | Rot |
| 06 | Magenta | Magenta |
| 07 | Orange | Orange |
| 08 | Gelb | Orange (blinkend) |
| 09 | Hellgrün | Grün (blinkend) |
| 10 | Cyan | Cyan |
| 11 | Türkis | Hellblau (blinkend) |
| 12 | Hellblau | Blau (blinkend) |
| 13 | helles Magenta | Magenta (blinkend) |
| 14 | Grau | Schwarz (blinkend) |
| 15 | Hellgrau | Hellgrau |
blinkend bedeutet in diesem Zusammenhang, dass der Text - nicht die Hintergrundfarbe - blinkt. Dies wird allerdings nicht von allen Terminals und IRC-Clients umgesetzt.
Beispiele:
Außerdem gibt es noch ^B um Text fett darzustellen. Beispiel: foobar^Bfoo^Bbar => foobarfoobar

#### Hintergrund

| Code | Farbe |
| %0 | black |
| %1 | red |
| %2 | green |
| %3 | yellow |
| %4 | blue |
| %5 | magenta |
| %6 | cyan |
| %7 | white |

#### Text

| Code | Text |
| %k | black |
| %K | dark grey |
| %r | red |
| %R | bold red |
| %g | green |
| %G | bold green |
| %y | yellow |
| %Y | bold yellow |
| %b | blue |
| %B | bold blue |
| %m | magenta |
| %M | bold magenta |
| %p | magenta (think: purple) |
| %P | magenta (think: purple) |
| %c | cyan |
| %C | bold cyan |
| %w | white |
| %W | bold white |
| %n / %N | Standard-Farbe, entfernt alle gesetzten Farben und Formatierungen. %n hat in themes eine andere Bedeutung: vorherige Farbe. |
| %F | Blinken an/aus (an "Flash" angelehnt) |
| %U | Unterstreichen an/aus |
| %8 | Rückwärts an/aus (?) |
| %9 | Fett an/aus |
| %: | Neue Zeile |
| | Marks the indentation position (?) |
| %# | Monospace font on/off (useful with lists and GUI) (?) |
| %% | Das Zeichen "%". |

## Weblinks

Irssi
* Offizielle Homepage
* Bugtracker
* Irssi-Scripts und Tipps auf Garion.org