Thursday, November 6, 2008

MCabber: a command-line-only multi-protocol IM client

Command-line geeks, its time to stay focused on your terminals and not switch to X back-and-forth when chatting with your buddies.
mcabber is a small Jabber console client.
mcabber includes features such as SSL support, MUC (Multi-User Chat) support, history logging, command completion, OpenPGP encryption, OTR (Off-the-Record Messaging) support and external action triggers.

As you can see MCabber is just a Jabber client. So you can not use it to connect to your favorite IM servers like MSN, Yahoo!, GTalk,...

However, you can use it to connect to these networks with little effort. All you have to do is to install OpenFire (or any Jabber server software) and enable the GatewayIM plugin. From its name, this plugin enables you to connect to other IM networks. Just create an account on your Jabber server through its nice web interface and configure it with other networks login information. Next, let MCabber connect to your server and do everything you love.

To install MCabber on Debian/Ubuntu just type:

sudo apt-get install mcabber

Before you connect with the server, you have to configure MCabber first. The only mandatory configuration is server address, port, username (jid format: username@servername, you can know the servername from OpenFire admin console) and password. You can start with the example configuration file by copying it to your home directory:

cd $HOME
mkdir -p .mcabber/histo
zcat /usr/share/doc/mcabber/examples/mcabberrc.example.gz > .mcabber/mcabberrc

So far, I have been talking about everything old! Anything cool here?

A great functionality of MCabber is that you can write an external script in any language and let it handle IM events like message received, buddy logged in, ...
I have wrote a bash script which plays some nice sounds (got them from Pidgin) on some events, so that you don't have to poll mcabber "window" to watch for new messages! You can download the script from here.

Update: The script now "says" the jid of the buddy logging in/out! However, you need to install festival before you can use this feaute:

sudo apt-get install festival

Don't forget to turn on execution bit or it won't be able to run.

chmod u+x $HOME/.mcabber/

Don't also forget to edit mcabberrc to tell it to use that script for handling events

set events_command = /your/home/directory/.mcabber/


emmanuel said...

hello, good tutorial, but the link for the example script doesn't work.

hammady said...

Sorry for this mistake, please get the script from this new link:

McKael said...

- MCabber is not a "multi-protocol" client;
- You can connect to GTalk as it is based on XMPP!

hammady said...

I guess you didn't read the post till the end! I know MCabber is not a multi-protocol client. However, in this post I showed how to use it to connect to several networks using an XMPP backend (openfire) as a gateway, which effectively makes it multi-protocol client, and this is the trick!

Everybody knows GTalk is based on XMPP, did I mention anything other than this?!
Please read the post till the end before claiming any corrections.

McKael said...


Yes I read the post, of course, but unfortunately I totally missed your point about making it a multi-protocol client.
Sorry about that, hammady.

Regarding GTalk, you didn't say it wasn't based on XMPP but you said "So you can not use it to connect to your favorite IM servers like (...) GTalk" and that's what I was referring to.

Anyway, there was really no offense intended and I apologize if my comment looked aggressive.