When I started writing katriawm[1], I needed to choose an image format
to store the window decorations. It needed to be simple because I
didn't want to get my hands dirty with libpng or other libraries. I
ended up choosing PPM.
This weekend, I reworked the code a little bit and katriawm now uses
farbfeld[2], which I was already using in infofeld[3].
I did indeed consider using farbfeld right from the start, but -- if I
remember correctly -- it was still in some kind of flux back then.
Today, the situation is different. "Version 2" has been released some
time ago, there is a stable set of conversion tools, there is an imlib
loader for farbfeld (which means you can view farbfeld images with
many tools like feh or sxiv), and there even is a GIMP plugin.
Farbfeld is a really nice format. It's as simple as it can get.
Initially, I didn't like that values were stored as big endian, while
all common Intel CPUs are little endian. But I get that you have to
agree on something, so why not use something that's already
established in other areas? Big endian is "the network byte order"
which means that you can use functions like "ntohl()" to convert from
big endian to whatever your machine uses. In other words, use those
functions and never care about endianness again! That's actually very
nice.
____________________
1.
https://github.com/vain/katriawm
2.
http://tools.suckless.org/farbfeld/
3.
https://github.com/vain/infofeld