WriteRoom for Linux, sort of.

One of my favorite applications for writing is WriteRoom. It’s a “full-screen, distraction-free writing environment”. It’s good for people like me who are easily distracted or compulsive multi-taskers. Unfortunately it’s only for OSX (Dark Room is the Windows equivalent). Since I won’t run Windows on my Thinkpad and Apple has blacklisted OSX against running on non-Apple hardware, I needed to find a Linux equivalent.

With the full screen plugin for gedit, you can make it look and feel almost like WriteRoom.

  1. Download the full screen plugin
  2. Extract it to ~/.gnome2/gedit/plugins
  3. Turn on the plugin in gedit preferences
  4. Adjust the font and color to suit your needs

Hit F11 and gedit will switch to full screen mode. It’s not quite as specialized as WriteRoom but it gives you the same distraction-free environment to write.

Compiz and SUSE

I popped in one of the evaluation SUSE CDs that I had from LinuxWorld last night and installed it to a spare partition on my laptop. The installer was decent and I was booting up to my desktop quick enough.

I haven’t used an RPM-based distro since the Red Hat 7 days. I’ve been Debian/Ubuntu ever since. I know about Yast but I’ve had to feel my way around a bit. My laptop has an ATI X1400 video card, which means I have to use the binary driver from ATI. I installed this by hand, generating SUSE rpms with the installer and then rpm -i (and manually resolving dependencies, boo). Once I figured out how to register yast, it added some sources, one of which included ATI.

I was very surprised that, with only a few minutes of work, I was able to have fully accelerated desktop eye candy running. Wobbly windows, rotating cube, transparency, etc. I’ve never been able to get that working on this machine with Ubuntu.

The downside is that SUSE apparently comes with GNOME 2.10 or 2.12 (the latest being 2.16). I have no idea how to upgrade SUSE to a more recent version, nor do I know how to install the full Mono stack so I can do some work. I suppose I need to find a wiki or something that describes the process.

I don’t know if I’ll switch to SUSE or stick with the development branch of Ubuntu. I certainly like the visual effects that SUSE makes look easy. If I can figure out the basics of Yast, I might just give it a run.

Banshee Lyrics plugin 0.1

As a result of the GNOME Summit, I have finished my first Banshee plugin: Lyrics.
The Lyrics plugin will various sources and display the lyrics for the currently-playing song. It isn’t network-aware yet. It doesn’t cache lyrics once they’re found. It only queries one source (the next release will query multiple sources). It’s functional enough for a first release, though.

Thanks to Aaron and Jorge, who listened to me talk about lyrics half the weekend.

Back from the GNOME Summit

Jorge, Milosz, Flav, and myself went to Boston this past weekend for the GNOME Summit, held at MIT.

This was my first year going to the summit. I was a little nervous about meeting all of these smart GNOME hackers. I’ve read their blogs, used their work, but I’ve rarely gotten involved and given back. This was my chance to step up to the plate, participate in the parts that interested me and do something.

There are too many people to name, but to everyone I met: you rock! We hacked. We ate. We drank (some more than others). If you were with us, you also rode bus, train, and taxi to get there. Never, ever stay at the Econolodge in Malden, MA. Jorge let Orbitz.com pick it for him. Turns out that was a really bad idea. The rooms were large, which helped to slightly disipate the smell of ferret. Next year we’re going to get a room much closer to the summit, even if we all chip in for a larger room and spread out on the floor.

After Aaron Bockover‘s talk about Banshee, I started hacking on an old plugin idea that I had several months back. I will make an official release in the next day or two but anyone who is brave enough can grab it direct from my bzr repository. I’ve tossed up a page up with all of the gory details. I’m pretty excited about working on Banshee, so expect to see more about it here.

The summit ended with people presenting demos of what they had done that weekend. I was going to sit back and stay quiet but Jorge outed me. My craptastic ATI card didn’t work with the projecter, but jdub rocked it out by showing me how to quickly enable desktop sharing in Ubuntu (a feature I didn’t know it had) and tigert hooked up his laptop to the projector and VNC’d to mine so that I should show off the Lyrics plugin I wrote.

After my demo, Dem showed off drapes, which was a big hit. jdub was aghast that it wasn’t packaged for Ubuntu yet. I expect someone will get that done now pretty quickly. If you haven’t used drapes yet, I highly recommend it. Milosz and I might not always get along, but he’s done a very nice job with drapes. Kudos to him.

I’m back at home now with one good night of sleep under my belt. As soon as I’m caught up with work I’ll make an official release of the lyrics plugin for banshee and get to work on my next banshee eyecandy.

Technorati Tags: , ,

Ubuntu/Gnome Wishlist

Every once in a while I get angsty about the lack of certain features that I wish I had in my preferred distribution and desktop. Instead of bitching about them on irc, I decided to open it up to a more public forum.

The first thing I want to say is that these are things that I want to see, and don’t necessarily reflect the opinion of anyone else. I’m not slamming anyone for these lack of features, but thinking aloud what I would like to see while I consider what effort it would take on my part to make it happen.

I am a slave to my terminal. I typically have at least a dozen terminals active, half of those connected to different machines and the rest assigned to various tasks. I have the single-task terminal, usually to monitor services on specific machines. For that I typically use aterm. For the rest I’ve recently been using konsole. It’s tab support works better than anything else I’ve tried and the keybindings, while not perfect, are at least customizable. That is generally the only KDE app that I use and I’d prefer not to simply for the additional resources required.

