Using PackageKit in GNOME programs

Do you develop a GNOME program and want to install extra stuff for your application? Want me to write you some code for your application to make it “just work”? Ideas I can think of: • Installing extensions in epiphany • Installing debuginfos in the GNOME crasher thing • Installing language packs in abiword • Installing clipart for scribus • Installing -devel packages in anjuta for the autocompletion • Making GIMP install it's own plugins when an obscure file format is opened Any other suggestions welcome. Please email me if you want some help. You can install a package based on the package name, or just by specifying a file that the package provides. All the yucky stuff like licence agreements and GPG auth is handled in libpackagekit-gnome. You'll need to be running Fedora 9 prerelease if you want precompiled rpm's that work. I'll make the code a configure option (–enable-packagekit) so it won't be a hard dep. Any takers?

New PackageKit coolness

Here's some stuff that now works properly: Notice the new checkbox to cut the repo list down to a sane size? Notice the new 'All packages' group? Now we tell you if we add deps! In other, more interesting news, there's now a new library on the street, libpackagekit-gnome. This shared library will allow integration with GTK dialogs for the common prompts, gconf for licence preferences and hopefully gnome-keyring for the gpg auth stuff. It basically makes adding software in your GNOME application super trivial. More information and samples to come when I've got some gtk-doc documentation. Richard.

Add or remove all in a treeview

In gpk-update-viewer, the user can select with checkboxes which updates should be applied. This is fine, until you want to uncheck or check them all at once, where for 300 updates, unclicking each box seems tiresome. Matthias suggested a checkbox in the treeview header (but can't remember where he had seen that) and I quite like a right-click context menu. The open bug is here. Ideas welcome. Thanks!

GLib gperf

Dear Lazyweb, Is there a more modern, GLib'ish version of gperf? I want to go from string->enum and emun->string faster than just using strcmp in a loop. I don't think I want to use GHashTable as it needs to be bi-directional. I like nice compact simple C code, and don't like awk in makefiles. Ideas? Richard.

Clicking of snd_hda_intel

I've installed Fedora 9 Beta on a laptop with a snd_hda_intel sound card. Every time that alsa powers up the card (from, I guess, a sleep state) I get a speaker and ear popping *click* before the sound effect. I've found Linux is being very aggressive in powering down my soundcard by setting CONFIG_SND_HDA_POWER_SAVE_DEFAULT=5 (seconds). I was playing with the timeout like this: echo 0 > /sys/module/snd_hda_intel/parameters/power_save So I can actually use my laptop, I've disabled the powersaving doing this: sudo echo “options snd_hda_intel power_save=0” >> /etc/modprobe.conf So, is it:

  • My laptop being crap that it can't power on the soundard with out a DC click.
  • Linux setting a much too low timeout value
  • An ALSA bug that is worth pursuing?

Ideas welcome. Richard.

ServicePack : User Interface

Quite a common use case for Linux is where PC's are installed on computers without internet access, or where internet access is very expensive. So, enter PackageKit. You insert a CDROM or USB pendrive with updates on. The following UI appears: You click “yes” and then the update icon appears as if you were online. You click “Update system” and then the update proceeds as if you were online. Plus, because the local media is an actual repo, you can also use the Add/Remove software tool as normal. Nothing is in git master yet, although I've got a local branch that I'll probably merge after 0.1.10 is released. Comments appreciated.

PackageKit Google Summer of Code Ideas

PackageKit Google Summer of Code Ideas:

  • urpmi backend for Mandriva
  • portage backend for Gentoo
  • ports backend for FreeBSD
  • Rewrite opyum or APTonCD to support libpackagekit and be distribution neutral
  • Design a KDE front-end suitable for upstream inclusion
  • Profiling for memory and speed with a security review of the packagekitd daemon
  • Design of an end-to-end test harness for .rpm and .deb on temporary
    repositories for complete self check

If you are interested in any of these ideas then please email me and I'll give you more details.