Xfce

Subdomains
 

March Xfce desktop

  • March 24, 2010
  • Josh Saddler

Shook up my Xfce desktop a bit. I've always been a fan of darker environments, especially those with blue tones. This one's mysterious and fantastic. I did keep the same icon theme as last month, as I don't have anything more suitable installed at the moment. I'm still looking for something a bit more suited to my current setup.

Cold Blue

icons: Area o.43
gtk+: Cold Blue, my own theme based on this one. Still a work in progress; I'm trying to get the colors to match the background image. (Pixmap and Mist engines)
xfwm4: Rezlooks-gtk
background: Summerwood

The uncluttered version that shows off the wallpaper:

Summerwood

Applications

You can find the ebuild for The Widget Factory in my in my overlay. The audio player is Decibel in the "mini" mode. I'm using Thunar as my filemanager.

Panel

The left side of the panel has the start menu, followed by launchers for my favorite apps: Terminal, editors (submenu), Thunar, Firefox, Claws Mail, and instant message applications (submenu).

I used to just have gVim in the editor launcher, and just irssi in the IM apps launcher. However, I was tired of having to drill down through a few start menus for my frequently used applications, so I just stuck 'em in their own easy-access submenu on my panel. Using submenus is one of the most overlooked abilities of the Xfce panel. In 5 years or so I've never really tried it out, but now I'm seeing some real benefits. I get quick access to my often-used apps, but without wasting panel space on a bunch of individual launchers.

Here's the editors menu:

Editors submenu

An ebuild for PyRoom is available in overnight.

. . . and the IM apps:

Editors submenu

After the launchers, there's a taskbar, then a genmon (generic monitor) applet. It runs my Portage script that checks the last time I ran emerge --sync. Here it is, lastsync.sh:

#!/bin/bash
qlop -s | sed 's/\ >>>.*//' | tail -n1 | xargs -i date --date="{}" '+%b %d'

You need portage-utils to make it work.

After genmon, there are plugins for volume control, the Orage clock, and weather.

Nifty, eh?

Overnight overlay

I've added a few more ebuilds to my overlay, including a useful calendar utility called gsimplecal. It was originally written for tint2, but since it just uses gtk+, it's suitable for just about any environment. It doesn't come with the Xfce dependencies of Orage; it's just a quick, simple calendar.

If you use tint2, you can actually configure the clock to show gsimplecal just by clicking it. Clicking again quits the program. While tint2 doesn't actually have a launcher function (yet?), this is as close as it gets. You can do some pretty tricky things just by using the built-in clock click actions. Left click for gsimplecal, right click to launch a weather checker, for example.

I've bumped a few packages to the latest version, which included some build/install fixes for Fotoxx and Printoxx. Fotoxx, I'm happy to say, has finally dropped the dependency on freeimage. Freeimage was removed from Gentoo awhile ago because it has unfixed security vulnerabilities against the bundled libraries, which are really copies of things probably already installed on your system. Fotoxx relied on freeimage only to work with TIFF images. Fotoxx 9.8 and up now just use libtiff directly. Security improvements for the win.

Keep checking my overlay; I'm always adding nifty new applications and cleaning up existing ebuilds.

SCALE 8x recap

  • March 7, 2010
  • Josh Saddler

So SCALE 8x went okay.

I was interviewed by the SCALE Public Relations team; you can see the video here.

Gentoo@SCALE

I'd say we had the most diverse assortment of machines at any booth -- something like 10 different machines on 5 architectures. Certainly we had a bunch of developers; we haven't had a showing like this since SCALE 5x.

Everyone loves event pictures, so here's the Gentoo team:

Gentoo @ SCALE 8x

Left to right: vapier, nightmorph, antarus, nerdboy, wormo, omp, halcy0n, solar
Not pictured: blackace (he took the picture)

And now, the hardware running Gentoo! On the table, from left to right:

