Way back in 2004 when I was still using a multiheaded Linux box as my primary machine, I wrote a command line utility to change the background picture of my desktop. I gave it the catchy name imlibsetroot in the vein of other similar utilities, such as xsetroot and Esetroot. The main difference between my utility and these others was that mine allowed you to set different pictures on each monitor.

I posted it on my .edu account and must have made an announcement on Freshmeat, and figured no one else would ever use it. I mostly forgot about it. The program was pretty much complete, so it just sat there in “maintenance mode.” I used it regularly for a couple of years, added a single trivial enhancement/fix, and soon after that, I stopped using it when I switched to a mac.

I’ve thought about it from time to time. Mostly whenever I’m forced to deal with Apple’s horrible desktop background preference pane. Then today, while engaging in a vanity google, I found this.

Not only was there another user of imlibsetroot, but apparently he was a long time user, and fixed an actual bug, and then started hosting his fixed version himself.


What else could I do? I downloaded his version, patched my version and then emailed him a new copy.

Just in case there’s someone else out there using it and will stumble across this, I’m posting it here, along with original imlibsetroot webpage, but with a link to the newest version.

Enjoy imlibsetroot 1.2!

Update: Wed Mar 31 17:27:02 PDT 2010
I got off my ass and wrote a wrapper script for MacOSX. (I don’t think multihead is supported on MacOSX.) imlibsetroot rides again!


A Xinerama Aware Background Changer

imlibsetroot is pretty much Esetroot, but much more feature rich. This program was originally designed to set backgrounds on individual monitors in a multihead setup. Then composition was added so that it could be used with webcollage, but webcollage has its own program that does pretty much the same thing, so that was pretty much a waste of effort. Alas, I only checked how webcollage actually worked after composition was added.

Anyway, this is what I use to set my background in sawfish.

imlibsetroot requires Imlib2.