Top 5 IRC Clients (IMO)

I’ve used many IRC clients before,

1. weechat

While weechat is a terminal IRC client, it is my favorite IRC client, mostly due to its configurability, and its large plugin(script) repository. which also shows off how easy it is to play with the plugin API. There are 309 scripts in weechat’s repository as of Apr/25/16, this is mostly from being able to write scripts in multiple languages. Currently, you can write plugins in,

Some of Weechat's Abilities - IRC Clients Some of Weechat’s Abilities

  • Python
  • Perl
  • Ruby
  • Lua
  • JavaScript
  • Guile
  • TCL
  • C

2. KVIrc

KVIrc, or K Visual IRC, is my second because of the lack of forward development on it, not just the client itself, but rather plugins and themes mostly, but that isn’t their fault.  It has a decently fleshed out appearance, although there are some minor graphical glitches sometimes.

KVIrc clients screenshot Basic KVIrc look


It also allows native scripting, in a language known as KVS, based on perl, which can be used within KVS. All of KVS’s functions, commands, etc are all packed into its help browser, opened by /help, its amount of functions seems to be around twice the amount of what mIRC has.


3. AdiIRC

AdiIRC is seen by many as a mIRC clone with some improvments, somethings that were 3rd party addons have been hardcoded into the client, as well as some extras.  One of the extras is the addition of passive popups, not unlike KVIrc’s for channels and nicknames. Another improvement on mIRC is AdiIRC’s more advanced server list, which itself has had multiple versions, as well as the native inclusion of SASL features for networks that support it. 

Some of the scripts that have been made for mIRC in the past have been included natively in AdiIRC, such as the use of MTS or mIRC theme standard files to load themes that began as an advanced addon for mIRC.

AdiIRC is great at looking like other clients AdiIRC’s weechat flavor

Some of the extras that came with AdiIRC were the use of native highlight, url, and other ‘monitor’ panels. These allowed easy access to these features without having to manually script something like these in, as well as having them inside the main window, instead of their own ‘window’ in the client.

I myself see AdiIRC as a mIRC+KVIrc hybrid, minus the ability to script in perl of course. Its a very good client for those beginning with IRC, but wanting something that is more intuitive than mIRC, more so when it comes to scripting, or having some features already, instead of having to code each event or window.

4. mIRC

mIRC is a client that has a rich scripting interface, but lacks on the graphical side, it often is very clunky, and its window code gets very slow. It however is very useful in making IRC bots and other IRC helpers, such as context menus and dialogs, as well as being able to load a separate window and use it in many ways, much like what AdiIRC’s monitor windows do natively, but that you can add more uses to them instead of the hard coded actions.  One use for those that own a network, and use mIRC, is that instead of having all of the notices you get, meaning both regular /notice and SNOTICEs do not flood your status window or your current window. Of course this difference all depends on how you have your settings. However, you can then make a script that then adds all Server NOTICE to a separate window to keep everything else clean.


5. XChat/Hexchat

With XChat, the fault lies in its trouble of configuration, as well as the difficulty in changing the look of the window. Instead of choosing your own themes and such, you mostly have font changing abilities or you can change between certain ‘look&feel’s which are usually between GTK, Tango, and Motif themes, if my memory serves me correctly.
With its configuration, some of the settings that someone coming from mIRC or another client may have is having /whois replies come to the current buffer or other events, have to instead first look at the help file, which doesn’t easily tell them of the /set command, which has ~50 options behind it.

While it has some faults, its usefulness is much like that of weechat. Its scripting languages are less than that of weechat, but mostly in the same format, both in the way the files are supposed to look, and in how the methods are called. This means that someone that came from xchat to weechat, or vice-versa could easily pickup or port their scripts. XChat allows some of the same languages allowed in weechat, namely, C, Python, Perl, and TCL.

xchat_screenshotNow with Hexchat, many things are the same, mainly because Hexchat began as a free fork of XChat, but turned into its own client, but still borrowing most of the things that started with XChat.  Settings are are a bit more fleshed out, some plugins are included with the installer. Most changes are seen through the appearance and menu items, as well as some of the code. Most of the changes with the scripting API just were renaming the functions, xchat->hexchat.