1. Beagleboard running E17 on the huge monitor
2. Hammer/Nail board by Tin Can Tools (in the clear orange-capped tube)
3. Blackfin development board (hooked up to the middle keyboard, and with a touchscreen running Doom)
4. deployed Blackfin module (that 2-inch square to the left of the wireless mouse)
5. my Core2 Thinkpad running KDE4
6. a mini-notebook
7. OLPC XO (green/white, on top)
8. PowerPC Walnut board (in the K'Nex case). Barely visible behind it is the laptop that's tied in via serial port.

There were a few other Gentoo-powered laptops, subnotebooks, and smartphones demoed throughout the conference, but not all of 'em are visible in this picture.

I mostly demoed KDE 4.3 on my laptop, since the desktop effects and eye candy proved to be a good draw, especially the "falling snowflakes" animation. Man, I love that thing! It's a built-in KWin effect, so there's nothing special to install. Now all I want is a "falling raindrops" effect on my desktop, without resorting to Compiz.

I did occasionally switch the laptop to Xfce when I wanted to save power, or just to showcase Gentoo's flexibility. I got a good draw not when showing a standard Gentoo wallpaper, but when I showed off a desktop rather like this (clean version here). There were a buncha little kids that stopped by and oohed and ahhed over that for a bit.

Sessions@SCALE

The talks were rather disappointing this year. Several of my fellow devs stated that they "just plain sucked." Basically, none of us attended because of the talks. There just weren't any powerful draws. I was only vaguely interested in attending a couple of sessions, the ones on startup-up/embedded improvements and building a featherweight desktop. Didn't actually get to see those, as the timing and draw was just kinda "meh."

Instead, I found myself at the Mindstorms talk, which was very lackluster. I expected to see lots of toys in action, and videos, and whatnot. The speaker wasn't at all engaging, and the single Lego robot was impossible to see, and it wasn't working correctly for the entire presentation. I stopped by another session or two, but nothing grabbed my interest. I spent most of my time on the show floor, helping in the booth or wandering the floor. Speaking of which . ..

KDE@SCALE

I stopped by the KDE booth to see the newest 4.4 and 4.5 stuff being demoed, and I also tried to help one of the devs figure out the build dependencies for one of the latest libraries. Man, source building on Ubuntu sucks. There's some really, really nifty Plasma desktop stuff going on for small screens. The newspaper-like activity flow is something I wouldn't mind using day-to-day on my workstation.

Another neat bit of 4.4/4.5 is the ability to switch your Plasma desktop widgets while still keeping your applications open in front of you. It's sort of the opposite of workspace switchers, where each application group is on a separate virtual workspace, while the desktop remains fixed. I never bother with more than one workspace, but I do like the idea of switching the widgets behind whatever it is I'm working on.

The 4.4 improvements and upcoming 4.5 features are definitely enough to keep me interested in KDE, so I'll leave it on my laptop and look forward to the day 4.4 is stabilized in Gentoo.

Elsewhere@SCALE

The Gnome and XBMC booths were just across the alley from our booth, but I didn't get a chance to check out either. The Gnome guys blasted pounding techno music the whole conference, which gave all of us--even the ones without hangovers--good-sized headaches. The XBMC folks were running some pretty impressive demos on their Zotac MAG, but unfortunately I didn't get a chance to go over and chat with 'em.

In the last few days, I've decided to put together a living room HTPC built around an Acer Aspire Revo and XBMC Live, and it woulda been good to see the thing properly demoed a couple of weeks ago. Still, from what I saw from the Gentoo booth, XBMC is one heck of an awesome app.

Our booth was fairly well trafficked, but overall it felt like attendance (and interest in Gentoo) was down from previous years. Take that with a huge grain of salt, though -- while I felt like SCALE was more sparsely attended and the talks sucked, the actual numbers tell a different story. The event organizers say attendance was up more than 10% and there were more standing-room-only talks than ever before. So make of that what you will -- but I might not go back next year if it's going to be anything like my experience this year. There need to be more sessions that are relevant to my interests.

One of the high points of SCALE was meeting the folks interested in Gentoo, and definitely talking with our existing users, like the ever-loyal calculus from IRC. Thanks for coming by, folks!

SCALE, git, docs, Xfce

  • February 18, 2010
  • Josh Saddler

SCALE

SCALE 8x is just around the corner! I and something like 8 or 9 other devs will be there -- it'll be our biggest showing since SCALE 5x a few years ago. Several folks coming from the Bay Area or flying in from across the state. I'll drive up Friday sometime to help setup the booth, and maybe try to get my Beagleboard working a bit better in time for the show on Saturday.

Git

Since my last post, I've opened up a couple of public repos at GitHub: one for my fork of LogJam, and one for my overlay, overnight. (Clever, yeah?)

The LogJam fork is to create a sane base for Gentoo and other distributions to get an up-to-date version of LogJam without having to maintain a huge patchbase. I was delving into the Fedora patchset; they had a few dozen they maintain for their RPMs. Once I'd finished updating my fork, submitting an upstream pull request was as easy as clicking a button and adding a short note. Awesome!

GitHub does nifty graphs about which sources have ties to other projects, as well as commit history charts. The downside is that since there's lots of javascript and Flash powering the site, responsiveness can suck.

So, why choose GitHub? For all the reasons so far, plus the fact that there are a lot of Gentoo projects on there already, including other overlays. And LogJam upstream's already on there, which really makes it easy to interact via the web interface.

Now, I should mention that I'm not married to GitHub or anything. In fact, I've registered an account at Gitorious, too, just in case I switch. Or if I want to have separate/mirrored projects at both websites.

I'm even thinking of git hosting some of my other personal projects, like night-sources. You know, stuff that needs organization. However . . . the problem I have with GitHub is that binary file hosting SUCKS. Lemme say that again: it's terrible. Really bad. There's no such thing as a static, canonical file name for a given archive, like you'd expect from SourceForge or Gna! or similar. Instead a small commit hash is appended to every file name, which is just ugly.

Let's say that I have a kernel patchset (labeled only by a version number) that I distribute in an ebuild's SRC_URI. I can't just call it ${PV}.tar.bz2; it has to be something like ${PV}-36x746avF.tar.bz2. The maintenance for each subsequent ebuild version goes up, because you have to change SRC_URI every single time, which takes away the flexibility of using variables in the first place!

Now, I understand that with GitHub, supposedly the hashname increases security, as you'll always know which commit it's from. Same for which branch, etc. However, it's also unnecessary, because the version number is right there in the file name. It'd be nice if you could always get individual tarballs the way you're used to:

2.6.22.tar.bz2
2.6.23.tar.bz2
2.6.24.tar.bz2

. . . instead, you'll get a bunch of random crap, appended to a really/long/tree/master/ URI.

So GitHub, if not git itself, is not ideally suited for binary packages, be it tarballs, image files, PDFs, etc. Lots of stuff cluttering up the path, and I have no clue if it can actually be removed. None of the support conversations I read on GitHub had a fix, either.

So I'm still looking for a good alternative. I may just have to keep everything in my devspace. As much as I'd like better organization of, say, night-sources (like the genpatches team has), I don't want to deal with those kinds of weird versioning issues.

Docs

In spite of CIA being down for some time and losing lots of commits, I've done a fair amount of docs work in recent days.

Yesterday I spent awhile bringing the Printing Howto up-to-date for HPLIP, as well as fixing all the kernel config and usergroup info. There are also a buncha updates I made to the Openbox Guide; all patches were supplied by Nate. (Thanks!)

The Localization Guide also some some luv; I pruned the old section on using localedef with the real way to generate locales, localegen. This stuff was already in our other documents, including the handbooks, but somehow I just missed this one.

The Portage handbook received some updates for automatic block resolution, as well as using examples for packages that are still in the tree. Not all the commits I make are huge rewrites; some of them are small but really helpful. The Gnome Guide, for example, lacked explicit instructions to follow the Xorg setup doc before installing Gnome.

Now, it is possible to install Gentoo and then immediately go right to installing Gnome. However, you may end up with a few misconfigured or missing bits along the way. New users would probably not know what to do next, so by adding this short note about required configuration, hopefully some of those pitfalls can be avoided.

Xfce

Almost forgot this month's Xfce desktop! I found a really neat wallpaper, and started looking for some gtk+ themes with similar colors, to save me the trouble of creating one myself.

I decided to redo my desktop in a general Elegant Brit theme. I also decided to try out the Cairo Dock ebuilds. (These were originally from the desktop-effects overlay, but I brought 'em up-to-date and submitted a pull request to the maintainers. Git makes collaboration easy!)

I later unmerged Cairo-Dock, as I found it to be very unstable and buggy. Even now, DBUS and DBUS-apps still aren't working correctly, as not all of them can use the notification area anymore. Lame!

rather elegant

icons: Area o.43
gtk+: Elegant Brit (Pixmap and Mist engines)
xfwm4: Rezlooks-gtk (yes, it is confusingly named)
background: night launch

I rolled my own icons for Cairo-Dock, using a mix of Brit-inspired stuff from gnome-look.

The uncluttered version that shows off the wallpaper:

night launch

I cropped it from the original at APOD. That was the last planned night launch of the Space Shuttle before it's retired at the end of the year. Neat!

* * *

See at at SCALE, on Saturday!

Kernel and nouveau updates

  • February 15, 2010
  • Josh Saddler

In the midst of my Beagleboard frustrations, I actually have a bit of good news to report.

No, it's not about the Beagle. That's still a big ol' pile o' poop.

First is that I was digging around in the X11 overlay, and I found out what I was missing to make xf86-video-ati and KMS work on recent kernels: x11-drivers/radeon-ucode. There are a few extra steps for getting the firmware into your kernel config, but it doesn't take long.

So now I'm finally able to use vanilla-sources 2.6.33_rc7. I'd been stuck on vanilla 2.6.32 -- no additional point releases, just .32. Every other .32 release had major regressions that prevented booting.

Running .33 makes me happy. I get the newest goodies (no more need for staging drivers) and Urban Terror still runs great. KMS is even a teensy bit faster, too.

However, then I went back to using stuff from the staging drivers tree: I decided to try out Nouveau tonight. Once again, I used the ebuilds from the X11 overlay, and recompiled my kernel. To my surprise, things mostly work! In fact, I'm writing this blog post from within Xfce, running on Nouveau + KMS.

Turns out that Nouveau doesn't really work on Geforce 8200/8300 cards, and possibly not on any IGP with shared memory. This is a known bug -- in fact, I tried out Nouveau hoping to add some current testing results.

While KMS works okay (a little slower than radeon), and I can get into X just fine, performance is pretty slow once I get there. Xfwm4's compositor is enabled, but that's not a source of trouble. As I stated on the bug, it's better than the proprietary nvidia-drivers, but definitely laggy. No hardware acceleration at all.

I jumped on to #nouveau to see what caused my cryptic error messages. It's not the firmware loading that's the problem, the problem is that the acceleration code has yet to be written for my IGP.

This just confirms what I've suspected ever since I purchased my motherboard in October 2008: its chipset is absolutely good-for-nothing. My system is unbearably stutter-slow when using the proprietary nvidia-drivers, which means desktop usage is out, to say nothing of games or VDPAU decoding for movies. And the nv driver still doesn't work at all, and it wouldn't have any kind of hardware accel anyway. The last hope, Nouveau, is sorely lacking, so I'll just have to cross my fingers that some kind of support arrives before the 'board is replaced.

I guess it's back to my RadeonHD 4550: 3D and 2D are accelerated etc. Could still use power management code, and GL output or some other hardware decode logic for movies, but I've no real complaints. Those are all coming, fo' sho'.

I'm interested in getting an AMD chipset-based motherboard, but every benchmark I've ever seen shows poor USB, SATA/AHCI, ethernet, and other peripheral performance compared to an nVidia chipset. That's disheartening; I'd really like to go all-AMD. As long as there's a 4000-series IGP on the board, I could even ditch the low-end 4550 I currently use and save some power and heat. There don't seem to be many decent cheap options for microATX AMD motherboards these days.

Besides, aside from the nVidia IGP issues, I've no real complaints about my current mobo. You win some, you lose some.

Comparing gtk+ and Qt applications

  • January 17, 2010
  • Josh Saddler

I've been on the hunt for Qt/KDE applications that do the job of the gtk+ equivalents I use.

That's a tall order, as I'm used to the way my gtk+ applications look, feel, and behave in Xfce. Trying to learn something that may do things completely differently can be very frustrating. Heck, it can be annoying even when 98% of the time the app does just what you want it to. That last 2% can push you over the edge.

Part of learning the ropes with KDE4 is finding which application does what. Yes, I could just keep using all my existing gtk+ applications with little or no difference in look'n'feel, thanks to QtCurve. But that would deprive me of the chance to try out the many, many other apps available in the FOSS world. I'd miss out on all the fun if I focused on applications written for just one toolkit. This post examines the differences between certain gtk+ and Qt programs.

Obviously, these are my subjective experiences. Everyone has their own preferences. Using and writing about all these different applications has really helped me take a look at what exactly I like to see in an application. What I expect it to do out-of-the-box, and what kind of tweaks it offers so that I can tailor it to my needs. Actually, reviewing Qt apps has helped me in my search for gtk+ equivalents, too. I've been spending more time examining user interfaces on their own merits, instead of discarding apps from consideration based solely on their widget toolkit.

The applications listed here all work equally well in Xfce and KDE, so if it operates in one environment, it operates in the other. If it fails in one, it fails in the other. It's a fairly level playing field, except that I'm coming from an Xfce background, which means I'm just not used to how some things are done on the "other side of the tracks." I've tried to keep that in mind as I jump from app to app.

Multimedia

For audio playback, in Xfce I use Decibel. Its playlist support isn't all that great, and it can't do additions by genre (or suggest/smart-add tracks) but overall it's fast and easy to use. I've tried other gtk+ apps like Rhythmbox and Exaile, but while I like the ideas behind them, their user interfaces are just a bit too busy to be useful. Players like Listen or Songbird are also too complicated (and dependency-bloated).

I need some kind of happy medium between the sparse simplicity of Decibel and the clutter that is Rhythmbox, Banshee, Exaile, et al. Bluemindo, Consonance, and some of the MPD front-ends come close, but don't quite make the connection for me.

Speaking of MPD: while it has many, many front-ends, I totally dislike the whole client-server model. I don't stream anything over the network, so setting up a server on a single box, with all the weird configuration that entails, is just too much. Plus MPD still can't play audio CDs, so I don't bother with anything that uses it, whether gtk+ or Qt.

Elsewhere in the player spectrum, there's XMMS and its derivatives. I used Audacious for a long time until it quit working a few years ago, then moved to Decibel and haven't looked back. However, as much as it's a pain to add tracks in the Winamp lookalikes, I can use them fairly quickly and find where everything's located, since I used Winamp for years back in my Windows days.

It's hard for me to find a player that feels usable on a day-to-day basis. Both when I just quickly want to throw some tracks in the queue and when I want to spend some time arranging a playlist. Those are the two big tests of a player's usefulness. There are lots of KDE/Qt media players available, so I've started sampling them.

JuK: Meh. I don't like the UI. None of the modes are intuitive, even after days of playing with it. That left sidebar is killing me. Totally unhelpful.

Amarok: Yup, the heavyweight. The program that's gone through polarizing changes to its UI and features in the 1.x/2.x release series. Can't say I care for it -- it was far too complicated. Felt like it took the worst UI design aspects of Listen, Songbird, Banshee, and slapped 'em together. Plus it was slow. I don't have a large collection of music on my laptop; less than ten albums. The library is tiny, but Amarok is always pig-slow to startup and search through my files. Plus Amarok required many libraries that take a long time to compile. Not worth it. Akarok just isn't right for me.

QMMP: This is familiar to an old winamp/xmms/audacious user, but very dated. I don't like the idea of skins anymore. I want applications to smoothly integrate with my desktop theme -- using native widgets, whether gtk+ or Qt. There's no "default to native Qt widgets" setting, unfortunately. But it plays media as expected. There's a wealth of built-in plugins that offer everything I need for playback and information display. Just like the good ol' days of Winamp, XMMS, and Audacious.

QMMP is the player I'll stick with for the time being, as I can't find anything with a UI that's not too simple or too complex. What I'd like is a Qt app with a couple of configurable panes and album cover support -- something like Decibel or Consonance, but capable of more than just adding music by album or artist.

Kmix: an applet for volume control. It has the quick functionality that I'm accustomed to in Xfce4's volume control, in that I can hover over the applet and scroll the mousewheel to change volume without needing to click. Very handy. However, the icon and "sound wave" meter are so tiny it's very hard to tell the volume has been changed without clicking to check the level. When opening Kmix as a standalone application, it's the most confusing frontend I've ever seen to alsamixer. Seriously, its UI is crap, even after adjusting the display options to minimize the clutter.

That screenshot in the above link represents a best-case scenario, and even that's totally unintuitive. The icons also don't always make sense -- take that first one at the top of the "Master" control. It's a mini slider switch. Looks like it should do something, right? Yeah, just keep grabbing at it, then realizing that it won't actually do something. I could go on, but I'll stop there. There are some icons I just have to ignore.

Fortunately, my needs are simple; I don't need many displayed controls. I don't even use the laptop's builtin microphone, and only rarely use headphones. "Master" and "PCM" are the only things I really care about.

On the positive side, sometime after installing Kmix (so it's possibly related) I now have an on-screen volume indicator when I use my laptop volume buttons! The last time I saw this was in an ancient version of Ubuntu, so it's quite a treat to have the buttons actually work and get integrated into my desktop. Love it!

Now I just need a working on-screen display for my LCD brightness level. I do get a popup, but it doesn't always move the level meter when I adjust brightness, in KDE and Xfce. At least I'm halfway there: things appear on the screen when I push buttons. Good start.

Utilities

Ark. In Xfce, I use Xarchiver to work with tarballs, zipfiles, etc. I've also played with Squeeze in the past, but found it rather unstable. Back in my Gnome days I used the ubiquitous file roller. There are a few different gtk+ archive managers I've used, and generally liked their UIs.

Ark seems to be the standard (possibly only) Qt archive manager in Portage. Sadly, it would not work: it said it did not have the necessary permissions to create archives in my own home folder! This was a show-stopper, so after a few half-hearted debugging attemps I unmerged it and went back to Xarchiver. Under KDE, Xarchiver sorts the archive in reverse, with files at the top and folders at the end, but this is a minor change to expected functionality. It still does everything else it's supposed to.

Plasma-emergelog: a plasmoid I found on the official KDE overlay. Prints emerge.log output from the last few merges; can be pretty useful. It's even written by a fellow Gentoo developer.

Dolphin: as filemanagers go, this one is okay. Once I disabled some of the hover mojo, enabled double-click activation, and added an "Up" arrow, it works like any other FM I've used. That is, with one key exception: the unending annoyance that is the location bar! I like having an editable location; it's much faster for me to type the location than it is to keep clicking backwards and forwards though the filesystem. However, the location bar doesn't seem to be persistent. Every time I open a new Dolphin window, I always have to click View -> Navigation Bar -> Editable location. My setting is never permanently saved. Is this a bug or a feature? It's driving me crazy!

The search bar is interesting, but useless. I intend to remove resource and space-sucking hogs like Nepomuk, Strigi, and anything else that uses the "semantic desktop." Maybe one of these days the semantic desktop will matter, and our tools for using it will improve, but for me, that day is a long way off.

I can't find one good desktop search framework for any environment, KDE, Xfce, or Gnome. Beagle, tracker, Strigi, you name it. In my experience they're just too slow and bloated.

Konsole: an acceptable terminal, though I may be going back to Xfce Terminal soon. Konsole does everything I need it to except make use of middle-click functionality. I can't middle click a URL to have it open up in a new Firefox tab, for example. This is something I do constantly -- whenever I run an eix query, I usually open up the application's homepage, which just needs a middle click in Xfce Terminal. It's a two step process in Konsole; I first have to right-click the URL, then choose "Open Link." I miss the middle-click so much I'll probably go back to Terminal. Now that my gtk+ widgets all look like native Qt apps, it's not like I'd notice a difference. The color schemes are the same, the fonts, are the same, they can both do tabs . . .

Networking

Kbluetooth: Bluetooth manager for KDE. In Xfce, I use Blueman, which gets the job done. It mostly has a unified user interface. But I can't actually browse my phone in a filemanager, since Thunar lacks support for that. Even using Gigolo isn't enough -- I'd have to install various FUSE packages to get support for opening the obex:/// location from Blueman, or use Nautilus. Neither are acceptable.

I can't browse my phone using Kbluetooth, either. I can send and receive pictures, but sending (from the phone) requires a laborious, slow process of selecting each file and stepping through several menus. Sending items to the phone from the laptop is much faster, as I can use the normal file picker.

Also, I couldn't get a unified preference/usage window to popup for Kbluetooth. I had to do lots of right clicking on the panel applet, and every setting requires a new window. Rather annoying.

One other annoyance was the fact that every time I wanted to receive a file from my phone, Kbluetooth opened KWallet. Can't it just read my PIN from secure location in the filesystem? I think that's what Blueman does, maybe someplace in /etc/, just like wicd and wpa_supplicant do for WLAN passwords.

I still need a good Bluetooth client that lets me browse my phone directly in a file manager of some kind.

WiFi: turns out that by reemerging solid with +wicd, it enables support for wicd, which I already have installed. I haven't seen how this works, though. Wicd was already listed in the program autostart menu; I just had to change the command so that it launches the tray applet and doesn't just run the background daemon.

Regardless of any special Solid integration, however that works, since wicd operates normally, it may remove
the need to install some other network connection manager. I'm quite comfortable with wicd, and it'd be nice if I didn't have to setup a new configuration for a new app every time I switch desktop environments.

Writing

Kblogger: client that supports multiple blogging APIs, including LiveJournal support. I found this client in the kde overlay. However, it doesn't actually work with LJ. It can't add post tags, nor can it retrieve existing tags. Trying to do so kills the application. Very buggy. I gave up and unmerged it.

Blokkal: another multi-blogging client with LiveJournal support. Does everything I want it to for LiveJournal. Minor annoyance: I can't just type my LiveJournal password into Blokkal, but instead have to first enter the password for KWallet. But that's probably a more secure method of storing it locally, right? Still, it's an extra step that I don't have to take when using gtk+ clients like Drivel or LogJam.

Office

The next big writing application to find is a word processor: something that's fast, easy-to-use, and doesn't require hours of downloading and compiling. KWord seems to be the most well-known office application, but the reviews I've read so far indicate that it tends to run a bit slow, though not as bad as OpenOffice. That's a positive sign, so I'll give KWord a shot.

On the lighter side, FocusWriter seems to be a Qt clone of PyRoom, which is a free gtk+ version of WriteRoom for the Mac. I wrote an ebuild for PyRoom a year ago; it's been one of my very favorite and most useful applications. I do need a distraction-free writing environment, so I'm glad to see that there's an equivalent application for KDE/Qt.

Other office software I need to investigate: spreadsheets, finance trackers, and email clients.

And another thing . . .

I notice that it can take a long time for newly installed applications to show up in the Kicker menu, or to disappear after I've uninstalled them. Why is that? Is something not scanning /usr/share/applications when it needs to? I usually have to logout if I want to see the menu updated.

More KDE 4

  • January 12, 2010
  • Josh Saddler

Recap

It's been several days since I installed KDE 4.

I've been using it off and on, experimenting with Arora and Dolphin. I'm just starting to sample the applications available for Qt/KDE.

Blokkal: an extendable blogging client for KDE4

One thing I did discover earlier tonight was a blogging client called Blokkal. This client caught my eye because it supports the LiveJournal protocol, which makes it one of about three (?) actively developed LJ clients on the internet. The others were all discontinued years ago, and their ebuilds have been removed from Portage. Sure, the source code is still available, but it's tough to integrate features such as tags, userpic management, and various other LJ service improvements. Or they come with heavy Gnome dependencies, as in the case of BloGTK and Drivel. (Yeah, I still think in terms of "how much will this weight down my Xfce desktop.)

So finding out that there's a native client that supports LJ was quite a treat. Blokkal also supports many other blog APIs, but I don't use 'em, so the only draw is the LJ integration.

Writing the ebuild

My next step was to write an ebuild for Blokkal, since a quick check of the Portage archives didn't turn up any ebuilds. Thus I began my plunge into the source code of the app and reading the stated requirements on the homepage.

Blokkal has a CMake-based build system, and it lists kdelibs, KDE PIM libraries, and the Phonon library as its requirements.

The first step of writing the ebuild was to get the basic header stuff (HOMEPAGE, SRC_URI, etc.) out of the way, then add the raw deps.

Dependencies

I was initially a bit unsure of the PIM library listing, as we have in Portage both kdepimlibs and libkdepim. The first was closer to the Debian package name, so I took a chance that this was the correct one. After that, a few quick eix checks on the rest of the packages sorted out the likely names, and then it was on to the source code to see what was a runtime dep, and what was a buildtime dep.

Turns out that with one exception, DEPEND was the same as RDEPEND, so that saved time. I initially had kdelibs as an explicit DEP, but Jonathan Callen (ABCD on IRC) kindly corrected me, as it's already in kde4-base.eclass. (Thanks to him and wired for answering some of my inquries.)

Eclasses

Eclasses were the next step: which eclass should be used to get proper background dependencies, source configuration, compilation, and installation? The KDE and Qt teams have been very good about eclasses over the years; most ebuilds inheriting them don't need much in the way of actual code lines -- no need to duplicate anything when the eclass does the work for you.

There are a few different KDE4 eclasses available in the tree, and I had to read through 'em all to guess which one was most appropriate. Other KDE applications in Portage don't need many lines of code; the various eclasses do all the heavy lifting. I jumped on IRC to confirm my choice of kde4-base.eclass, then ran the emerge, only to be met by compile failure!

Compiling and running

I suspected it was an error I've run (and fixed) before, and sure enough, it was: I just had to redefine ${S} since the package download is Blokkal-0.2.1, but the ebuild is blokkal-0.2.1 in lowercase. I'd gotten ${MY_P} right elsewhere in the ebuild; just forgot this one thing.

After the fix, it compiled just fine, started up just fine, and I added my account . . . only to discover that I couldn't log in. Something was missing . . . but what?

I took another look at Blokkal's source code. There were a few kwallet headers and kwalletmanager references that implied another runtime dependency was needed. I added kwallet to the ebuild's RDEPs, recompiled, and finally got the popup window asking for the password. Now I could login to my account and do some Blokkal UI configuration.

Try it out

Since the ebuild is finished, why not try out Blokkal? Get the ebuild here.

Coming up

So there you have it: another step in my KDE4 odyssey. I expect to get my hands on some themes, multimedia applications, office/writing tools, and more.

Obligatory screenshots

Here's my current desktop, which mostly shows off the "Naked" plasma theme and my desktop widgets:

Clean and naked

For comparison, here's one with a couple of open applications. This shows how well gtk+ applications are integrated into KDE, thanks to the QtCurve style. In the background is Dolphin (Qt4) and in the foreground is Abiword 2.8.1. (From the ebuild I wrote for it)

Integrated

On KDE 4.3.3

  • January 7, 2010
  • Josh Saddler

I finally did it: I compiled and installed KDE4 on my laptop on the 5th. Took all night. Hours and hours, but it was ready the next morning, with nary a compile failure. Which is good, since it is the stable branch and all. But wait . . . KDE?

Why KDE?

In a word, SLiM. Sometime in mid-December I caught an X11 update that made SLiM stop working. Or maybe it was something else. My theory is it was the xinit update that dropped twm, xclock, and xterm from the required runtime deps. So abruptly SLiM stopped working, and I couldn't login graphically; I just got errors saying "Couldn't execute login command" with nothing else in my logs. Forums didn't help. I could run startx manually, but that's a pain. Not suitable for a laptop shared with my wife. I unmerged SLiM and started looking around for alternatives. GDM is one, but it drags in a bunch of Gnome dependencies. XDM is just ugly and unconfigurable, and lacks the appropriate shutdown/restart/suspend actions. KDM was the last candidate. Yes, it had lots of KDE dependencies, but I figured that if I installed KDE4, then it wouldn't have as many deps, right?

Yeah, I know, it's like: "But . . . aren't you an Xfce guy? Don't you exclusively use gtk+ environments (including Gnome in years past)? Don't you hate heavyweight crap or endless C++ compiling?"

Yes, yes, yes, and yes. I know. But here's the thing: after initially getting excited about Aaron Seigo's (now canceled) upcoming talk on KDE at SCALE, I then found out that Camp KDE will be right here in San Diego, just a few miles from where I live. So I started thinking -- now that things have settled down since the disastrous 4.0/4.1/4.2 days, maybe . . . maybe it would be worth experiencing directly what "the future" is all about, according to the hype machine. I'm thinking of visiting Camp KDE, so I thought if I do, I should have some knowledge of how KDE currently works.

Past and present

The last time I ran KDE was back in late 2004 or early 2005. As far as I remember, it wasn't even on Gentoo, but on other LiveCDs and distributions. I still have an old Knoppix CD from 5 or 6 years ago lying around -- and that was KDE3-based. Given Plasma and all the other new buzzwords and technologies and new paradigms, I figured it was about time to see how things have progressed.

Or stayed put.

Configuration

True to form, KDE4 still makes configuration this massively complex, insanely arcane art. You need an engineering degree to wade through the simplest of configuration menus, even when right-clicking on an item in your panel -- if you can find it, that is. The dialogs are very inscrutable; it makes navigation difficult. All these weird arrows and spaces and popup panels in the default theme, not even something with extra bling.

One of the first things I did was turn off that stupid window-that-is-not-a-window on the desktop, so that I wasn't distracted by all the flashy Plasma widgets. After that, I spent a half hour trying to tweak the font settings. I discovered that buried in the Antialiasing dialog are the actual hinting and RGB subpixel hinting configs that I was looking for, though there's a catch. You can actually disable (that is gray out) the AA option, which makes you unable to get to the stuff below it. BUT, as long as you've tweaked your hinting settings before exiting that subdialog, that's okay! You just have to re-enable AA to get into the hinting subdialog. Stupid, I know. The Xfce way is much, much better; all three options are exposed top-level.

After making my desktop readable with Verdana fonts, it was time to start poking around. And around and around and around -- it's easier to navigate the Windows Control Center than KDE CC. Things haven't changed there in 6 years. It's especially bad when you get to the properties of your Qt theme, in this case, QtCurve. Several dozen confounding lines popped up in the right box, dizzying amounts of tweaks that should in no way be exposed to the end user. Seriously, just let the theme author set 'em and forget about 'em. If there need to be variants...don't expose every last line of optional code to the user.

Integrating gtk+ apps

Despite some initial setbacks, I decided it was time to start installing a few more packages. See, I wanted a bare minimum install, which turned out to be 74 packages for kdebase-startkde and kdm. That's after tweaking my USE flags for half an hour to whittle the dependencies down. Yeah, that's the bare minimum -- I was at only about 470, 480 total packages for my very minimal Xfce environment. I like my laptops to run lean.

Then I added qtcurve-qt4, gtk-engines-qt, and kcm_gtk, since without the unfortunately ~arch kcm_gtk, it's not possible to have your gtk+ apps use your Qt theme. This needs to be rectified; the gtk+ module should be stabilized ASAP, given that everything else is stable. Once in place though, even Firefox behaved nicely with my Qt theme. Very nice.

After fleeing from the QtCurve controls, installing kcm_gtk, and restarting KDE, I was able to get my gtk+ apps integrated nicely with KDE. That's one area that KDE4 beats Xfce and Gnome, at least in Gentoo. We don't have a "Make your Qt apps look like native gtk apps" gtk+ engine in Portage.

Packages: webbrowser

I still needed a file manager and a webbrowser, so I decided to install Konqueror, having used it in years past. It turns out that Konqueror doesn't have dual-functionality anymore; it's just a webbrowser. A webbrowser that can't use Flash until you install kde-base/nsplugins, FYI.

Konqueror startup is much better than it was 5 years ago. It's still kinda slow, but not as slow as Firefox! The downside is that when running, it tends to be a bit slower since it doesn't have the nice Adblock features that the Firefox extension offers. Yes, it can kind of do Adblock with lists, but as far as I could tell, it was still downloading all the "blocked" content and rendering it, but just making it invisible via CSS or some such mojo. It's still doing all the processing of heavy Flash and Javascript, but where you can't see it. Contrast that with never downloading blocked content in the first place.

Speaking of Adblock, I think the main reason why I'm still on Firefox is that there's not a single Adblock implementation that has the functionality of the Firefox version: making it easy to right click on anything, Flash, iframe, image, text, etc, and add it to the blacklist with a simple click. Nothing else even comes close, and I've tried almost all the gtk+ webkit browsers out there. None of them can do it. Which is too bad; I love webkit's speed and rendering accuracy, but no browser that uses it has integrated an easy-to-use constantly-configurable Adblock plugin. Maybe Arora, Rekonq, or some other Qt browser can, but I'm not holding my breath.

Packages: file manager

So I'm still on the lookout for a good Qt webbrowser, and a file manager while I'm at it. Supposedly Dolphin is the new Konqueror, but the jury is still out on its dependencies because of weird USE blocks. I've been sticking with Thunar, which now looks good in QtCurve, except for the icons. I get a lot of default blank icons even with the help of kcm_gtk. For some reason, despite activating the right setting, the KDE icon theme isn't fully integrated with Thunar. I'll give Dolphin another shot tomorrow.

Packages: terminal

Konsole works decently -- it doesn't start up as quickly as Xfce Terminal, but it does blend nicely with KDE (of course). Its configuration works just like the ol' Gnome terminal: instead of the simple, obvious "Edit Preferences" menu found in Xfce Terminal, you have to click "Edit current profile." Which means you have to know what a profile is, that you're using one, and that it has things you want to change in it. Still, Konsole is fairly configurable; I got it to my preferred white-on-black setup, with my fonts just how I like 'em. It did what I wanted it to after a bit, though I didn't find the option to disable "Scroll on output," which is annoying when I want to read a bit of emerge output in mid-compile. Minor nitpick; I'm otherwise satisfied.

Speed and desktop effects

Performance is another matter. Yes, I am running a mostly stable/some ~arch Intel graphics stack, on an X3100 IGP, but come on . . . I expect window moving, resizing, fading, and switching to be snappier! Once I enabled desktop compositing, it both helped and hindered window usage. The OpenGL renderer is faster than Xrender. Xrender is much slower at window fading and moving; there's lots of lag. However, the OpenGL renderer leads to buggy themes -- about half the Qt and Kwin themes are unusable because of serious visual glitches and artifacts that corrupt the widgets and buttons. This is present to some degree even in the default Oxygen/Ozone themes, and to a lesser extent in QtCurve. Sometimes widgets flash real fast or in weird colors when you mouse over 'em, sometimes they remain normal. It might just be Intel graphics code; who knows. It doesn't happen when using Xfwm4's Xrender compositing, though. Xfwm4's compositing is also very snappy, with no slowdown.

While there are some performance issues, and some OpenGL problems, I did discover something totally neat, something even my wife thinks is cute and wants on her Mac: the snow widget! KDE4 includes an awesome composite trick that brings weather onto your desktop. You can set it up so that there's gently-falling snowflakes behind all your windows. Awesome! So peaceful and cozy. If I take away one thing that gave me a good feeling from the experience, it was enabling the snow candy -- which isn't as hard to do as it was in Compiz, I might add. Mmm, snow.

What I really want now is some "rain" eyecandy that does the same thing. Or better yet, some kind of Plasma widget that sends rain/snow/wind/sunshine/etc. across my desktop depending on what the actual weather is in my area. Anyone heard of something like that? It'd probably have to tie in to accuweather.com or something. Man, that'd be sweet!

Panel widgets

Speaking of desktop widgets, while I haven't even scratched the surface of what Plasma can do, nor of all the thousands of Plasmoids out there, one widget that really bugs me is the clock in the panel. Seriously. What is up with this useless clock? Its only config options are "fonts," "timezone," and "timezone." Oh yes, and "timezone." Is there enough timezone yet? Apparently not. I can't even make it 12-hour, nor display the month/day in the format that I'd like. Even Xfce's not very-click-userfriendly clock at least gives me full display control by offering the time shell codes. Once I learned how they work, I set it up to my liking: %a, %b %d %l:%M%p, which results in Wed, Jan 06 11:47PM. I can't do that in KDE.

Heck, the menu that I get from clicking on the clock widget is not the same menu I get when going to the KDE CC and clicking the time dialog there. That's another HUGE gripe of mine against KDE over the years: so many different menus in so many different places, for the same option or really similar options. What I really don't like is right-clicking an object to see one menu, but then I see a totally different menu when left-clicking it. Oh man, you've just lost a lot of points in your UI design right there. The other thing in KDE that bothers me is the constant renaming of things. It's not always just "Properties" in the right-click menu, nor is it always easily accessible. Sometimes I have to scroll down to hit a horizontal arrow that exposes the "Properties" dialog or whatever it's called.

I don't think this is because it's an add-on application; this is all the stock KDE you get from emerging kdebase-startkde, not some random app from kde-look.org. Shouldn't there be more of a unified, easily accessible user interface? It feels like the right hand's not talking with the left hand throughout the desktop.

Future

Still, I want to press on and learn the system. I want to get through it and use it long enough to really see if it works for me. There's also the school of thought that says that if I have to adapt myself to the tool in order to use it, then the tool itself is broken from the start. Something to think about.

There's also this whole "semantic desktop" framework that's part of KDE. I have no real idea what it is, how to use it, how many resources it consumes, or even if I want it. But it's something I want to try out . . . somehow.

Assuming that I do stick with KDE's foibles'n'gripes and take the time to get over the learning cliff, deal with all the pesky annoyances, and generally persevere . . . I'll need to install more applications to get a useful workspace. If I'm going to take the time to get a good dual-boot desktop environment going, I need something to make it productive. That means music and video players, spreadsheets, word processors, instant message apps, a mail client. (Oh, the horror of migrating yet again, having lived through the Thunderbird -> Claws move). CD players/rippers/burners. Printer utilities. Easy WiFI/networking controls. Power management tools.

All kinds of apps that I have some idea about, but only from "the other side of the fence," things I've only read about in the gtk+ world. On the other hand . . . as long as my existing gtk+ apps are integrated visually into KDE (thanks to QtCurve) and "just work," maybe I don't need to duplicate my entire Xfce environment?

Still, suggestions and feedback are very much appreciated.

November Xfce desktop

  • November 12, 2009
  • Josh Saddler

Decided I'd shake things up a bit this month, after keeping the same look for nearly three straight months. Thus, I present:

Grunge

icons: Area o.43
gtk+: Rele (Rezlooks engine)
xfwm4: Rezlooks-gtk (yes, it is confusingly named)
background: rassilon

It's grungy, but rather sleek. Surprisingly easy on the eyes, too. The lighter elements of the Rele gtk+ theme aren't overpoweringly white, but are just light enough to provide a decent contrast to the generally darker Area icons.

There's also an uncluttered version here.

I've been looking to assemble themes that are grungy, and themes that are warmer-yet-wintry. I like winter. I still have some hope that these 80 degree weeks will come to an end soon. We're almost to the middle of November. Surely we'll see gray sky, cool breezes, and maybe even rain here in SoCal at some point, right? Right? Well, if not, I can at least put it on my desktop.

R700, KMS, 3D, SSD, and other hardware

  • October 4, 2009
  • Josh Saddler

Gosh, just look at all the buzzwords in the title!

As you may have guessed, I'll be talking a bit about the recent developments on the FOSS drivers for RadeonHD cards, specifically for R700 cards. And some other hardware stuff.

Radeon

Yesterday, October 3, I made some big ol' changes to my workstation.

I decided to try out the new video driver stack that all the kids have been talking about. Kernel Mode Setting, git Mesa/xf86-video-ati/libdrm, git kernel 2.6.32_rc1-git3. All that jazz. I wanted to see if the 3D and KMS features were really working on my RadeonHD 4550 or not. I normally run a stable graphics stack, with ~arch Mesa/x86-video-ati/libdrm where necessary to keep up on 2D acceleration and features.

This was a big leap for me. So I first consulted some of the X11 team members, remi and nirbheek, who were quite helpful. I installed the latest git-sources kernel, which at the time was 2.6.32_rc1-git3. Mike Pagano has since added -git5. Next, I downloaded the individual -9999 ebuilds for the git master packages from the X11 overlay, stuck 'em in my local overlay, and merged 'em. Only thing left to do was reboot.

Lemme tell ya -- KMS in action is awesome. The console output is just beautiful, and there's no more flickering when SLiM and Xfce load.

I did notice some minor graphical corruption of the default mouse pointer. However, the corruption isn't present when using any pointer but the default "arrow", and it also isn't seen when hovering inside a Firefox window. I was told this is because Firefox uses its own cursors. Anyway, I reported the bug upstream.

Disclaimer: I know glxgears isn't a benchmark. But folks always want to know its results anyway. I tried running glxgears, which gave me a result of over 1300FPS with desktop compositing activated. My window manager is xfwm4, so all compositing is via Xrender, not OpenGL. Disabling compositing resulted in a 500FPS boost to over 1800FPS. What's this mean? Who knows. Probably nothing. Moving on.

I took the advice of my fellow developers on IRC and installed quake3-demo. Couldn't run it, though. It blanked the screen, then a message from my LCD firmware appeared, some kind of "input not supported" or "input not detected" error. It slowly repeated the window, drawing it from center to the top right. I had to Ctrl-Alt-Bksp to get to the console. It also locked up SLiM in the background, pegging one of my CPU cores at 100%. At this point, I rebooted just to test that KMS was still working, then called it a night.

Today, I revisited my pointer corruption bug and tried the workarounds posted by Alex Deucher. To my surprise, each one worked! Booting with radeon.modeset=0 removes the glitch, though it makes each boot extremely ugly, of course. Specifying EXANoDownloadFromScreen "true" in /etc/X11/xorg.conf also fixes the corrupted pointer, though it may also be slowing down all screen drawing operations by the tiniest bit. The jury's still out on that one; it may just be my imagination. I decided to keep this second fix, as KMS is just too glorious to throw out. I like pretty boots.

I also revisited quake3-demo, since I found some pointers on the Phoronix forums that had a workaround, which is to run OpenGL applications prefixed by LIBGL_ALWAYS_INDIRECT=1. To my surprise, this worked nicely. I tested resolution has high as 900-something by 720. My screen is 1440x900, but I haven't felt like pushing it that far, yet. The game is fluid and playable. I need to figure out how to display FPS so I can properly record what I'm seeing.

With the success of Q3demo, I remembered that QuakeLive has recently added Linux support. I installed the add-on for Firefox and tried it out. Works nicely, though I'm also running Firefox with LIBGL_ALWAYS_INDIRECT=1 just to be sure. As Alex Deucher and John Bridgman have pointed out on the Phoronix forums, that variable really isn't the safest thing to do, since if something crashes it can take down the whole X server, not just the application. However, it's also the only way I get working 3D games.

QuakeLive is pretty playable, though the framerates in a few places aren't smooth -- I can't tell if this is because of my card's capabilities, or the driver stack, or the whole weird idea of playing a 3D first-person shooter inside a web browser. :) The big problem with QuakeLive is that the sound is terribly distorted: the voices are greatly drawn-out and slowed down, like playing an old tape recorder at 1/4 speed. There are some solutions on the QL forums, but they're mainly for Ubuntu/Pulseaudio users. I haven't found anything that works for me, yet. The effects and music are okay; it's just the voices that lag horribly.

I've also installed the latest Nexuiz, version 2.5.2, in anticipation of future testing. One of these days I'll reinstall UT2004, but I haven't read any succesful reports of that game on R700 cards. There's a lot of testing to do in the future!

Overall, I'm thrilled with the new driver hotness for my ATI card. I bought it specifically because I knew the 2D support at the time was excellent, and because there would be so many good things coming down the way for other features, including 3D acceleration. (Yes, just like the latest XKCD strip. I swear, it's like that guy listens to everything I say and watches everything I do. It's really spooky!)

Hats off to all the developers for making it happen. Many thanks!

SSD

After August's fiasco with a defective SSD, I decided to use my refund from the RMA and order a different SSD a few days ago. This time I've settled on a SanDisk enterprise SSD from an HP blade server. Only cost $49, no shipping charges. Brand new. eBay for the win.

It packs 16GB of SLC flash, which makes it perfect for mounting /usr/portage and /var on it. This way I can feel free to sync whenever I want, instead of only once a week or more. My system drive uses MLC flash, so I've been trying to ease the write load on it, which means putting the high-write activity on a dedicated disk.

The SanDisk SSD "only" has sustained reads/writes at 60MB/sec, but that's plenty for syncing Portage, as the real limiter is not how fast data can be dumped to the disk, but how fast the rsync servers can send it to my box. Same for /var writes -- it's mostly just log files and some tiny temp things, as /var/tmp is already mounted on a RAMdisk. No large files that need >100MB/sec bandwidth. I'm lookin' forward to shovin' it in my box!

More hardware

Since September 28 was my birthday and all, I've been treating myself to various bits of cheap hardware. Like a replacement AC adapter for my DC PicoPSU. The current AC brick is rated at 102W, which is way more than I need, but the problem is that it spins up its tiny fan at only 50%-75% load. This means that opening up a bunch of tabs, compiling packages, playing Quake, watching large-sized Hulu videos and whatnot turns on the fan right away. And it's the world's most annoying fan. It's loud, whiny, it hisses, and it blows the bad smell of very hot electronics out into the room. Lemme tell you, hot plastic and PSU guts do not smell good.

I just ordered a replacement fanless adapter. This thing is high-quality, designed to run very cool. And it's rated at 150W output, meaning it can match my 150W PicoPSU. My max system draw is maybe 60W, but I'll have overhead room in case I ever feel like upgrading a key component somewhere.

I also bought a $40 wireless router, an Asus WL-520gU. I already have a WL-500gP v2, which I hacked and flashed with DD-WRT a long time ago. This new router is so that I can hook up my Xbox 360 to the network without having to run 50 feet of cable across the carpet. I chose the 520gU instead of the gC because the gU supports Xlink Kai, which seems pretty cool to me, as I don't have a Gold Live account. Yay for tricky internets. Apparently it's pretty common to buy a cheap wireless router and put it into client mode, rather than buying the $100 official USB dongle . . . which doesn't even support WPA2-AES or any decent security. Asus routers are known for excellent open-source support, and I've had nary a complaint about my current one. Yay for Linux on routers! Yay for online gaming!

* * *

Oh yes, and before I forget, this month's Xfce desktop:

Space ice!

It's October, but my current desktop is so pretty (gallery link) I haven't felt the need to switch for the last couple of weeks. There's another clean version that just shows off the wallpaper in my devspace.

Benchmarks: gtk+ engines revisited

  • June 12, 2009
  • Josh Saddler

Six months ago I posted some benchmarks of popular gtk+ engines. It's time to revisit those benchmarks and test the engines again, this time using FOSS drivers for my new hardware.

Today I installed my brand-spankin' new graphics card, an ATI RadeonHD 4550, by Sapphire. Getting working 2D acceleration with EXA was a cinch, now that the 2.6.30 kernel is out. Doesn't require anything special in terms of packages; nothing from overlays or bleeding-edge git checkouts. Only needs three ~arch packages: gentoo-sources, libdrm, and mesa.

For this updated round of testing, I used the same gtk+ engines, but also added some new ones. These can all be obtained by installing the following packages: gtk-engines, gnome-themes, gtk-engines-aurora, gtk-engines-candido, gtk-engines-rezlooks, and gtk-engines-xfce. New to the testing list are the Crux, ThinIce, HighContrast, and Redmond95 engines.

Once again, gtkperf-0.40 was used to obtain these benchmarks. With the exception of the graphics hardware and driver, the testing environment is mostly the same. Xfce has been updated to 4.6.1.

Let's see how all these engines perform on my Xfce workstation, eh?

Notes on the hardware:

CPU: Athlon 64 X2 4600+
Graphics: ATI RadeonHD 4550, DVI 1440x900 @ 60Hz
RAM: 4GB DDR2-667
Mobo: ASUS M3N78-VM

Notes on the testing environment:

OS: Gentoo Linux (duh)
Kernel: Linux 2.6.30-gentoo-r1 #1 SMP PREEMPT x86_64
xf86-video-ati: 6.12.1-r1
CFLAGS: -march=athlon64-sse3 -O2 -fomit-frame-pointer
DE: Xfce 4.6.1
- Xfwm4 with Composite enabled, effects: drop shadows & transparency
- Open applications: 2 instances of x11-terms/terminal

Custom themes are noted with *. These are personal themes I've made, nothing more than simple color modifications of an existing freely available theme. No additional images are used, so rendering time should not be affected.

All tests were conducted 3 times, using a Test Round setting of 100. I picked the best score of the 3, as I was looking for best-case usage conditions. The results are ranked in order from fastest to slowest.

Engine: HighContrast
Theme: HighContrast

GtkEntry - time: 0.03
GtkComboBox - time: 0.63
GtkComboBoxEntry - time: 0.46
GtkSpinButton - time: 0.04
GtkProgressBar - time: 0.02
GtkToggleButton - time: 0.04
GtkCheckButton - time: 0.03
GtkRadioButton - time: 0.06
GtkTextView - Add text - time: 0.18
GtkTextView - Scroll - time: 0.08
GtkDrawingArea - Lines - time: 0.91
GtkDrawingArea - Circles - time: 1.21
GtkDrawingArea - Text - time: 0.89
GtkDrawingArea - Pixbufs - time: 0.11
---
Total time: 4.70

Engine: Rezlooks
Theme: Rezlooks Blue Ink*

GtkEntry - time: 0.05
GtkComboBox - time: 0.61
GtkComboBoxEntry - time: 0.41
GtkSpinButton - time: 0.05
GtkProgressBar - time: 0.03
GtkToggleButton - time: 0.06
GtkCheckButton - time: 0.04
GtkRadioButton - time: 0.11
GtkTextView - Add text - time: 0.18
GtkTextView - Scroll - time: 0.07
GtkDrawingArea - Lines - time: 0.94
GtkDrawingArea - Circles - time: 1.17
GtkDrawingArea - Text - time: 0.89
GtkDrawingArea - Pixbufs - time: 0.11
---
Total time: 4.72

Engine: Mist
Theme: Mist

GtkEntry - time: 0.03
GtkComboBox - time: 0.65
GtkComboBoxEntry - time: 0.45
GtkSpinButton - time: 0.06
GtkProgressBar - time: 0.03
GtkToggleButton - time: 0.05
GtkCheckButton - time: 0.04
GtkRadioButton - time: 0.10
GtkTextView - Add text - time: 0.18
GtkTextView - Scroll - time: 0.07
GtkDrawingArea - Lines - time: 0.87
GtkDrawingArea - Circles - time: 1.17
GtkDrawingArea - Text - time: 0.91
GtkDrawingArea - Pixbufs - time: 0.12
---
Total time: 4.72

Engine: ThinIce
Theme: ThinIce

GtkEntry - time: 0.03
GtkComboBox - time: 0.65
GtkComboBoxEntry - time: 0.42
GtkSpinButton - time: 0.07
GtkProgressBar - time: 0.03
GtkToggleButton - time: 0.05
GtkCheckButton - time: 0.03
GtkRadioButton - time: 0.07
GtkTextView - Add text - time: 0.19
GtkTextView - Scroll - time: 0.09
GtkDrawingArea - Lines - time: 0.91
GtkDrawingArea - Circles - time: 1.16
GtkDrawingArea - Text - time: 0.88
GtkDrawingArea - Pixbufs - time: 0.12
---
Total time: 4.72

Engine: Glide
Theme: Glider

GtkEntry - time: 0.06
GtkComboBox - time: 0.65
GtkComboBoxEntry - time: 0.49
GtkSpinButton - time: 0.08
GtkProgressBar - time: 0.03
GtkToggleButton - time: 0.05
GtkCheckButton - time: 0.05
GtkRadioButton - time: 0.14
GtkTextView - Add text - time: 0.20
GtkTextView - Scroll - time: 0.09
GtkDrawingArea - Lines - time: 0.85
GtkDrawingArea - Circles - time: 1.20
GtkDrawingArea - Text - time: 0.87
GtkDrawingArea - Pixbufs - time: 0.14
---
Total time: 4.90

Engine: Redmond95
Theme: Redmond

GtkEntry - time: 0.04
GtkComboBox - time: 0.76
GtkComboBoxEntry - time: 0.57
GtkSpinButton - time: 0.06
GtkProgressBar - time: 0.02
GtkToggleButton - time: 0.10
GtkCheckButton - time: 0.12
GtkRadioButton - time: 0.13
GtkTextView - Add text - time: 0.19
GtkTextView - Scroll - time: 0.08
GtkDrawingArea - Lines - time: 0.90
GtkDrawingArea - Circles - time: 1.17
GtkDrawingArea - Text - time: 0.90
GtkDrawingArea - Pixbufs - time: 0.12
---
Total time: 5.16

Engine: Clearlooks
Theme: Glossy

GtkEntry - time: 0.02
GtkComboBox - time: 0.77
GtkComboBoxEntry - time: 0.56
GtkSpinButton - time: 0.19
GtkProgressBar - time: 0.12
GtkToggleButton - time: 0.12
GtkCheckButton - time: 0.08
GtkRadioButton - time: 0.11
GtkTextView - Add text - time: 0.18
GtkTextView - Scroll - time: 0.10
GtkDrawingArea - Lines - time: 0.95
GtkDrawingArea - Circles - time: 1.17
GtkDrawingArea - Text - time: 0.91
GtkDrawingArea - Pixbufs - time: 0.12
---
Total time: 5.40

Engine: Crux
Theme: Crux

GtkEntry - time: 0.03
GtkComboBox - time: 0.89
GtkComboBoxEntry - time: 0.75
GtkSpinButton - time: 0.14
GtkProgressBar - time: 0.04
GtkToggleButton - time: 0.05
GtkCheckButton - time: 0.06
GtkRadioButton - time: 0.10
GtkTextView - Add text - time: 0.18
GtkTextView - Scroll - time: 0.12
GtkDrawingArea - Lines - time: 0.90
GtkDrawingArea - Circles - time: 1.16
GtkDrawingArea - Text - time: 0.90
GtkDrawingArea - Pixbufs - time: 0.13
---
Total time: 5.46

Engine: Industrial
Theme: Industrial

GtkEntry - time: 0.05
GtkComboBox - time: 1.13
GtkComboBoxEntry - time: 0.54
GtkSpinButton - time: 0.06
GtkProgressBar - time: 0.05
GtkToggleButton - time: 0.15
GtkCheckButton - time: 0.06
GtkRadioButton - time: 0.07
GtkTextView - Add text - time: 0.19
GtkTextView - Scroll - time: 0.15
GtkDrawingArea - Lines - time: 0.89
GtkDrawingArea - Circles - time: 1.16
GtkDrawingArea - Text - time: 0.91
GtkDrawingArea - Pixbufs - time: 0.12
---
Total time: 5.54

Engine: Aurora
Theme: Aurora

GtkEntry - time: 0.05
GtkComboBox - time: 1.10
GtkComboBoxEntry - time: 0.90
GtkSpinButton - time: 0.20
GtkProgressBar - time: 0.06
GtkToggleButton - time: 0.12
GtkCheckButton - time: 0.08
GtkRadioButton - time: 0.16
GtkTextView - Add text - time: 0.19
GtkTextView - Scroll - time: 0.13
GtkDrawingArea - Lines - time: 0.92
GtkDrawingArea - Circles - time: 1.17
GtkDrawingArea - Text - time: 0.89
GtkDrawingArea - Pixbufs - time: 0.12
---
Total time: 6.08

Engine: Pixmap
Theme: Elegant Autumn*

GtkEntry - time: 0.04
GtkComboBox - time: 1.00
GtkComboBoxEntry - time: 0.80
GtkSpinButton - time: 0.15
GtkProgressBar - time: 0.15
GtkToggleButton - time: 0.22
GtkCheckButton - time: 0.06
GtkRadioButton - time: 0.11
GtkTextView - Add text - time: 0.23
GtkTextView - Scroll - time: 0.23
GtkDrawingArea - Lines - time: 0.98
GtkDrawingArea - Circles - time: 1.17
GtkDrawingArea - Text - time: 0.92
GtkDrawingArea - Pixbufs - time: 0.13
---
Total time: 6.19

Engine: Candido
Theme: Graphite Light

GtkEntry - time: 0.05
GtkComboBox - time: 1.94
GtkComboBoxEntry - time: 1.36
GtkSpinButton - time: 0.08
GtkProgressBar - time: 0.17
GtkToggleButton - time: 0.22
GtkCheckButton - time: 0.07
GtkRadioButton - time: 0.09
GtkTextView - Add text - time: 0.22
GtkTextView - Scroll - time: 0.16
GtkDrawingArea - Lines - time: 0.89
GtkDrawingArea - Circles - time: 1.17
GtkDrawingArea - Text - time: 0.91
GtkDrawingArea - Pixbufs - time: 0.12
---
Total time: 7.45

Interesting. Six months (and one new graphics card and driver) later, there's been a bit of a shuffle. All engines tested are clustered much closer together. There used to be a 12-second gap between the fastest and slowest engines. Now it's only 3 seconds. Part of that disparity comes from new versions of the engines. Aurora in particular has made phenomenal improvements since 1.4; the numbers you see here are from version 1.5.1. It's no longer at the back of the pack -- last place now belongs to Candido, which is still rather slow, especially in the ComboBox tests.

Curiously, although the completion times are stacked very closely, there seemed to be a general slowdown. While the older gtk+ engines still turn in respectable times, they're not always at the front of the pack. In particular, the Pixmap engine, which has historically had a speedy reputation, is now trailing most other engines. The theme used is extremely simple. I'm not sure what's causing the slowdown here. Perhaps its reputation for speed is no longer deserved; even six months ago it wasn't a standout.

There's no longer an engine that can turn in 3-second completion times; in fact, the four fastest engines all tied at 4.7 seconds. Of the four, Rezlooks is without a doubt the prettiest. Many of the screenshots in my devspace feature Rezlooks themes.

Two of the engines added for this round of benchmarks, Crux and Redmond95, end up in the middle of the pack. They're not particularly fast, nor are they pleasing to the eye. The other two newcomers, ThinIce and HighContrast, distinguish themselves by jumping to the very top of the charts. HighContrast is undoubtedly the ugliest engine presented here, while ThinIce's appearance rather resembles Mist. It's tolerable, but nothing I'd use, personally.

Once again, I'll stick with Rezlooks-based themes, as well as the occasional standout Pixmap or Clearlooks theme such as ClearLUX. ClearLUX in particular is extremely easy on the eyes when doing late-night computer work.


But where are the Xfce engine results? Let's take a look . . .

The Xfce engine results baffled me. The completion times varied wildly, everywhere from middle-of-the-road to flat-out fast to back-of-the-pack. So I intermittently benchmarked the Xfce engine for an hour, under varying degrees of desktop activity. Everything from lots of different applications open to a completely blank desktop. I couldn't generate consistent results. So, I decided to close down all applications and run a final series of three tests. Presented here are the slowest and fastest times logged for this series.

Engine: Xfce
Theme: Xfce

Slowest times
GtkEntry - time: 0.06
GtkComboBox - time: 1.18
GtkComboBoxEntry - time: 0.50
GtkSpinButton - time: 0.08
GtkProgressBar - time: 0.07
GtkToggleButton - time: 0.08
GtkCheckButton - time: 0.03
GtkRadioButton - time: 0.06
GtkTextView - Add text - time: 0.20
GtkTextView - Scroll - time: 0.14
GtkDrawingArea - Lines - time: 0.90
GtkDrawingArea - Circles - time: 1.17
GtkDrawingArea - Text - time: 0.94
GtkDrawingArea - Pixbufs - time: 0.15
---
Total time: 5.56

Fastest times
GtkEntry - time: 0.02
GtkComboBox - time: 0.55
GtkComboBoxEntry - time: 0.43
GtkSpinButton - time: 0.06
GtkProgressBar - time: 0.06
GtkToggleButton - time: 0.06
GtkCheckButton - time: 0.03
GtkRadioButton - time: 0.04
GtkTextView - Add text - time: 0.18
GtkTextView - Scroll - time: 0.12
GtkDrawingArea - Lines - time: 0.86
GtkDrawingArea - Circles - time: 1.19
GtkDrawingArea - Text - time: 0.90
GtkDrawingArea - Pixbufs - time: 0.12
---
Total time: 4.63

Look at that. A completion time of 4.63 seconds, well ahead of any other engine. That's best-case though; it can be almost as slow as the Aurora engine, which is notoriously heavy. The DrawingArea and TextView numbers are fairly static in both sets. Everything else tends to vary widely. No idea why. Perhaps the developers have made some changes under the hood between Xfce 4.4 and 4.6?