Since viewing log files can be some kind of annoying when you are only interested in a special problem I wrote a patch to filter/highlight specific sections of a logfile with gnome-system-log. A screenshot says more than thousand words:

Screenshot of gnome-system-log highlighting all gdm messages

Screenshot of gnome-system-log highlighting all gdm messages

The filters are based on regular expressions and should thus be quite flexible. The work was done (and paid) by Openismus Gmbh!

When looking into screenshots of KDE, Windows Vista or MacOS X you will notice that they killed most of the grey from their Desktop and replaced it by colors or black. None of the themes is absolutely great but they all look very pretty and modern.

I am a really bad artist but when I look at our Clearlooks or Ubuntu Human themes I feel they are very drab. This is not about usability which is definitely great but just about the impression you get the first time you fire-up your GNOME Desktop. Everything grey, grey panels, grey window, grey taskbar, etc. Too much grey. Too much 90’s.

Of course grey has the advantage of being a neutral color but couldn’t we set some colored accents on the Desktop? Has everything to be clean, cold and neutral?

As I said before, I am bad artist and won’t be much help on this topic but might anybody want to add a bit more color to the clearlooks theme? The clearlooks engine is really rocking but I think we could gain a much better user impression with more and better colors. I searched on but did not find anything that could fill this gap for me.

GtkSourceView 2.1 in Anjuta

5. January 2008

