Sunday, 11 March 2007

gTwitter 0.1: a Linux client for the Twitter social network

Twitter is among the last fads of social networking. For whose of you that don't know, Twitter is something in between a blog and an IM. It leaves you post a brief, SMS-like message (maximum 150 characters) that your Twitter friends can almost instantaneously read. Twitter is the place for every small idea, activity, thought you would like somehow to share, but that is not worth a blog post and you don't want to engage in a direct conversation about. It can be labeled among the best ways Internet has to distract you and make you absolutely non productive, but it is admittedly fun and somehow addictive.

Twitter has a relatively nice web interface, but it is often best used with a dedicated client. This is usually a small application, more like a desklet or widget, that periodically reads new "tweets" from your friends and allows you to instantaneously post a new one when you urge to. The most popular Twitter client is the Mac OS X Twitterrific, and there are analogous clients for Windows.

GNU/Linux and other free systems until a few days ago had little choice. This was even stranger and sadder given how simple the Twitter API are. I was just pondering about writing a Twitter client when I see that the 0.1 version of gTwitter, the first free, Linux-friendly Twitter client I am aware of.

I immediately downloaded the source code tarball .tar.gz and tried it. gTwitter is written in C# with Mono, and needs a few dependencies (The latest GNOME development packages (gtk+-2.8), A full Mono Development stack (mono 1.1.x, gtk-sharp-2.0, etc.) and the Cairo graphics library (cairo 1.0.x) ). On my stable Gentoo Linux box it compiled extremly quickly and without a hitch with the usual source tarball procedure:

  • download the gTwitter .tar.gz
  • unzip gTwitter:

    tar -xzvf gtwitter-0.1.tar.gz
  • enter the gTwitter source directory:

    cd gtwitter-0.1
  • configure the source code:

  • compile:
  • now become root (or use "sudo" on Ubuntu) and install:

    make install
  • exit the root shell by typing exit and just type:


    to run the program.

    Free Image Hosting at

    I played with gTwitter on my Linux box a bit and, despite its alpha status (just version 0.1, folks!) it seems to be perfectly usable for the main basic tasks of Twitter: reading and posting "tweets". The application is very small and fast and starts fantastically quickly. The GUI is very clean, and borrows a bit from Twitterrific: despite being GTK/Gnome based, integrates quite well in my KDE desktop. If you wanna see it in action , you can see a gTwitter screencast here.

    Of course, being a 0.1 release, it is still a bit rough around the edges. A notification area icon is, in my opinion, the first feature to implement, so that one can keep an eye on new tweets without having to open/activate gTwitter. A composite-enabled UI would be really cool, and the gTwitter author (Nil Gradisnik) tells on his blog that it is already in the works. Making the whole GUI smaller would also be nice, so to have gTwitter working effectively as a small, unobtrusive widget.

    Anyhow, gTwitter is a little but well implemented and promising application for Linux and other free software users that engage in this social network. I would advice twitters to give it a try without hesitation, and keep a look on its developments.


    Nil said...

    Thanks man, I appreciate it.

    m said...

    It seems like it would be possible to merely distribute the executable for this program to simplify the installation.

    Nil said...

    I agree.
    I'll do that when I release 0.2 version.
    The 0.1 is just for testing, it's got quite a few bugs :)

    The General said...

    I ran into this error:

    Unhandled Exception: System.ArgumentNullException: Argument cannot be null.
    Parameter name: s
    at System.Int32.Parse (string) <0x0004e>
    at gtwitter.MainWindow.OnTreeview1CursorChanged (object,System.EventArgs) <0x00154>

    but then I added this on line 183:
    if (navigation == null) navigation = "1";

    which patched up that error, but may have created this one:

    at <>AnonHelp<2>.<#AnonymousMethod>2 (object,System.EventArgs) <0x00146>
    at (wrapper delegate-invoke) System.MulticastDelegate.invoke_void_object_EventArgs (object,System.EventArgs) <0x00041>
    at InvokeCB.Invoke () <0x0001a>
    at (wrapper delegate-invoke) System.MulticastDelegate.invoke_bool () <0x00037>
    at TimeoutProxy.Handler () <0x0002a>
    at (wrapper native-to-managed) TimeoutProxy.Handler () <0x00036>
    in (unmanaged) 0xb7ebddd5

    and that one's beyond me.

    I think it has to do with me just starting up, because it seems like the kind of bug (at least, the first one does) that wouldn't appear if you have a few entries already in the Treeview.

    m. s. said...

    You should tell it to Nil Gradisnik, the original gtwitter developer.

    I'm just a reviewer :)