IRC-Junkie.org – IRC News

All about Internet Relay Chat

ii – A Filesystem-based IRC Client

There are many different IRC clients out there and no matter what your preferences are, you’re almost guaranteed to find one that will suit your needs.

Most clients today provide some sort of graphical user interface or come with an ASCII-based interface. And while the latter, CLI-based clients, are commonly thought to be the most basic variant of an IRC client, i was surprised to find a client that manages to be even more plain: ii or IRC IT.

ii is a “minimalist FIFO and filesystem-based IRC client”, meaning every channel, private message and other server communication is represented by a directory containing an in and an out file.

Even though its sourcecode is just under 500 lines, it supports the most basic commands like joining and parting, changing nickname and setting topics. All other commands currently not understood by ii can be written as per the RFC and will get sent directly to the server then.

Using standard Linux/Unix commandline-tools like echo, cat, tail and grep you can control IRC IT which almost behaves like a normal IRC client then.

Join a channel? Sure, just echo “/j #yourchannelname” > servernamedir/in and you’ll join that channel, creating an out file you can monitor with tail -f.

ii Channelview

ii Channelview

After a little while, your directory structure will look like this:

ii Treeview

ii Treeview

Users of the vim editor who always looked envious at the Emacs editor because of its built-in IRC client ERC – fret not: This blog-post details how to configure vim to be used as an IRC client in combination with ii.

So if you feel like trying something new, grab ii from here and after a fast and hassle-free compiler-run you’re up and running – Who knows, maybe you’ve got a favourite new IRC client?

Copyright secured by Digiprove
Category: Clients, IRC, Software
Tag: , , ,
  • ctrlaltca says:

    does it support logging? :D

    September 13, 2010 at 7:09 pm
  • only_samurai says:

    This is really neat. I’ve played with it a bit by hand and it’s pretty straightforward if you’re used to using the linux command line. What I’m most interested in trying is using this as the backend for an IRC bot. It abstracts away all the networking required and leaves you only with reading and writing text files. Great find!

    September 14, 2010 at 2:01 am
  • Florf says:

    Nice find! I thought of doing this a while back, using SQL instead, and it fit really nicely:

    INSERT INTO networks(server,port,nick,name) VALUES (‘irc.freenode.net’,6667,’florf’,'nothing to see here’);
    INSERT INTO usermodes( mode, args ) VALUES ( ‘i’ );
    INSERT INTO channels(name,nick) VALUES (‘#botpark’,'florf’);
    INSERT INTO chanmodes( mode, args ) VALUES (‘o’, ‘florf’ );
    INSERT INTO bans( channel, nick, hostmask, reason ) VALUES (‘#botpark’,'badguy’,'*!*@*.aol.com’, ‘you suck’ );
    DELETE FROM channels WHERE name = ‘#botpark’ AND nick=’badguy’;

    etc. It meshed fairly nicely, but I couldn’t quite figure out at what level the DB code should work; internal to the client and/or server after parsing the IRC protocol, as the user interface itself, or what.

    The filesystem solution is a bit nicer, though, as it follows the UNIX philosophy of “everything is a file”.

    September 14, 2010 at 5:24 am
  • Asmo says:

    Haha that is really kinda “minimal”!

    But I like the idea, it is how IRC should be IMO, bit experimental and basic.

    Keep it different from IM :)

    September 15, 2010 at 12:05 pm
  • Harvey says:

    I would call ii basic rather than minimal. It does lack some important features but it’s still a nice little IRC.

    May 17, 2012 at 1:27 pm

Your email address will not be published. Required fields are marked *

*