GNOME

User interfaces with GTK+ and Glade

Friday, November 11th, 2005

I’ve been hacking up a user interface for my motion capture/computer vision project called “Hand2Hand,” found here.

At first I was gonna do the user interface in Python and have the image processing done in C, but then I decided that the user interface was simple enough that I should just give GTK+ in “pure C” form a try. Of course, I used Glade, which drastically reduces the amount of annoying code for things like Vboxes and Hboxes and Containers you have to write. In fact, using Glade, interface design becomes somewhat straightforward in C. Which is weird, because C seems like it was never built for user interface design, but the g_signal system makes it easy to catch events that occur in your program, and GTK+ is high enough abstracted that you can do pretty well. I don’t know how well GTK+ scales for large programs (i.e. many dialogs, many lists, etc.)–in that case, I think I’d definitely pick a higher level language.

Looking forward to how this application may turn out. OpenCV looks like a pretty awesome library.

I can’t wait till Ubuntu breezy

Wednesday, October 5th, 2005

If for nothing else, for Mac OS 9-style file browsing in Nautilus, a la this screenshot:

clicky clicky

New Years Resolution

Friday, December 31st, 2004

To upgrade this website to Movable Type, among other things.

Last-minute hacking with my version of Metacity, and I finally got what I wanted. Basically, I was using xfwm4 for window management, and since it is NETWM compliant, I was supposed to notice no difference at all in GNOME. Except that’s not true, since xfwm4 doesn’t know about gnome-panel, and since a lot of useful hotkeys I want to use in gnome-panel are generally bound in metacity. Plus, the gnome theme manager doesn’t work without metacity. So, shame on GNOME developers, basically. You claim you are compliant, but you aren’t.

But then I did some reading and figured out metacity is actually a bit better than xfwm4 anyway, just that some of its features are hidden in gconf and other places. Also, someone has coded a neat app called devil’s pie which lets you manager your windows at a very fine-grained level, which I like… though it is a bit buggy right now, it shows promise.

So, the main thing I was annoyed by is vertical/horizontal maximize. xfwm4 has this working fine, and I’m quite used to it. Metacity doesn’t treat it as a “toggle,” so if you hit maximize vertical button twice, you just sit there with a maximized window… it doesn’t switch back and forth. I find this annoying since when I have vim windows open, sometimes to see more I just quickly maximize vertical rather than scrolling down, and then toggle it back afterwards.

Someone coded a patch to this. You can find it on bugzilla here at Bug #113601. Unfortunately, no one has written a “proper patch” that also works with session management and such, but I don’t really care, I wanted this patch to get back to work. So, in order to jive with my Ubuntu system, I created some debs with the patched version of metacity.

Havoc Pennington’s essay on UI design

Saturday, November 13th, 2004

I just found this essay on UI design and am surprised I never read it before. Some of the stuff Havoc says rings particularly true, and also confirms the need for some of the ideas I have for Glade-3 (ideas which, I think, will push UI design into the user’s hands, and exploit the end-to-end principal in the world of graphical software development; this is only one of the key points–my ideas also have other implications that, I think, are good for Linux applications in general).

In my spare time, lately, I’ve been drafting out these ideas, and I think soon I’ll have them clear enough to send a “brainstorm announcement” to the glade-devel mailing list. God I wish I had more time for this stuff!

gob2: Building GObjects easily in C

Monday, November 8th, 2004

I’ve been playing with a preprocessor called gob2, which I only recently discovered. I found it because I actually had the same exact idea as the author. I was reading the Gnome 2 Developer’s Guide, and realized that although GObjects are nice and handy when they are already coded (as in all the widgets in GTK), they are actually a pain in the ass to write from scratch. Tons of boilerplate code, tons of macros you need to code to keep yourself sane.

So, I thought, what if some code produced all this boilerplate code for me? Someone already had the idea. It’s called GOB (or gob2), the GObject builder. Check it out.

What’s so nice about it is that it tries to have the feel of Java or C#. So, check out this definition of a new GtkWidget which counts the number of clicks it receives. If you run gob2 gtk-button.gob, it will produce gtk-button.{c,h} with all the proper GObject boilerplate code you’ve come to expect coding by hand.

Much nicer than doing that from scratch.

What’s strange is that more GTK+ developers aren’t using this. On the gob2 mailing list, the author claims it is used in gnome-vfs, but doesn’t it seem like it should be used by a lot of developers? (Granted, it’s not as nice as using gtkmm/C++ I guess, but there are still people declaring objects in C out there).

Spike in the geekiness curve

Thursday, July 1st, 2004

Just got back from Northampton today. Was able to do some work remotely but not as much as I wanted, so I’ve been working late into the night. Still much to do, but at least I got JavaMail working properly and am finally, finally, finally finalizing my form design with JSP/Servlets on the UAC project. In the meanwhile, in Noho I was able to use my notebook to put together new form designs to be plugged in later.

But in more interesting news (not much more interesting)…. Wow! Lots happened while I stayed out of touch with the major news websites. Eclipse 3.0 (including new native builds) is well-received. Mono 1.0 was released. Java 1.5 (or, ahem, 5) Beta was released. Looking Glass was open sourced. Apple’s OS X Tiger was previewed and is now being scrutinized by Mac lovers. Wow, wow, wow, wish I had more time to explore all this good stuff.

Man, Dashboard is what gdesklets should be. sad Once we have a solid X system that is actually 3D accelerated in Linux, then we’ll be able to have more fun on the desktop.

Spotlight seems very cool, but I think Gnome Storage will be better. This may be an armchair code pundit speaking, but I think Linux geeks know how to do searching better than Apple geeks. Spotlight’s integration with Finder will look nicer, but Gnome Storage will actually find me my files. wink

Argh, gonna lay off this blog for a few days ’till I can say work isn’t bogging me down.