All in all, most of the features in these clients are all the same, but most see a change in how additions can be made, or how they look. With myself, the structured look of weechat and its ease of configuration and scripting, make for an easily like environment. KVIrc on the other hand has a flashy and colorful GUI, which is liked by many that use it, its ease of native scripting is on par with that of mIRC and AdiIRC’s although with some differences. AdiIRC and mIRC would’ve been put together, but the inclusion of some of mIRC’s earlier addons into its native code has put it in its own rank. mIRC, though by far has the most use, and most of the features in other clients, mainly KVIrc and AdiIRC seem to have come from that. HexChat and Xchat though seem to be the easiest to use outside of web clients.

Clients I’ve used

  • weechat
  • KVIrc
  • AdiIRC
  • mIRC
  • xChat
  • Hexchat
  • IceChat (briefly)
  • HydraIRC (briefly)
  • irssi (briefly)
  • ChatZilla
  • Opera’s IRC plugin
  • Pidgen
  • ThunderBird
  • web client (KiwiIRC, Mibbit, qwebirc, iris)

How To: Ruby+Passenger+Sinatra

Starting Off


Since I can’t put everything in the title, you need to know some things first before you try anything. If you’re going to be using ruby to make a website, or any kind of rails app, with Sinatra or otherwise, its best to go with whats called Passenger which attaches to your running webserver as a mod, for either Apache or nginx, or as a standalone server.

Some Pointers

Your best shot, in my own opinion would to also use a framework, or some could say ‘helper’ to make coding the website easier, the one I’ve found is Sinatra which has many of its own little helpers that can be used.

What you need

Folder Structure

Alright, now that you have them all set up, you need a good folder structure, this makes it easier to move around, and as you’ll see; let Sinatra and Passenger work well. Below is what the directory structure of looks like.

├── botlist.json
├── bot.rb
├── common.motd
├── def.rules
├── favicon.png
├── my_app.rb
├── public/
├── retrieve.rb
├── style.css
├── templates/
│   └── sass/
│       ├── index.sass
│       ├── layout.sass
│       └── uptime.sass
├── tmp/
│   └── always_restart.txt
└── views/
    ├── bot_form.erb
    ├── botlist.slim
    ├── ddate.slim
    ├── index.slim
    ├── layout.slim
    ├── motd.erb
    ├── retrieve.erb
    ├── rules.erb
    ├── uptime.slim
    └── view_info.slim

Made with tree

Making it Work

If you’re going to use Passenger and Sinatra together, you’re going to need 1(actually 2) starting file(s).

require './my_app'
run MyApp


#! /usr/bin/ruby
require "sinatra/base"
require "tilt/erb"
require "tilt/slim"
require "tilt/sass"
require "tilt/haml"
require "json"
class SassHandler < Sinatra::Base
  set :views, File.dirname(__FILE__) + '/templates/sass'
  get '/css/*.css' do
    filename = params[:splat].first
    sass filename.to_sym
class MyApp < Sinatra::Base
  set :protection, :except => :frame_options
  Slim::Engine.set_options pretty: true
  use SassHandler
  get "/" do
    table = JSON.load("table.json", "r"))
    slim :index, :locals => {"table" => table}
# # start the server if ruby file executed directly
# run! if app_file == $0
# end

This is basically the skeleton that I started with, minus the SassHandler considering that’s how I’m getting css into the templates. Now in order to have some of these helpers, easily, you must have ‘gem’ available on your system. If you haven’t already, you will need to install Sinatra for any of this to work.

gem install sinatra sinatra-json

The json one lets you output json very easily with just Ruby code; More on that in a later post

gem install haml slim sass scss

After they are all installed, then you can start making your index.*

↑ Return to Top

Scripts sub-domain updated

I’ve fixed up the scripts sub-domain so that, only the right IPs can access the motd and rules, as well as making a better index page for the sub-domain.


  • If this page or post could use some sprucing up, let us know by contacting us through this link