Glovebox Widgets

Glovebox is still rolling around on my laptop. I managed to sit down today after a few weeks of on-and-off thinking of how to best solve my current problem: how to do widgets.

One idea was to hack the KDE bits out of Plasma and just stick it in there, but there’s a few problems with that:

  • Near impossible to update libplasma
  • I’d add kdelibs as a dependency, if I didn’t hack out the bits
  • Would take forever
  • Its a shameful, ugly hack.

Over time, I came to the conclusion that I won’t use plasma, but I’ll use it as a reference for some of the really great ideas it has.

Plasma’s main goal is for a slick looking desktop, be it for a PC, internet tablet, embedded device, or PDA. I’m sure someone from the plasma team would like to say that its great for my project, and I’d like to agree. I can’t really think of a good reason to not have it in, other than the fact that I don’t want kdelibs as a dependency. Perhaps I’m just bullish and falling for the Not-Invented-Here thinking.

If someone out there in kdeland can figure a way to jam plasma into Glovebox without requiring someone to install the whole kdelibs package, I’d like to hear that.

Anyways, I wrote my own little widget system. Its very simple for right now, as I don’t have any kind of theming in. Thats next I think.

Oh yeah, the obligatory screenshot:

Here you can see, what else, a clock. Its just a proof-of-concept clock though. I’m working on theming next.

Comments »

The State of Glovebox

First, I’ll show off the logo for Glovebox:

Second, Glovebox development has stalled a little bit over the last few weeks due to college starting up again for me. So, I’ll just give a quick overview over whats changed since I first announced the project.

Gloveui

Much like KDE’s libraries, Gloveui is the name for the base library I forsee all Glovebox components using. This will allow for super easy theming and other bits of consistency. As of now though, it only has an implementation of the Freedesktop icon and sound theme naming specifications, along with GIcon and GNotify classes.

A GIcon has a simple constructor. You pass it the fd.o icon name, and it uses the QIcon methods to load up images. Icons are still drawn using the basic QIconEngineV2, so it doesn’t always draw the proper size. Thats coming soon though.

The GNotify is a rough outline for a much more broad system. I soon home to have something similar to the galago-project implementation of the fd.o notification specification, where information bubbles can pop up on the display somehow. But for now, GNotify only does one thing: plays fd.o-named sounds. Since it is static, you just call GNotify::global()->sound("desktop-login"); to play the startup sound. GNotify uses Qt’s Phonon classes to accomplish this with minimal effort.

Launchpad Improvements


Over on the right is the current view of the Launchpad main window. Nothing too exciting to look at, I know, but there is now a fully-functional GPS data engine! And on the map page, I’ve implemented two handy widgets: A compass and a signal chart. The two widgets are independent of Glovebox, so any other Qt developer is welcome to use them. The only issue with them right now is the size hints aren’t working properly.

Coming Soon

With a full school schedule (class and work from 9-6 on a good day), I don’t have a whole lot of free time. I try to hack on Glovebox when I get a chance, and I’ve got a quick list of things I’m working on from time to time:

  • Text-to-speech (via festival or flite) as part of GNotify
  • Implement a new QIconEngineV2 to draw icons properly
  • Improve hiding of the page bar (current method is drag it over to collapse)
  • Proper copyright headers
  • A KDE-esque plugin pattern
  • A port of Plasma

That last item is a bit troublesome to me. A main feature of my Launchpad is to show a dashboard with widgets for the home page. Idealy, I’d like to implement this using Plasma. Unfortunately, that means I’d have to add KDELibs as a requirement. Right now, my plan of attack is to strip out all the KDE-specific code and replace it with Glovebox code.

Its bothering me though that I seem to be duplicating the efforts of KDELibs just to import one (awesome) feature (set). With all the recent work on getting Plasma to work great for embedded devices, it seems like I should just bite the bullet and link in KDELibs. I feel that goes against my biggest design goal for Glovebox, in that it should be small as possible and depend on as few libraries as possible.

So, lazyweb, any input on this problem?

Comments »

Announcing: Glovebox, your in-car assistant!

For most of the summer, I spent my limited idle time thinking up what kind of big project I wanted to accomplish next, now that my MythTV system was ticking along just fine. My Hiveminder list had a few notable things in it: a beowulf cluster of as many free, discarded computers as I can find, a dorm computer that acts as a link between my dorm and home network, a networked coffee maker, and a car computer. Just to name a few crazy ideas.

All of those others would take too much effort, or have already been done before hundreds of times. The linux car computer hasn’t though. Searching google yields one result, “The Coolest Car in the World“. Really, its nicely done. But it could use some improvements. At a quick glance, most of the package seems hacked together using bits of MythTV, Gentoo, various other programs, and shell scripts. Even though it works, it is still very much a huge hack.

So I started my own project. A car computing environment. Much like a desktop environment such as KDE, or Gnome, Glovebox is a ‘desktop’ environment of sorts. It is based in Qt/Embedded Linux, which unfortunately restricts all GUIs to use that, but I feel the benefit of the lightweightness far outweighs anything gained by using a heavy X server.

The project is currently hosted by GitHub, and can be found on it’s page there. More details about the project can be found on that page as well. But for now, how about some screenshots, eh?

This first shot here shows Marble from the KDE project. In Qt/Embedded. As I said in yesterday’s post, I was planning on using it for some big upcoming project. Here it is! Right now, all the map does is sit there and look pretty. More like pretty awesome, am I right? Oh ho ho ho…

Since the Services concept in Launchpad (the main menu program) is based off of plasma’s DataEngine system, I figured it’d be a good idea to continue the tradition of using a clock as the whipping boy. The first Service I wrote was the time service, and the first page to use a service was the clock page. Once I add themes to the system, the clock will look a lot nicer.

Comments »