My IRC Setup

· web irc
This blog post is more than two years old. It is preserved here in the hope that it is useful to someone, but please be aware that links may be broken and that opinions expressed here may not reflect my current views. If this is a technical article, it may no longer reflect current best practice.

I use IRC every day. I use it to speak to people at my local hackerspace and to fellow Debian or Tor Project developers. My set up is a little complex but every part serves a purpose.

Connection diagram for my IRC setup

Connection diagram for my IRC setup

The service that actually performs the connections to IRC servers is ZNC, an IRC bouncer. The main features this provides are aggressively remaining connected to ensure that I’m not missing anything and also to authenticate to NickServ automatically in the case of a disconnect. Other features from ZNC I use are the keepnick plugin (to keep trying for my primary nick) and the chansaver plugin to keep track of which channels I’m in.

Bitlbee is an instant messaging to IRC gateway that allows you to use other chat protocols from an IRC client. It has native support for Twitter and GNU Social, and so I have these accounts here.

In the past I have used irssi as a terminal based IRC client, but my preferred client is now weechat. I’ve made a number of customisations to the default Weechat configuation1.

The following will help out with a far more usable buffer and nick list:

/script install buffers.pl colorize_nicks.py
/set buffers.look.hide_merged_buffers all
/set weechat.bar.buffers.items buffers
/key bind meta-n /bar toggle nicklist

The following will make Weechat a lot easier to read with the Solarized theme:

/set weechat.bar.status.color_bg 0
/set weechat.bar.title.color_bg 0
/set weechat.color.chat_nick_colors 1,2,3,4,5,6
/set buffers.color.hotlist_message_fg 15
/set weechat.bar.buffers.position top

Then I look to cut out useless notifications. Starting by hiding join/part messages and not treating them as “activity” in a channel:

/set weechat.look.buffer_notify_default message
/set irc.look.smart_filter on
/filter add irc_smart * irc_smart_filter *

In bigger channels, I only show activity if I’ve been highlighted:

/set weechat.notify.irc.oftc.#debian-devel highlight

I also make a couple of changes to better support ZNC:

/alias add znc /quote znc
/script install zncnotice.py

and for Bitlbee, I want to highlight on my Twitter username:

/script install buffer_autoset.py
/set weechat.notify.irc.bitlbee.#twitter_iainlearmonth highlight
/buffer_autoset add irc.bitlbee.#twitter_iainlearmonth highlight_regex iainlearmonth

Finally, one of Weechats most attractive features is the relay protocol. This allows you to have remote frontends connect to your Weechat instance. I occasionally use Glowing Bear, a web interface, and have in the past been a heavy user of Weechat Android and hope to get it set up on my phone again soon.


  1. Many of the customisations I have made to my Weechat configuration are taken from this blog post by Ben Oliver. I would recommend a read if you’re wanting to have a go at Weechat. ↩︎


If you would like to contact me with comments, please send me an email.
If you would like to support my free software work, you can support me on Patreon or donate via PayPal.