After Paolo Borelli, Paolo Maggi and others helped a lot in adding support for marks in GtkSourceView 2.0 (#487098), I was finally able to update Anjuta to use the new and much nicer version. The obligatory screenshot:

GtkSourceView 2.1 in Anjuta

Please also notice the new symbol-db plugin on the right-hand side which is constantly getting better thanks to Massimo Cora’ and should be end-user ready within some weeks. We are also very pleased that OpenedHand is supporting us with a patch.

For those interested, I also opened a new GHOP task for anjuta.

Happy coding!

Dell Ubuntu Laptop

14. December 2007

Two weeks ago I bought my first real Linux notebook after my old HP nx6110 already was fully linux-compatible but still had Windows XP preinstalled.

So after booting up my new Dell Inspirion 6400 the Ubuntu installation wizard popped up asking me for username, password and timezone and I found a standard Ubuntu GNOME Desktop. As many others have already complained about, Dell did not install 915resolution and thus the display was 1024×768 instead of 1280×800 which was of course quite easy to fix. Until now, they still ship Ubuntu 7.04 but I hope they will update to the new version soon because it’s a bit like shipping Windows XP without SP2 while security updates are of course installed.

The next step was to update to Gutsy which is of course as “update-manager -d” and worked without any problems. I also enjoyed the new codec-loading featurs of totem a lot.

What works:

  • Suspend-to-Disk
  • Suspend-to-RAM
  • All multimedia key except the rather useless “Media Direct” key which should launch the laptop directly into (Windows) Media Player
  • WLAN

What not works:

  • After Suspend-to-Disk NetworkManager hangs
  • After Suspend-to-Ram sometimes the keyboard does not respond (sleep and wake-up again usually fixes it) and in rare cases the display is not switched on.

In general quality and battery capacity seem very good and speed is ok as well as the low price. I hope Dell will improve Linux-integration for the next models to get a good out-of-the-box Linux feeling.

Hardware applet

19. November 2007

When playing with my new bluetooth hardware I was very pleased that it was supported out of the box. Anyway, I also missed something that would give me some indication that the hardware is working. (e.g. the first I did was to check dmesg)

When you look a Windows, they have those tiny notifications telling you that the new hardware was detected (or that it is not working or whatever). I think we should also have something like that. We now have HAL und dbus and I shouldn’t be that difficult to implement though I have no idea how this works in details. So take this as a proposal or tell me that it already exists (I didn’t find it):

There should three modes of operation:

1. Hardware is plugged in and supported

  • Tell the user “Detected xy – new hardware is now working” (alexl pointed out that we should not do this as it is obvious. I would prefer to have this notification for the first time the hardware is attached).
  • Propose some common operations: Open files for an USB-Stick, F-Spot for a digital camera, gnome-scan for a scanner, etc. Of course with a notification and not with an ugly centered dialog like Windows.

2. Hardware is supported but needs configuration

  • Show enough information that the user can complete the configuration
  • If there is no wizard to do this in a user friendly way, at least point the user to a (distro-specific) tutorial or at a place where he/she probably could find help.

3. Hardware is unsupported

  • Point the user to a distro-specific update tool to search for a driver (=> PackageKit comes in mind…)
  • If there is really no driver, ask the user to report a feature request, based on the device id. This should be saved in a database to see which drivers are needed by many people.

The most obvious case are of course USB devices but maybe also stuff like pcmcia and bluetooth could be detected that way. I think this would make hardware support on linux a lot more user-friendly. Personally I neither have the knowledge nor the time to implement that but maybe someone likes the idea!

Blue your teeth

17. November 2007

Yesterday I finally decided to give Bluetooth a go and bought the cheapest available USB adapter at the local electronic store. I must say that I expected it just not to work at all on Linux or that I would have to spend the whole afternoon to get at least some things working.

Anyway, I just plugged in the adapter and checked dmesg to see what happens. To my surprise it just told me that the driver was loaded and the bluetooth stack was now ready. I fired up the gnome-bluetooth-applet and clicked on “Browse Device…” to just see my mobile phone being detected and connected to it. I could not browse the files at first because the gnome-vfs-obex module was not installed but installing it fixed it.

After being able to browse my files I wanted to check if there is a way to sync my phone. After I checked that the phone (Sony Ericsson K530i) does not support SyncML I did not really expect to get anything going.

But as I wanted to give it a try for a long time, I first migrated from Thunderbird to Evolution to have a PIM-Suite and to have syncing support at all. Migrating is actually a real pain because you have to import all your folders manually but in the end it worked out. I have used Thunderbird/Netscape my whole mail live (about since 1994) and I still think that it is a good mail client. But Evolution is really better integrated into the GNOME Desktop and it has improved a lot since I last checked in those old 1.4 days. It could be a bit faster though and I found a nasty bug for people using small screens like me.

So back to syncing: I installed multisync after googling a bit what I need and added a synchronisation pair with Evolution and an “IRMC Mobile Device” (guessed that because some other Sony Ericsson phones were in the list). After clicking on “Sync” I expected an error message but instead the phone just synced.

So thanks a lot to anyone being involved in those Bluetooth and sync stuff – it’s really great!

Drag & Drop in Glom

24. October 2007

Glom drag & drop layout

Currently I am working on drag & drop layout support for glom (see #35809). After fighting a lot with GtkContainer internals I finally got the preview working more or less. On the screenshot you can see how the preview currently looks like. Of course this could be improved in many ways and it would be nice to get some feedback from UI designers how to improve the visual appearance of the preview. (Unfortunately you cannot see the mouse pointer in the screenshot…)

Glom drag & drop screenshot

The next steps are to create a nice toolbar-like window you can drag the new layout items from. Murray proposed a vertical bar which could fit good IMHO.

Anjuta progress

As you probably noticed already, we released a new bug-fix version (2.2.2) which should fix most critical bugs and some little usability problems. Anyway, the more interesting things happen in trunk, where Massimo is working on a new symbol browser that will support more languages and gives us much better informations about the available symbols. S├ębastien is doing an awesome work on the debugger and many other parts of the code. tpgww (AT) created great artwork for all kind of things and is continuing to add a lot of patches to bugzilla. I will show you more of the new features, once we have our first beta release (hopefully together with GNOME 2.21.1).

Blog migration

BTW, if you can read this I successfully migrated my blog from my own (outdated and probably insecure) wordpress installation to Thanks to Jeff for updating p.g.o and to the sysadmins for creating and maintaing this service!

This post is for all people that need debian packages for their software but are far too lazy to really learn all this packaging from the beginning. But be aware that it is really easy to build broken packages. I will not explain how to build packages for simple applications since this is explained quite good in the Debian packaging guide. Anyway, it does not explain library-packaging at all.

Packaging a library is not really difficult most of the time. Given that most GNOME libraries share a very common build system layout it would be a waste of time to start from scratch. So we search for a library the seems to be a good starting point for our own package. In my case, packaging libnotifymm, this was obviously glibmm. So first step, get the sources of that package:

apt-get source libglibmm-2.4-dev

Next step, copy the debian directory over to your project, not very tricky either, and delete the useless changelog:

cp -r glibmm-2.4-2.13.3/debian libnotifymm
cd libnotifymm/debian
rm changelog

Now, you end up with some files in the debian directory:

  • copyright: Check the license, put your name in, etc
  • control: The most important file. Replace the name of the library you took as sample with the name of your actual library, take care of the versions and update the dependencies. With an appropriate sample file the format is quite obvious.
  • *.dirs, *.install: These file show where the library gets installed on the system. Normally you should not have to change much here apart from renaming the files from oldlib.dirs to newlib.dirs. But always take a look a the files as there is probably mentioning the old package somewhere and you want to change that.
  • rules: Do not touch for now. Hopefully it will just work, otherwise you will notice that later

In the end, create a changelog using this command which will ensure you have the correct format:

dch --create

Now, let’s give it a go:

dpkg-buildpackage -rfakeroot

If you are (too) lucky, you will have fresh debian packages now. If not, it’s time to check the rules file for stupid shell scripting. The error messages normally give you some indication what could have been wrong. You may need some tries before everything works smoothly.

When you have finished, check if the packages install cleanly on your system and explore them with file-roller to see if they really install all the files needed.

As said before, this is really not the greatest way to create packages and you will do better if you read all the documentation about building packages. But often you get the idea from looking at other packages.

This is something I noticed playing around in valgrind and seems to be quite common in GTK+ code. When you retrieve a string from a GtkTreeView, YOU are responsible for freeing it:

gchar* my_string
gtk_tree_model_get (model, COLUMN_MY_STRING, &my_string, -1);
g_message ("Printing my string: %s", my_string);
/* Do something more useful
------------------------------- */
g_free (my_string); // Important, otherwise YOU leak memory.

In the hope it is correct and helps some people…

Linus’ metacity patches

17. February 2007

So, I just read Christan Schaller’s blog about the patches Linux Torvalds submitted to metacity and control center.

As that is not really mentioned anywhere (and I had to search various mailing list archives) here is the original mail, so anyone can get an idea of what these patches do and why someone would want to have this options. I don’t know if this patches a good, useful, whatever.

I am just a bit upset about the way this communication happened between people from GNOME and some contributor. I say some contributor here because we should not make any difference between people willing to help us. Linus is like anyone else and if he sent patches to the wrong mailing list than we can politely tell him. Of course, Linus might not have ever been fair to the GNOME community but nevertheless nobody should treat him differently than anybody else therefore (see Code of Conduct).

GNOME rocks! Let’s make it even better!