There are some interesting ideas floating around about how to improve gnome-terminal. One of them is the integration of gnome-terminal and screen. This is an intriguing idea, but I don’t know how well it would work practically. Like my favorite light-weight, aterm, a good terminal doesn’t need contain an exhaustive feature list. It just needs to do what it does do very well.

Here is my wishlist:

  • Customizable keybindings. I’ve got a certain workflow. I’m flexible enough to change that when warranted but keybindings are one of those things that I’m very particular about (see next).
  • Customizable tabs. Tabs are on top, and you can navigate to specific tabs by “Alt + #”. Completely functional for occasional use, but that interferes with the same keybinding that irssi uses to change windows. I also like to have my tabs on the bottom of the window.

Metacity – The default window manager of Gnome.

Metacity strives for simplicity. It has a limited number of configuration options, aimed more at the new Gnome user. While that’s not a bad thing, I would love to have some more advanced features, such as window memory. There are tools like devilspie that will achieve what I’m after. What sucks is having to hunt down extra software to extend basic functionality.

Language Bindings

There’s been a debate recently about adding [programming] language dependancies to the Gnome desktop. By and large these debates are split across philosophical lines. We tend to take our programming languages very seriously and there is no shortage of opinion about who’s preferred language is the best. Personally, I have no problem with Mono, Ruby, Python, Perl, or O’Caml being added in as a dependancy, as long as the reasoning is sound. Does the dependancy ultimately make for a better user experience? In the case of Mono I would say absolutely yes. Applications like Beagle, Tomboy, Banshee, and f-spot should make that an easy decision to be made.

Now that I’ve bitched, the real question that comes to my mind is, how do you go about making change happen? It’s easy to jump on the soap box and say how you think things should be. Real men and women make things happen. The burning question in my mind is, even if you write a patch to add your pet feature, will it even be accepted? How do you go about working with “upstream”, aka, the people in charge of deciding what should and shouldn’t be, to ensure that your efforts aren’t wasted?

I’ll put my money where my mouth is and write patches but I don’t want to waste my time, either.

Technorati Tags:


I was chatting on irc and organizing my wallpaper when I realized that there was no way to set my background image directly through Nautilus. I cracked open Anjuta and got to work.

Here is the result: nautilus-wallpaper

I still need to wrap my brain around autoconf, automake, etc. I did manage to hack the Makefiles so that the extension is installed to prefix/lib/nautilus/extensions-1.0. Hopefully there aren’t any other quirks with that.

Detroit Hackfest

I’m heading to Detroit tomorrow to hang out with Jorge and the rest of the Detroit crew. A weekend of hacking on code and eating unhealthy food. Just my idea of relaxation.My only dilemna is what to hack on. Here are the current candidates:

tomboy – Adding network support so that you can access and search notes across multiple machines. Ideally advertised with rendezvous. No more wondering which machine you left a note on.

libnautilus-pr0n – Add some new functionality to my nautilus media-sorting extension, like exif tags and perhaps video support.

gnome-launch-box, a very cool launcher. I’ve patched it to work with Ubuntu Breezy. There’s still work to be done to improve the performance. I still don’t know if this is actively being maintained. I haven’t been able to get an answer from the projects maintainers.

Porting Expresso to Linux/Mono. Expresso was originally released on the Code Project. I’ve talked to the author, Jim, and he confirmed that I’m free to port the original code to whatever I need. This would be a very useful tool to have in Linux.

I know Jorge and n0p are interested in gnome-launch-box. Andy is excited about porting Expresso. I want to do them all but I know that’s not logistically possible. I guess I’ll let peer pressure decide for me.

Drivel 2.0 and Ubuntu

Bill talked about Drivel, a GNOME application for posting to your blog. I tried the current version in Ubuntu but was confused when it only appeared to support LiveJournal. I caught Bill on IRC and found out he had to built the latest version of source to get it to work with his blog.

Get your Drivel 2.0.1 .deb (tested for Breezy) here. The official version of the latest Drivel should hit Breezy at the next sync but this will work in the meantime. Note that Drivel doesn’t have an explicit option for WordPress. Just choose Moveable Type and point it to http://your.blog.com/xmlrpc.php

libnautilus-pr0n 0.1 released

I’ve talked about libnautilus-pr0n a bit over the last few days and I finally have something to show for it — a functional nautilus extension that will display the width/height of an image in the list-view.

It’s a 0.1 release, so there are bugs, but it works and seems to work well from my limited testing.

Go here to download the latest version.

tar zxvf nautilus-pr0n-0.1.tar.gz
cd nautilus-pr0n-0.1
sudo make install

Once installed, fire up Nautilus. First, View -> View as List, then View -> Visible Columns and select ‘Geometry Info’. That’s it.

More libnautilus-pr0n

I made some nice progress on libnautilus-pr0n today. I have it reading the width and height from each image (more or less). I have to see why some images aren’t checked (I suspect my code that detects if a file is an image). I need to make the extension work asyncronously, and have it cache the results so it doesn’t have to re-read the file every time.


Kinda cool. It doesn’t sort as perfectly as I’d like. For example, if you were to sort from smallest to largest, an “800×600” image would appear after a “1600×1200” image, because “8” is greater than “1”. I’m not sure if I can take control of that through an extension, so that might require some hacking of Nautilus itself. I could also seperate width and height into their own columns, but I think that would get too messy.

I also started looking at libexif today, so I can add exif columns to nautilus.