Irssi is a modular, ncurses based IRC (Internet Relay Chat) client. It also supports SILC and ICB protocols via plugins.


Install the irssi package.

Several scripts are available in the AUR under irssi-script, and in the Irssi script repository.


For a detailed introduction see the official documentation.

Note: This section assumes you already know the basics of IRC and have used other clients in the past

A terminal multiplexer such as tmux or GNU Screen is recommended. It allows the user to easily disconnect and reconnect to a session, and scripts such as depend on a secondary window. To start irssi, run:

$ irssi

See also irssi(1).


Irssi commands start with a slash and are case-insensitive. Tab completion is supported. You can find out about them with the built-in /help pages, which are also available online.

Command Description
/help List all commands or describe a given command.
/network Manage your IRC networks.
/server Manage your IRC servers.
/connect Connect to a server or network.
/disconnect Closes the current connection to a server.
ALT+(1-0,q-p,etc) Changes the currently active window. cycles to the next window, to the previous window.
/window Manage your irssi windows.
/layout Save or delete your window configuration.
/statusbar Manage the statusbars.
/set View or change settings.
/alias Manage your aliases.


Irssi installs its default configuration to /etc/irssi.conf, and copies it to if not present. The default configuration contains several servers, chatnets, and channels. You can start irssi with an alternate configuration file using the --config flag.

  • You can use to save your current configuration to the configuration file.
  • You can save the location of your currently opened windows by entering

Authenticating with SASL

Irssi supports the Simple Authentication and Security Layer (SASL).

You can add a network with SASL mechanism as follows:

/SERVER ADD -ssl -ssl_verify -ssl_capath /etc/ssl/certs -network liberachat -port 6697
/NETWORK ADD -sasl_mechanism plain -sasl_username username -sasl_password password liberachat

Restart Irssi, connect network and look for SASL authentication succeeded.

Automatically connect to #archlinux on startup

Start Irssi and then type the following in it:

/server add -auto -network liberachat
can be substituted for any preferred word, such as the common abbreviation .

Ensure SASL is configured correctly. You may use NickServ manually with instead of SASL, but this causes a race condition when automatically joining channels. If desired, authenticate using SSL certificates, instead of passwords with NickServ.

/channel add -auto #archlinux liberachat
/channel add -auto #archlinux-offtopic liberachat

TLS Connection uses port 6697 for SSL/TLS connections (not 6667). To connect to IRC network via TLS you have to setup a new connection. Start irssi and run:

/server add -auto -tls -tls_verify -network liberachat -port 6697

Save your new settings with:


If everything works you will see the "Z" mode set. It should look like this: "Mode change (+Zi) for user your-nick"

Client certificates

Libera Chat and OFTC support authentication using SSL certificates, providing an alternative to plaintext passwords. See Libera Chat's Using CertFP for more extensive details.

To create a password-less certificate that is valid for 730 days (when requested to enter details like state or even Common Name (CN), you can fill anything you want):

$ openssl req -newkey rsa:4096 -days 730 -x509 -keyout irssi.key -out irssi.crt -nodes 
$ cat irssi.crt irssi.key > ~/.irssi/irssi.pem
$ chmod 600 ~/.irssi/irssi.pem
$ rm irssi.crt irssi.key

Next, find out the corresponding fingerprint:

$ openssl x509 -sha512 -fingerprint -noout -in ~/.irssi/irssi.pem | sed -e 's/^.*=//;s/://g;y/ABCDEF/abcdef/'

This will write the SHA512 fingerprint to stdout. If you need the SHA1 fingerprint, replace with -sha1. The sed command is there to format the fingerprint correctly by removing unwanted text and characters.

Copy the fingerprint string as you will register it in Irssi shortly.

In irssi, disconnect from the network and add the client certificate and keys. Omit the option if your certificate was built without a password:

/disconnect liberachat
/server add -ssl_cert ~/.irssi/irssi.pem  -ssl_pass irssi.pem_password -network liberachat 6697

