Group Test: IRC Clients

Graham Morrison experiences the old world charm of a group chat technology that predates Facebook by a generation.

We’ve become so used to the idea that newer is better that it’s difficult to envisage anything old competing with anything new. Web browsers, desktops, laptops and even distros are overhauled so often that running an old version feels difficult and anachronistic.

But there’s one significant exception, and that’s something called Internet Relay Chat (IRC). To the uninitiated, it’s like chatting in Google Talk or Facebook Messenger with more than one person at the same time. IRC is a child of the BBS-era (Bulletin Board Systems), predating the world wide web, the first SMS messages, hashtags and the rise of social media. And because you’d often have to dial into a BBS from a low-bandwidth modem, efficiency was everything. Even the fastest modems of 1988, when IRC was created, connected at a mere 2400 baud – that’s only 2400 bits per second in the technology of the time. JPEGs might take 30 minutes to load, video conferencing and voice was impossible, and that left text, and the initial rise of IRC.

What makes a good client?

IRC is a contentious platform, a little like email. Old-school users will swear by their command-line tools, while others will like the cuddly ease of a nice GUI. As far as we’re concerned, it doesn’t matter as long as it gets people using IRC instead of Facebook Messenger or Google Hangouts. But a client does need to be reliable, transparent and flexible, and if possible, accommodate as wide a spectrum of users as possible. It’s these attributes that we’ve focused on, so that whichever client you end up using, you should be able to use indefinitely until something better comes along.

