So I recently made some adjustments to the way that I do my chats and thought it might be interesting to share. So in keeping with my extremely nerdy and sparse blog posting, I bring you this installment.
The objective: maintaining a bunch of connections to IRC and IM networks as persistently and easily as possible.
ZNC is a very nifty IRC proxy. I’ve used IRC proxies in the past, but I remember not being entirely satisfied with whatever I tried, so I haven’t played with them in some time. Well, Darren Kitchen of Hak5 did a little segment (13 minutes into episode 1104) about ZNC that really interested me.
Apparently, ZNC is written in raw C++, so it’s fast and efficient, it’s exceedingly simple to set up, and it even has a very nice web interface that allows you to manage everything. Being an IRC proxy daemon, ZNC launches, gets and stays connected to any IRC servers or channels that you have configured, and awaits the user to connect. The user is then able to use any IRC client to “reattach” to the IRC sessions in progress: all the channels appear, and the last X (configurable) lines of conversation are thrown at your IRC client, with timestamps.
It can auto-authenticate with nickserv services, prevent you from accidentally parting channels, change your nick/status when you disconnect, try and keep your nick on a server with no nickserv, and a whole bunch of other features through loadable modules. Again, I was really impressed at just how straight-forward ZNC is to set up and use.
So I was just using irssi under screen on my server for IRC, and various GUI apps for AIM/GTalk (Adium on OS X and Pidgin on linux). When I reboot the server or restart irssi, I reconnect to all the servers and usually have to manually identify with a couple nickservs. (I’m sure there’s an irssi script for this; just never bothered.)
Now, ZNC launches when I boot up the server and it connects to about 7 different IRC servers. (I wasn’t even participating on a few of them, just due to the annoyance of rejoining them with the old setup.) I then use irssi under screen (just like before) except this time, I can restart it and nobody can tell. I can even connect with more than one client, so I could leave my irssi running under screen all the time, and also use a GUI or Android IRC client if I feel like it.
I suppose it was after I had ZNC up and going that I remembered a tool I used some time ago. It’s called Bitlbee and it’s essentially an IRC server with a built-in “service” that allows you to connect to any of the popular IM services. So all your buddies are just in the channel with you and you can use “Nick: Hi” to chat with them, or use a PM for a dedicated window.
So, living up to my AIM “screen name”, ThreadUsesIRC, since they wouldn’t make the switch with me, I just made it look like they did. :D
Oh yeah, and if you’re on OS X and want Growl notifications when someone highlights or PM’s you on irssi, this page has a great solution. I have it set to automatically restart 60 seconds after wake on my Air, so I get them even if I haven’t reattached to the session yet.
On Android, using Trillian is still loads easier on the battery than an IRC client for being connected all day.
I think I’ve covered all the big stuff. I really like irssi and its themability, split windows, and its ability be long-running under screen on the server. It means reattaching is an instant away via a global hotkey.
And now I’ve found a really easy to use, full featured tool to keep all my IRC and IM connections open all the time and in one place.
Do leave a comment if you have any thoughts or questions !
Update 2012-08-20: Per request, I’m providing the oscar-thread irssi theme which is basically px’s oscar theme on the irssi themes page with some modifications of my own. Extract the zip and drop the .theme file in your ~/.irssi dir and use /set theme oscar-thread from within irssi to set the theme. Another trick I enjoy is using a particular color profile within my terminal app to visually differentiate it from my other terminal windows.