Richard Hughes requested a small change to the PackageKit session API used to look up Plasma services before accepting the added function upstream: instead of a dedicated
InstallPlasmaResources method, the
org.freedesktop.PackageKit.Modify D-Bus interface got a generic
InstallResources method, which allows installing all the existing resource types as well as Plasma services, and any other resource types added in the future. It takes a
type parameter, which must be set to
"plasma-service" in our case.
With those tweaks, the PackageKit change and the gnome-packagekit change are now committed to upstream git. For Apper (KPackageKit), which is our main target, there is a patch for Apper master on Review Board and a backport for KPackageKit 0.6.x on the packagekit mailing list. Hopefully, Daniel Nicoletti will have some time to review the patch soon. If not, he suggested on IRC that I can just commit the patch as is and he’ll refactor it later if needed, so that’s my fallback plan.
I just submitted patches to the packagekit mailing list which implement a new
InstallPlasmaResources method in the
org.freedesktop.PackageKit.Modify D-Bus interface. There are patches for PackageKit itself, as well as for Apper (both master and KPackageKit 0.6.x) and gnome-packagekit. See my post to the packagekit mailing list for more details.
This completes the next step in my GSoC 2011 project. Now I can start working on using the new interface in Plasma.
This week, I worked on my first task in my GSoC project: automatically generating RPM Provides for Plasma services from Plasma’s metadata (in
.desktop file format). This turned out to be much easier than I had initially expected, also because my mentor Rex Dieter already had a working proof of concept I was able to start from. I adapted the code to use RPM 4.9’s new plug&play dependency generation functionality and, after discussing this with my mentor, changed the format of the Provides to
My work on Provides and (later on) Requires can be found in the
gsoc-2011-plasma-rpm branch of
kde-settings on Fedora Hosted. It can be installed separately, but it might be merged into upstream RPM or Plasma once finished.
Today, I tested the script on the
kdeplasma-addons package. The resulting Provides look like this:
[kevin@laptop64 x86_64]$ rpm -qp --provides kdeplasma-addons-4.6.3-1.fc15.x86_64.rpm kcm_krunner_audioplayercontrol.so()(64bit) kcm_krunner_charrunner.so()(64bit) kcm_krunner_spellcheck.so()(64bit) kcm_plasma_runner_events.so()(64bit) krunner_audioplayercontrol.so()(64bit) krunner_browserhistory.so()(64bit) krunner_charrunner.so()(64bit) krunner_contacts.so()(64bit) krunner_converter.so()(64bit) krunner_katesessions.so()(64bit) krunner_konquerorsessions.so()(64bit) krunner_konsolesessions.so()(64bit) krunner_kopete.so()(64bit) krunner_mediawiki.so()(64bit) krunner_spellcheckrunner.so()(64bit) plasma-applet_systemloadviewer.so()(64bit) plasma-dataengine-comic = 4.6.3-1.fc15 plasma-dataengine-microblog = 4.6.3-1.fc15 plasma-dataengine-ocs = 4.6.3-1.fc15 plasma-dataengine-potd = 4.6.3-1.fc15 plasma-runner-events = 0.3.0-100 plasma4(applet-comic) = 1.0 plasma4(applet-dict) = 1.0 plasma4(applet-fileWatcher) = 1.0 plasma4(applet-frame) = 1.0 plasma4(applet-incomingmsg) = 1.0 plasma4(applet-kdeobservatory) = 0.2 plasma4(applet-knowledgebase) = 0.1 plasma4(applet-konqprofiles) = 1.0 plasma4(applet-konsoleprofiles) = 1.0 plasma4(applet-lancelot_launcher) = 1.9.5 plasma4(applet-lancelot_part) = 1.5 plasma4(applet-leavenote) = 1.0 plasma4(applet-life) = 0.8 plasma4(applet-magnifique) = 0.1 plasma4(applet-mediaplayer) = 0.1 plasma4(applet-nowplaying) = 1.0 plasma4(applet-opendesktop) = 0.1 plasma4(applet-opendesktop_activities) = 0.1 plasma4(applet-pastebin) = 1.0 plasma4(applet-plasma_applet_notes) = 1.0 plasma4(applet-plasma_applet_rtm) = 0.1 plasma4(applet-previewer) = 1.0 plasma4(applet-qalculate) = 0.7.2 plasma4(containment-org.kde.griddesktop) = 0.1 plasma4(containment-org.kde.groupingdesktop) = 0.1 plasma4(containment-org.kde.groupingpanel) = 0.1 plasma4(dataengine-comic) plasma4(dataengine-kdeobservatory) = 0.1 plasma4(dataengine-microblog) plasma4(dataengine-potd) plasma4(dataengine-rtm) = 0.1 plasma4(packagestructure-comic) = pre0.1 plasma4(runner-CharacterRunner) = 1 plasma4(runner-audioplayercontrol) = 0.1 plasma4(runner-browserhistory) = 1.0 plasma4(runner-katesessions) = 1.0 plasma4(runner-konquerorsessions) = 1.0 plasma4(runner-konsolesessions) = 1.0 plasma4(runner-kopete_runner) = 0.1 plasma4(runner-krunner_spellcheck) = 1.0 plasma4(runner-org.kde.datetime) = 1.0 plasma4(runner-org.kde.events_runner) = 0.3.0 plasma4(runner-techbase) = 1.0 plasma4(runner-unitconverter) = 1.0 plasma4(runner-wikipedia) = 1.0 plasma4(runner-wikitravel) = 1.0 plasma_applet_bball.so()(64bit) plasma_applet_binaryclock.so()(64bit) plasma_applet_blackboard.so()(64bit) plasma_applet_bookmarks.so()(64bit) plasma_applet_bubblemon.so()(64bit) plasma_applet_calculator.so()(64bit) plasma_applet_charselect.so()(64bit) plasma_applet_comic.so()(64bit) plasma_applet_dict.so()(64bit) plasma_applet_eyes.so()(64bit) plasma_applet_fifteenPuzzle.so()(64bit) plasma_applet_fileWatcher.so()(64bit) plasma_applet_frame.so()(64bit) plasma_applet_fuzzy_clock.so()(64bit) plasma_applet_incomingmsg.so()(64bit) plasma_applet_kdeobservatory.so()(64bit) plasma_applet_knowledgebase.so()(64bit) plasma_applet_kolourpicker.so()(64bit) plasma_applet_konqprofiles.so()(64bit) plasma_applet_konsoleprofiles.so()(64bit) plasma_applet_lancelot_launcher.so()(64bit) plasma_applet_lancelot_part.so()(64bit) plasma_applet_leavenote.so()(64bit) plasma_applet_life.so()(64bit) plasma_applet_luna.so()(64bit) plasma_applet_magnifique.so()(64bit) plasma_applet_mediaplayer.so()(64bit) plasma_applet_microblog.so()(64bit) plasma_applet_news.so()(64bit) plasma_applet_notes.so()(64bit) plasma_applet_nowplaying.so()(64bit) plasma_applet_opendesktop.so()(64bit) plasma_applet_opendesktop_activities.so()(64bit) plasma_applet_paste.so()(64bit) plasma_applet_pastebin.so()(64bit) plasma_applet_plasmaboard.so()(64bit) plasma_applet_previewer.so()(64bit) plasma_applet_qalculate.so()(64bit) plasma_applet_rssnow.so()(64bit) plasma_applet_rtm.so()(64bit) plasma_applet_showdashboard.so()(64bit) plasma_applet_showdesktop.so()(64bit) plasma_applet_spellcheck.so()(64bit) plasma_applet_timer.so()(64bit) plasma_applet_unitconverter.so()(64bit) plasma_applet_weather.so()(64bit) plasma_applet_weatherstation.so()(64bit) plasma_applet_webslice.so()(64bit) plasma_comic_krossprovider.so()(64bit) plasma_containment_griddesktop.so()(64bit) plasma_containment_groupingdesktop.so()(64bit) plasma_containment_groupingpanel.so()(64bit) plasma_engine_comic.so()(64bit) plasma_engine_kdeobservatory.so()(64bit) plasma_engine_microblog.so()(64bit) plasma_engine_ocs.so()(64bit) plasma_engine_potd.so()(64bit) plasma_engine_rtm.so()(64bit) plasma_packagestructure_comic.so()(64bit) plasma_potd_apodprovider.so()(64bit) plasma_potd_epodprovider.so()(64bit) plasma_potd_flickrprovider.so()(64bit) plasma_potd_oseiprovider.so()(64bit) plasma_potd_wcpotdprovider.so()(64bit) plasma_runner_datetime.so()(64bit) plasma_runner_events.so()(64bit) plasma_wallpaper_mandelbrot.so()(64bit) plasma_wallpaper_pattern.so()(64bit) plasma_wallpaper_virus.so()(64bit) plasma_wallpaper_weather.so()(64bit) kdeplasma-addons = 4.6.3-1.fc15 kdeplasma-addons(x86-64) = 4.6.3-1.fc15
(The Provides starting with “
plasma4(” are the new, automatically detected ones.)
The next task is going to be asking upstream Plasma for feedback on this work and on how to proceed, because my next tasks will require closer interaction with Plasma upstream.
In Fedora 15, Freetype was updated to enable the TrueType bytecode interpreter (BCI) by default. The BCI is used by default for all fonts which include hinting information, unhinted fonts will automatically use the autohinter. (That fallback magic was the last remaining blocker for enabling the BCI by default in Fedora, because the patents on the BCI expired recently.)
In most cases, the BCI is what you want. However, if, for whatever reason, you don’t like the resulting rendering, it is possible to force autohinting instead of BCI-hinting:
- globally, using the
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <match target="font"> <edit name="autohint" mode="assign"> <bool>true</bool> </edit> </match> </fontconfig>
- per font, using something like
99-DejaVu-autohinter-only.conf. (That file disables the BCI for the DejaVu family, which is the default font in Fedora, except for GNOME 3 which uses Cantarell. It used to be shipped in old builds of freetype-freeworld. The font names can be changed to whatever font you want to disable the BCI for.)
These config files must be placed into the
/etc/fonts/conf.d/ directory for Freetype to recognize them.
There was a GNU/Linux event at Vienna, Austria from Thursday to Saturday. Our Fedora Ambassadors, in particular Zoltan Hoppar (whom I already knew from last year’s Linuxwochen in Vienna), had organized a Fedora booth at the event. I couldn’t resist paying the event a visit, or more than one really:
- For Fedora 14, only installation DVDs and GNOME ("Desktop") live CDs were mass-produced in Europe. I brought some hand-burned KDE live CDs. Those were a success: I brought a total of 29 KDE live CDs (15 x86_64, 14 i686), at least 26 were given out. (We had only 3 of them left when I left on Saturday afternoon.) Still, I hope that we will have mass-produced KDE media next year. (We also didn’t have any last year. I had brought 6 hand-burned ones. This year, I went up to 29, but I can’t manually burn much more than that.)
- I got to chat a bit with Zoltan Hoppar, Laurin Novak (our new ambassador from Baden near Vienna) and Volker Fröhlich, and say hello to Jaroslav Řezník who paid us a visit of Friday (but unfortunately we didn’t get to talk much because he was busy talking to Zoltan and me listening to talks, and then I had to leave for a university lecture).
- I helped out a bit at the booth, talking to a few visitors. In particular, I kept the booth manned on Saturday noon when Zoltan and Laurin held their talk at 12:00 and then went to lunch around 13:15.
- I listened to a series of 3 talks related to Qt development on Friday morning. The talks focused on new Qt technologies I wasn’t yet familiar with: the first one on Qt Quick / QML, the second one on Qt Mobility and the third one on combining PySide with QML. So those talks were very interesting to listen to.
Zoltan might write up a more detailed report.
I have been notified today that my proposal was accepted! I’m looking forward to working on KDE Plasma Dependency Generation and PackageKit Integration during the summer. As posted in a previous blog post, my full proposal (minus telephone number) can be found in the Fedora Wiki.
So the submission deadline has now passed. I proofread my proposal again today and decided it was fine as is.
Now I have to wait a little more than 2 weeks for the notification of the results (hopefully acceptance).