How to install your very own XMonad XMas

Last night, I posted up some xmonad packages for Fedora 8, sans install instructions. Here they are now. Right now these packages are only for i386, although the SRPMs are there, so if someone can compile them for another target platform, I'll include them, if I don't figure it out first. Do the following as root:

# wget
# rpm -i ynemoy-xmonad-1.0-1.fc8.i386.rpm
# yum install xmonad.i386 ghc681-xmonad-contrib.i386
# rm ynemoy-xmonad-1.0-1.fc8.i386.rpm #clean up a bit

This should install xmonad. To set it up, you'll need the directions from the following sites.

How to prepare your GNOME Session:
A sample configuration using contrib extensions to run in GNOME:
A screenshot of this config:


bug reports, issues, complaints, and pictures of cute femmes in christmas costume can be sent to xmonad-fedora <squiggle> hexago <blip> nl

A very XMonad XMas

Last summer when I was working at my internship, I noticed some funny usage patterns when working with GNOME. As a testament to Red Hat's ability to challenge a person, I had 10 virtual desktops set up with something going on on each one. Usually there would be a virtual machine doing foo, a Turbogears app doing Bar, A Jboss server doing baz, and eclipse being totally useless. I also had all the accompaniments, amarok on another destkop all by its lonesome, MySQL administrator on another, mail apps, random web browsing as a catch all bucket, and terminals everywhere.

Since emacs would do just about nothing except make Java and Python code look pretty, I would generally have two or three terminals along side eclipse just calling rebuild via a few keystrokes. I would wake up the computer every morning would start arranging terminals like flower petals all over the system, in places so I could find them. All that talk people say about metacity 'getting out of your way, so you can get to work' was utter crap. Metacity just wasn't working for me.

Had I known about tiling window managers then, I might have made the switch. Who knows what I could have done, had I had a tiling window manager available to me. I might have been able to finish all the projects I set out to do, I might have even made my group look very good. Who knows? I might even have been able to make that 100 yard pass and cured cancer.

Since then, I've gone back to school, and writing papers really doesn't need all that craziness. (If anything, Hans de Goede's latest patches to gstreamer will make it easier to do my homework without having to go to the labs just to use a windows machine for media.) But being the hip, up to date, thoroughly modern person that I am, I've finally discovered the joy of Monads and X. Wanting to learn more about Haskell at the same time, I started tinkering with it, and so far, I've found it a joy to work with. As a side effect, I'm even noticing better VI habits thanks to the similarity in keybindings. Wanting to see Fedora packages, and learn a little more, I decided to hack cabal-rpm to make it create sane packages. Below are the product of these changes, your very owns set of XMonad packages for Fedora. I'm currently dogfeeding myself with them now. Enjoy!

(Just so you know, this is what Jewish people do on XMas when there are no good Chinese restaurants or good theaters around town. It was far more interesting than tearing toilet paper, which is a major Qabalistic thing, I kid you not. And by Qabalistic, I mean the teachings of the ancient Rabbis passed down by word of mouth from generation to generation, not the packaging system for Haskell packages.n)

Smolt and Privacy

The first public draft of the Smolt Privacy Policy is available. Publically that is.


(discussion is in and #smolt on freenode)

GTK Theming

This makes me so happy.

I had a dark theme i was using for a while that had transparent window decorations that seemed to clash slightly with the non transparent ones. Glad to see i'm not the only crazy person.

Thanks to: GNOME theme engine designer adds transparency to GTK

How to split a repository in git

We've decided in Smoltland that having a git repo would be a better idea. We were using Mercurial up till now, but as git seems to be the more popular choice in Fedoraland, it seems like it would be a good decision. Mercurial is actually a great system, and there are many aspects about it that I like, but there are a few features I feel I would use in they were available. Also, since git is more popular, it's more likely that when we have questions, we'll get an answer rather than 'hmm.... that's funny, git does this differently'.

I also think it's a good idea to split up the client and the server into two separate repositories, and therefore decided to do a bit of experimenting.

The process of converting a repo from hg to git is well documented. It was simple, and I used the script here:

Splitting a repo was a bit harder though, but after some searching, I came across this link here:

I had to make a few changes though.

yankee@dao:~/Projekten/Python/Smolt$ git filter-branch --tree-filter 'rm -rf benchmarks database .hgtags .project .pydevproject .settings smoon' HEAD
Rewrite d644ecb4d74fc0ca3245239dae97f051f825fdb1 (668/668)
Ref 'refs/heads/master' was rewritten

These refs were rewritten:

yankee@dao:~/Projekten/Python/Smolt$ ls
benchmarks client database doc GPL README smoon TODO

yankee@dao:~/Projekten/Python/Smolt$ git reset --hard
HEAD is now at dc4a914... 2007-12-11 Piotr Drąg (via

yankee@dao:~/Projekten/Python/Smolt$ git gc --aggressive
Generating pack...
Done counting 3633 objects.
Deltifying 3633 objects...
100% (3633/3633) done
Writing 3633 objects...
100% (3633/3633) done
Total 3633 (delta 2463), reused 0 (delta 0)
Pack pack-79afd8906cd79a2c59c60cd152e71988d0384452 created.
Removing unused objects 100%...

yankee@dao:~/Projekten/Python/Smolt$ git prune

yankee@dao:~/Projekten/Python/Smolt$ ls -a
. .. client doc .git GPL .hg .hgignore .hgsigs README TODO


This had a few extra added benefits. I got rid of some cruft that happened to be sitting around. While rewriting a repository like this on a regular basis is not a good idea, there are a few times you need to do this. The documentation for git-filter-branch is also good for removing copyrighted files, and other nasty things, that you do not have the rights to distribute.

The end result is that I have a repo that is just the client.

UPDATE: I should mention, backup everything first! These changes are permanent to the working directory, and if you should decide you want to go back, you must make a backup. Remember, git does use hashes to identify updates, so if you need a particular version, save the hash. But that's just common git sense.


Nope, this isn't some obscure Finnish Folk Metal band. It's about one of my cats.

So you're sitting in a forum, as far as sitting in an electronic web page goes, which is probably something only my cat fully understands, and there's some troll lurking about being as contentious as possible. And by troll, I mean anyone, because we all like being contentious these days, or am I wrong? You're lining up the thoughts in your head as how to maximise insult when suddenly your cat jumps into your lap. Her name is Black Pearl and she's very cute. Suddenly the tension melts, and you can think of nothing but warm cuddly thoughts for this alleged troll. You're thinking of letting the troll off just this once, perhaps brining the world that one bit closer to Nirvana and World Peace. Hey, you never know. Maybe one of these days we can use stem cells to give pigs wings.

And then she digs her claws into your leg. BAM, and boy does he get it. Might as well get back to doing that paper. There'll be no flying bacon for dinner tonight.