Byzanz 0.0.3
Byzanz 0.0.3 is out. This time it’s supposed to work on a lot more computers than jus my laptops. The last release had the (expected) first release illnesses and for most machines didn’t work at all. Particularly the “everything is red” and “Byzanz needs XComposite enabled” bugs are gone. A new demo of Gedit’s new features is available straight from Paolo’s blog
I was really overwhelmed by the feedback I got and how many people expressed interest. Such things really motivate. Thanks to everyone who emailed me with bug reports, tips or a translation. It’s greatly appreciated. If this release actually works for normal people, I’m particularly interested in if it works on 64bit systems.
I should probably mention one thing: The whole code does not do error checking. So if something fails, it fails and it won’t tell you or do something against it. Error reporting has to wait for one of the next releases I’m afraid. But then again, this is 0.0.2. ;)
Writing panel applets
Writing good panel applets is hard. And since pictures say more than a thousand words, look at this:
This is two very standard widgets given less size than requested. And I’ll explain my big hurdles to writing good panel applets anyway:
- Gtk widgets are really bad at handling the case of getting allocated less space than they requested (see the screenshots above). This is because the Gtk usecase is a window which sets its minimum size to the requested size of its contents, so it basically never happens. But for a panel this is a frequent happening, because the user sets the maximum size of the panel and not Gtk.
- There are no containers that handle the different panels in a satisfying way. Since it is possible to have panels on all 4 sides on the screen (vertical and horizontal orientation) and with sizes from 23 to 120 pixels, there is a lot that can be and is done wrong with widget layout. The simplest example is that a container that behaves like a Vbox on a vertical panel should behave like a HBox on a horizontal panel.
- Panel applets must be optimized for size. Since they occupy parts of your screen all the time, the space occupied should be as small as possible. A lot of widgets are written for nice display in big windows (as in 500×300 pixels or more) and don’t care about using 2 or 3 pixels more. A GtkButton in the most-used themes uses on average 5 pixels on both sides for displaying the box around it. If you now remember that a normal panel is 30 pixels high, you can imagine that losing a third of your available space just for a nice border is not what you want.
- Since the presentation space of applets is not very big, the information must be presented in a very compact form. For example text is not an option most of the time, since text is just too big. (“Hello World” requires 76×16 pixels in my configuration, that’s almost enough to display 3 24×24 images.) Unfortunately there seem to not many widgets around that try to achieve the same goal. An exception might be the GtkToolbar widgets, but then again the toolbar uses a visually very different approach from panel applets, so just using toolbar items would look kinda stupid in a panel.
- Applets normally don’t react to right clicks but bring up the default menu instead. But lots of Gtk widgets intercept right clicks. This makes applets with those widgets feel wrong. (The window list does this for example)
So what I’d like to have is a collection of widgets that make it easy to create good applet UIs. And I’d like
And I’d like these widgets applied to the current applets. Current applets suffer heavily from this not being available. Just try using a 60px vertical panel as your only panel for a while to figure this out ;)
Unfortunately there seems to not be a lot of interest in getting applets working nicely the maintainers of that code tell me. I wonder why that is. Probably just a case of missing good libraries to use, as always…
Edit: Yes, that read 0.0.2 before, but people seem to have their own partition for $HOME which tends to cause issues. So I did a quick-fix to 0.0.3 for them.