Now connect (not /reconnect) and register your fingerprint

/connect liberachat
/msg NickServ identify YOUR_PASSWORD
/msg NickServ cert add YOUR_FINGERPRINT

At this point, you can remove your password from the configuration file (if you saved it in there) and save your configuration with:


Automatic logging

/SET autolog ON

Hide joins, parts, and quits

In order to ignore showing of joining, leaving and quiting of users for all channels type the following in irssi:

/ignore * joins parts quits

See smartfilter to restrict join messages to active users.

Mouse scrolling

To enable the mouse, type the following in irssi:

/run scriptassist
/script install

To permanently enable it at startup:

/script autorun

If the above does not work, you can manually load scripts from or with the following:

/script load

Tips and tricks

HTTP Proxy

To use irssi behind a HTTP proxy, the following commands are required:

/SET use_proxy ON
/SET proxy_address <Proxy host address>
/SET proxy_port <Proxy port>
/SET -clear proxy_string
/SET proxy_string_after conn %s %d
/EVAL SET proxy_string CONNECT %s:%d HTTP/1.0\n\n

irssi should then alter its configuration file correspondingly; if the proxy is not required, just set use_proxy to OFF.

Should the proxy require a password, try:

/SET proxy_password your_pass


/SET -clear proxy_password

Irssi with nicklist in tmux

The irssi plugin 'nicklist' offers to add a pane listing the users on the channel currently viewed. It has two methods to do this:

  • screen, which simply adds the list to the right of irssi, but brings the disadvantage that the entire window gets redrawn every time irssi prints a line.
  • fifo, which like the name suggests writes the list into a fifo that can then be continuously read with e. g. .

nicklist will use the more efficient fifo with:


This fifo can be used in a tmux window split vertically with irssi in its left pane and the cat from above in a small one in its right. Since the pane is dependent on its creating tmux session's geometry, a subsequent session with a different one needs to recreate it (which also implies a switch in irssi windows to refill the fifo).

E.g., the following script first checks for a running irssi, presumed to have been run by a previous execution of itself. Unless found it creates a new tmux session, a window named after and running irssi and then the pane with cat. If however irssi was found it merely attaches to the session and recreates the cat pane.

Virtual hostname (vhost)

A vhost can be used to change your hostname when connected to an IRC-server, commonly viewed when joining/parting or doing a whois. This is most commonly done on a server that has a static IP address. Without a vhost it would commonly look like so when doing a 'whois':

The result of a successful vhost could be like so if you have the domain available:

Keep in mind that not every IRC-server supports the use of vhost. This might be individually set between the servers and not the network, so if you are experiencing issues with one server try another on the same network.

Required preconfigurations

Irssi supports using a vhost as long as the required configurations has been set. This includes especially that your host supports reverse DNS lookup (rDNS) using pointer record (PTR). Additionally you should add an appropriate line to your file.

To see if this is working, test with the host(1) DNS lookup utility included in like so (where ip is a normal IPv4 address):

$ host ip

If this returns something in the lines of this then you know that your rDNS is working. domain name pointer

Enabling the vhost

There are a couple of ways to connect to a server with a given hostname. One is using the 'server' command with a -host argument like so:

/server -host

Another way would be to set your hostname (vhost) with the 'set' command which will save your hostname to :

/set hostname
gollark: Brains are very adaptable, so perhaps you could just dump data into some neurons in some useful format and hope it learns to decode it.
gollark: I'd be *interested* in brain-computer-interface stuff, but it'll probably be a while before it develops into something useful and the security implications are very ææææaa.
gollark: It's still stupid. If the data is *there*, you can read it, no way around that.
gollark: This is something where you could probably make it actually-secure-ish through asymmetric cryptography, but just using a symmetric algorithm and hoping nobody will ever dump the keys is moronically stupid.
gollark: Indeed.

See also

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.