That IRC has survived and thrived in the 21st Century is a testament to its original design and simplicity. Get a client, connect to a server and join any channel you find interesting. Channels in this sense are a little like the channels on Citizens Band radio of the 80s, and there are channels for everything, from exploring your Arch fetish or early masterpieces of the Ultima franchise with the Exult channel, to 3D printed psycho robots (#robotics) and your very own Linux Voice (look us up on Freenode).

IRC use is also growing, not just because it’s an open platform out of the control of big corporations; it’s also mature, secure (if you want it to be), and globally accessible. Now that more of us are working remotely, IRC has become the perfect medium for both informal chat and serious planning. Which is why finding the perfect client has never been so important.

Getting started with IRC

As we’ve mentioned on the first page, IRC is a form of group messaging where the groups are hosted on a server. You can create your own server using something like UnrealIRCd, but the majority of users connect to servers that are already running. The most popular is a network with a Free Software bias called Freenode (it’s not really a single server, but a portal to a network that’s automatically load-balanced and managed).

Freenode peaks at around 80,000 consecutive users, it’s still growing, and it’s where you’ll find our own channel, #linuxvoice. Other networks include IRCNet, Efnet and QuakeNet. Channels are usually moderated by one or more operators who have the power to kick (or ban) people from the channel if they’re not adhering to the rules. Any rules will appear when you connect to a network or to a channel.

Konversation 1.5: The KDE Kontender is a tough act to beat.

Firstly, we like Konversation’s GUI because it’s both minimal and utterly configurable. The list of users within a channel can be discreetly slid over to the side of the main window, and while it’s a difficult option to find, you can expand the input box to use multiple lines. Font support is excellent and you can change the colours for everything. We wish these options could be encapsulated into a theme engine to aide easy import, export and sharing, or take some hint from the global colour scheme, because we like to change between dark and light themes depending on the time of day, but it can be made to look exactly how you want it to.

Server logs and messages for each channel are tabbed. Tabs can be moved to the lower, upper or left borders of the main window, and the clever Watched Nicks, URL catcher service and the DCC status panel can exist within their own tabs too.You get on-screen notifications containing new messages, and the system tray icon flashes with new updates. A channel list can also be opened on a separate tab, and kept open, which is a better solution than the pop-up windows offered by most other IRC applications. Entering messages themselves is easier with the multi-line input, and we rely on the excellent auto-spellchecking. As with other clients, pressing Tab will complete a nickname, and you can right-click on various GUI elements to create shortcuts to a variety of IRC commands. Right-click on a nick, for example, and you can enter message mode or perform a ‘whois’ on a user. All useful stuff for people without IRC in their DNA.

Finally, this wouldn’t be a KDE application if it didn’t enable you to open another tab containing the excellent KDE terminal console, Konsole. We also like the way Konversation handles multiple connections and servers, although it’s a little counter-intuitive. This is because, to add a new server, you need to link a server with an identity. We think this is to facilitate KDE’s global identity functionality, so that your name and contact details are set in one place and used in many. If you use multiple servers with the same nick, you can simply add them from the identity dialog.

You can also have more then one nick per identity (this is getting complicated), but the separation between identities, servers, nicks and channels is useful if you use IRC for both work and for social networking. There are plenty of options that enable you to connect to channels automatically, register your nicks or accomplish almost anything else through a script. A separate field for identities is useful if you use ZNC for multiple servers and need different login values, but you’ll need different identities for different servers as there’s only one field per identity (and not per nick).




Version: 1.5

Licence: GPL

A excellent option for KDE users, and worth the KDE library install for everyone else.


XChat: This is the client you’ve probably already got installed.

If there’s an Old Pretender to the IRC client crown, it’s XChat. It’s been around since 1999 and it’s also one of the most portable graphical clients we’re looking at. There are versions for Windows, Linux and OS X, and it’s also possible to run the client as both a graphical application and a command-line utility.

XChat is also the default IRC client for many distributions, and the first client many people go to when they start experimenting with IRC. This isn’t a bad thing at all. XChat is stable, functional and easy to use. When you first launch the application, for instance, it’s one of the few clients that gives you a list of servers and a pre-configured username based on your login name (albeit one that will change to Guest??? when you’re connected to a server where that nick is already taken). Clicking on a server will connect, and you can easily join a channel you know or download a searchable list from the server. It’s easy and works well, although we wish it cached the channel list for a while.

We really like the hierarchical view of connections over on the left. This lists the servers and channels you’re connected to, and if you’re connected to a few, takes up less space than a tabbed view. But you can also choose a tabbed view if that’s what you prefer. The GUI is drawn using an older version of GTK, and this gives the application something of an old Unix feel. This isn’t bad – and it also means you’ll be able to use XChat wherever you install it, but neither is its appearance going to satisfy the eye candy brigade (if there is one). We also miss proper desktop notifications and a system tray icon that highlights unread or missed messages. And while there is a plugin system in XChat, it’s little more than a scripting engine.




Version: 2.8.8

Licence: GPL

An good option if you’ve never used IRC before. It’s uncomplicated, but also unimaginative.


Smuxi 11.0.0: Ignore the name and there’s lots to like here.

Smuxi is an unassuming IRC application that can also connect to Twitter, Facebook and several other instant messaging protocols. But this in no way diminishes its IRC credentials, unlike in Pidgin, for example, where its inclusion is more of a convenience. It can also be launched in console-only mode, in server mode (referred to as the engine) and with a straightforward Gnome-based GUI. It’s one of the most powerful applications in this group test, while remaining easy to use.

On launch, it will helpfully connect to its own support IRC channel while also asking which server you’d like to connect to. Its interface is XChat-like, and you can start using IRC immediately without any further familiarisation. We like any application that includes presets for servers, as most of us will only be browsing for groups on a small selection of well known addresses, and the ‘Find Group Chat’ function lets you quickly search through the channel list (and caches that list for a time), which feels very intuitive. Despite a GTK-based GUI that’s in transition to version 3, and still looking like a throwback to the late 1990s, we love the nick colouring that keeps the same colours across channels, and it’s definitely an upgrade from XChat. System tray notifications also work across desktops,

We also love the inclusion of a powerful filter interface that can be used to cut almost anything out of your chat windows, from ‘join’, ‘left’ and ‘quit’ events through to only highlighting conversations you may be interested in. It’s not simple to confgure, but it is powerful and it’s a feature unrivalled in any of the other graphical clients we’ve looked at. All of which makes Smuxi a brilliant option if you’re not fussed about austere GUIs. It’s perfect for the power user or the new user who knows they’re going to need room to grow.




Version: 11.0.0

Licence: GPL

A decent upgrade to XChat, and worth keeping an eye on for a GTK3+ overhaul.


Quassel: It’s powerful and good looking. Just like us.

If you include Konversation (and Kirc, though we’re not covering it) via KDE’s dependency on Qt, the Qt tookit is doing rather well in our group test. Quassel is another Qt application, similar to the other two but without the dependency on KDE. It uses a similar array of identities, servers and nicks to Konversation, which can make configuration a little tricky, but it’s also easier to install and more portable. Like XChat, you can find Quassel on both Windows and OS X, as well as your favourite Linux distribution.

It’s also an application that borrows its visual style from XChat – there’s a hierarchical server and channel panel on the left, the chat window in the middle and the nick panel on the right. Any of these elements can be moved around, giving you maximum flexibility in how you like your IRC sessions organised. There’s even an option to remove the input field, which could be useful if you’re only monitoring a channel, although we missed the option for multi-line visualisation even when the input lines can be increased.

There are some great GUI touches. Hover over an image URL, for example, and you get an image preview. You can also configure custom chat lists, which is useful if you want to limit a list to a specific server or a specific number of channels, and a channel will turn green when a new message is posted. Senders can have a different colour (as they can in Konversation) and the search highlighting is very easy to see. There are also plenty of notification options including a working event for the system tray.

But we’ve kept Quassel’s best feature until last. While you can run it as a standalone application just like any other IRC client, Quassel also provides two split components – a core and a client, which can be run separately. It can split the core and the client components so that the core connects to your servers and channels while the client(s) provides the input and interface. This has one huge advantage – create a core user from the command line and you can run the core on a server that’s always connected to your channels. Connecting from a client will then play back messages while you’ve been away. It’s a simple way to get offline buffering of your channels, which can be essential if you use IRC for work, but it also integrates perfectly with the client.




Version: 0.10.0

Licence: GPL

Looks fantastic, and almost matches Konversation for configurability. IRC Commands


Our 200 word guide to interacting with IRC

There are many guides to getting started with IRC, but to help with the demystification, here’s our tips to getting started. Anything you type will appear to everyone else in the channel unless it’s a command preceded by the / character. Typing /help will give you some hints from the server on getting started. /connect SERVER will connect from the command-prompt, while /join #CHANNEL will join the channel. /nick changes your nickname, but this will need to be unique to your network. You can send a private message to someone with /msg Mike MESSAGE, and you can connect peer-to-peer to someone using the /dcc command (ie not through the server). /dcc chat Mike will open a chat session with Mike, for example, or we can ask to send a file to him using /dcc send Mike file.odt. Though not necessary, many people animate their chat with /me (/me has another glass of wine will appear as Graham has another glass of wine), and /describe. Finally, if you step away from your machine for a while, use /away (your client may do this automatically), or /quit to leave.

Irssi vs WeeChat: It’s the battle for the command-line!

We’re about to dive into a couple of command-line clients, which means we’re heading into contentious territory. Users typically invest so much time getting terminal clients exactly how they like them, and the command-line is perfect for such modification, that they become wedded to their favourite. And we’re particularly fortunate because there are two awesome command-line tools that are both brilliant and probably good enough to tempt many of us away from the padded luxury of point and click.

Irssi is the one to beat. It’s been around for a long time and is the default choice for many CLI users. Development has been slow over the last few years, but in June, the project moved over to GitHub in the hope of attracting a new developer community. It’s not even difficult to get started with. Install the package, run irssi and the example config command, then connect to Freenode and join your favourite channel. Servers and networks can easily be added through further commands (type /help to see a list) and you can switch between them and servers and channels using Ctrl or Alt shortcuts. It’s quick, powerful and easy to use. More importantly, most users download and install third-party Perl scripts to extend Irssi in any way they choose, from custom highlights and showing a nick list alongside the chat view, to themes and music playback. There are already hundreds, and it’s quite easy to write your own.


Don’t be put off my the console colours: Irssi is simple enough for anyone to use.


WeeChat has become a popular alternative to Irssi, as it’s been able to capitalise on Irssi’s development doldrums over the last few years. It’s what we’ve run on our VPS for a couple of years, and while complex to start with and somewhat unforgiving, we’ve not found a better client.

At its core is the idea of a buffer. You can have many buffers, and each buffer can host and cache a server and session, as well as multiple sessions. You can switch between buffers and sessions using the function keys and split the views horizontally or vertically many times between buffers. This means that you can configure WeeChat to show many channels at once, usually more efficiently than you can with a GUI application, and switch between them using the function keys. You can enable some to show the nick list, and some to not, and save multiple screen layouts and configurations with the same commands you use within the app itself. We also love the instant keybinding and the spellchecking that can highlight spelling errors on the editing line, and the Tab command completion that works for internal parameters. It all works brilliantly.

Many of the IRC clients we’ve looked at support scripting, but WeeChat has taken this to a new level. Type /script and the display lists hundreds of scripts that have been written and can be installed and activated in-place. Almost everything has been thought of. There’s a variety of different notification systems, which is important as there’s no desktop integration. You can run shell commands from within your IRC sessions, and even play Snakes or Tetris.

Working with both Irssi and WeeChat are a little like working with Emacs and Vim – you have to go through a considerable learning curve and use IRC regularly enough to keep what you’ve learnt in your local cache. But if you do, you’ll find both more productive and efficient than their GUI equivalents.

These applications are always going to be a tough proposition for GUI users as beginners to IRC, but they’re also a reminder of why the terminal is still so important even today, and why, in many ways, it’s likely to outlast the desktop in its usefulness.


WeeChat has some extra features, such as split views, that can become essential.




Version: 0.8.16

Licence: GPL

Smart and simple to use. If you think you might like CLI IRC, try this first…




Version: 0.4.3

Licence: GPL

If you find yourself needing more control, perhaps level-up to WeeChat.


Our Verdict

Without exception, each client we’ve looked at has a reason for it to be chosen as our favourite. Quassel, for example, has the best no-fuss separation option for client and server. It means you could run the core on a Raspberry Pi, for example, and catch up with your channels whenever you’re connected. Several other clients offered similar features, but only Quassel combined this with what we consider a powerful GUI.

If we were to choose a GUI application, and we should to try to encourage new people to use IRC, we’d go with Konversation. Apart from a lack of scripts and extensions, we found it to be the most powerful desktop application. It did everything we asked for, and after getting our heads around the identities for networks, we found it easy to configure in even complex and bespoke IRC setups (which we use for putting the magazine together). The GUI can be subverted into almost any appearance, and there were easily accessible functions for filtering the most common chat annoyances, as well as watching nicks for activity – which is something we often want to do. The tabbed interface also makes it great for managing a large number of channel connections at once.

But we’re not going with Konversation. We have to admit we’re smitten by WeeChat. In our opinion, it’s the Arch of IRC clients. Its forums are not friendly to newbies, and it’s slightly bewildering to get started with. But we think it offers enough of an advantage on the command line that it’s worth ditching the desktop for.

When you add all the advantages that the terminal brings for free – such as persistent screen sessions on a Raspberry Pi server, or low-bandwidth access from almost any SSH client, we think WeeChat is the best client to grow into. It’s got the same feeling of liberation you get if you switch from a GUI email client to Mutt, or start using Bash more, but without sacrificing any function. Let us know if we’ve missed your favourite client out and we’ll make sure we mention it next time. Why not let us know on our own IRC channel? You can find us as #linuxvoice on Freenode. See you there!

1st WeeChat

  • Licence GPLv3 Version 0.4.3
  • Yep, it’s a terrible name. But whenever have we let that get in the way of great software?

2nd Konversation

  • Licence GPLv2 Version 1.5
  • This is our favourite option if you’re looking for the most powerful GUI client.

3rd Quassel

  • Licence GPLv3 Version 0.10.0
  • If you want to experiment with a simple graphical client–server setup, try this option first.

4th Irssi

  • Licence GPL Version 0.8.16
  • If WeeChat is over-engineered and you need something on the terminal, Irssi is the best.

5th smuxi

  • Licence GPL Version 11.0.0
  • It’s incredible that such a brilliant app can come fourth in our list, but that’s only because they’re all so good.

6th XChat

  • Licence GPL Version 2.8.8
  • The same can be said for XChat. It’s a great little app that works perfectly and is perhaps the best place to start with IRC.

You may also wish to try…

There are so many IRC clients, it’s difficult to know where to start. You can coerce Pidgin into talking IRC, for example, and if you’re a KDE user, KVirc is rather excellent. It will already be included in many KDE-centric distributions, so you won’t need to do anything more to try it out. We missed this out purely because we were already looking at two KDE-based applications and we thought three would be too many. Also worth a look is the old Mozilla client, ChatZilla, which works perfectly well and is very easy to use, especially alongside Firefox. It’s still being developed and needs to be installed as a Firefox addon.