Created: 2006-06-06 by WesMorgan
This specification defines a visually-equivalent (or as nearly so as possible) Human theme for Qt/KDE apps when running in Ubuntu (i.e. not Kubuntu). It also defines appropriate magic to only affect Qt/KDE apps running in GNOME, so as not to interfere with Kubuntu's theme decisions. The goal being that, out of the box, any Qt/KDE app launched in Gutsy (while running GNOME) will look exactly like a GTK/GNOME app. Think Bluecurve for Ubuntu.
What this spec is not:
- This spec is not GTK/Qt theme integration. Freedesktop.org is working on that, and it's a much more ambitious (but sorely needed) project than this. This is simply a spec to default to a visually equivalent theme for Qt/KDE apps when running them in GNOME (or XFCE, if the Xubuntu folks are interested).
- This spec is not a proposal to change Kubuntu's default theme or any other aspect of Kubuntu. The only interaction with the Kubuntu folks needed will be in figuring out any necessary packaging / filesystem magic to make sure their theme choices override this when someone launches KDE.
- This spec is not an attempt to make GTK/GNOME apps take on a Kubuntu-like theme by default when running KDE (i.e. the reverse of this spec). That is at least as complex as this project, and there's probably very little the two projects could share, code-wise. I don't use Kubuntu/KDE, but if someone in the Kubuntu camp wanted to implement such a creature, I'd certainly welcome it and help out wherever I could.
- Emily uses Skype to phone friends over her broadband connection. But when she installs the (closed source, Qt-based) Skype client on her Ubuntu laptop, it looks very boxy and pixelated (aliased fonts), not curvy and polished like most of the other programs she runs on her Ubuntu system. Then she notices that her friend Bobby is running the same program on his Fedora laptop, and it looks pretty nice. At least it looks like every other app on his system. She wonders why it's broken on her Ubuntu computer.
Sarah is a Kubuntu user who writes software in Qt. She would like to encourage Ubuntu and Xubuntu users to try out her programs too, but she first has to direct them to a lengthy and complicated HOWTO on making their Qt apps look more GNOME-ish (or at least not butt ugly). She thinks her apps should look like first-class citizens on Ubuntu / Xubuntu out of the box.
- A Human look-a-like Qt theme. Candidates:
- Neither of these two are equivalent enough. The theme should be visually indistinguishable from the GTK Human theme. Any Qt themers want to chime in here?
- Still not quite there
- We'll need something like this integrated too.
- Is it even possible to make a Qt theme that looks indistinguishable from the Human GTK theme? I think Bluecurve was probably, in some ways, Redhat's best effort at a lowest common denominator theme that still looked presentable. But is it realistic to expect that a polished GTK theme such as Human can just be ported to Qt?
- A Qt icon theme that matches the default GTK icon theme in Ubuntu. Apparently this is much easier in Qt 4 vs. Qt 3, but I think we need to support both.
- Some package system or filesystem magic to make sure this only applies when people are running Qt/KDE apps in GNOME.
- The ideal would be to have the system automatically setup the GNOME/Human-equivalent theme for Qt/KDE apps when someone logs in to GNOME, but have the KDE packages in Kubuntu be aware of that so they can tear it down and put back their theme (or whatever the user changed it to while running KDE) when/if the user logs in to KDE.
- Perhaps a good starting point compromise for the initial implementation would be to just have a dependency on the Qt library packages for a "qt-theme" package This dependency would be provided by both a package containing this Human-lookalike theme and the by the default Kubuntu packages. But the default, if neither is installed, would be for the Human-lookalike theme package to be installed. That way, the first time a Qt-based app is installed in Ubuntu, the Human theme will be used.
- The qt-theme-human package would conflict with the appropriate package from Kubuntu, so that if someone also installed kubuntu-desktop on their system, it would remove the qt-human theme and revert to the Kubuntu default. This is less desirable, but easier to implement for the first go-round, where our attention really should be focused on the aesthetics.
- Now that I think about it a little more, we would probably want to install this theme by default as a part of ubuntu-desktop (rather than just making it satisfy a dependency of the shared Qt libraries). Because binary-distributed programs will often come w/ Qt statically linked and thus won't pull down our Qt shared library packages as dependencies.