WeeChat IRC Client

WeeChat is a modern, terminal-based IRC client.

Installation

aptitude install weechat weechat-plugins

Configuration

Commands to join our chat channel:

/server add phys irc.phys.ethz.ch/6697
/connect phys
/join #isgphys
/nick johndoe

Below you find some lines that can be useful to customize your ~/.weechat/irc.conf.

buffer_switch_autojoin = on
buffer_switch_join = on
highlight_channel = "$nick"
highlight_pv = "$nick"
nick_mode = prefix
server_buffer = merge_with_core
smart_filter_mode = "+"
nick_prefixes = "y:lightred;q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"
autoreconnect_delay_max = 600
ban_mask_default = "*!$ident@$host"
whois_double_nick = off
nicks = "<nick>,<nick>_,<nick>__,<your_username>"
ssl_priorities = "NORMAL:-VERS-SSL3.0"
username = "<your_username>"
phys.addresses = "irc.phys.ethz.ch/6697"
phys.ssl = on
phys.autoconnect = on
phys.autojoin = "#isgphys"

Plugins

There are plenty of useful plugins to customize weechat, for instance

  • buffer.pl: show sidebar with list of buffers
  • notify.py: notifications for highlights and private messages

that can be loaded as follows

/script load <scriptname>

If you encounter any errors, you may need to install some dependencies first:

aptitude install weechat-scripts
aptitude install python-notify python-notify2

Usage

It's best to start weechat in a dedicated GNU screen session:

screen -S weechat
weechat

which you can then detach with Ctrl+A -> Ctrl+D, and re-attach later screen -d -r weechat.

Relay / Proxy

Weechat can act as small irc server to which other clients can connect. This allows to connect GUI and mobile clients to the same weechat backend to access all irc channels under the same username. When using this you should ensure that the relay is encrypted with an SSL certificate to avoid plaintext traffic over the internet. As this is an advanced topic we only sketch the important steps for the power users.

The following weechat commands activate the IRC proxy

/relay add ssl.irc.phys 8001                    # activate ssl-encrypted irc relay for the PHYS server on port 8001
/set relay.network.passwort <randompassword>    # define a password for relay connections
/relay sslcertkey                               # (re-)load the
/save                                           # save configuration changes

Example snippet to execute when renewing Let's Encrypt certificates to update and reload the file in weechat:

cat /etc/letsencrypt/live/example.com/privkey.pem \
    /etc/letsencrypt/live/example.com/fullchain.pem > \
    /home/johndoe/.weechat/ssl/relay.pem
chown johndoe:johndoe /home/johndoe/.weechat/ssl/relay.pem
printf '%b' '*/relay sslcertkey\n' > /home/johndoe/.weechat/weechat_fifo_*