"hicolor" algorithm clarification in Icon Theme Spec

Octavio Alvarez Piza alvarezp at alvarezp.ods.org
Sun Dec 24 10:28:36 EET 2006

Hi, everybody. I'm new to the list. My name is Octavio Alvarez and I'm developing a small app named Superkb, intended to make something fancy for Xorg.

I'm converting the lookup algorithm in the Icon Theme Specification to C code. I have noticed that the "hicolor" fallback theme will be looked up before a second parent, thus, having the wrong lookup priority.

One of the paragraphs that says so is:

"In order to have a place for third party applications to install their icons there should always exist a theme called 'hicolor' [1]. The data for the hicolor theme is available for download at: http://www.freedesktop.org/software/icon-theme/. Implementations are required to look in the "hicolor" theme if an icon was not found in the current theme."

This makes a second parent theme to get ignored if an icon exists in "hicolor". Themes that use "hicolor" as a parent should explicitly say so in their Inherits key.

Here is a patch for the lookup pseudocode.

 FindIcon(icon, size) {
   filename = FindIconHelper(icon, size, user selected theme);
   if filename != none
     return filename
+   filename = FindIconHelper(icon, size, "hicolor");
+   if filename != none
+     return filename
   return LookupFallbackIcon (icon)
 FindIconHelper(icon, size, theme) {
   filename = LookupIcon (icon, size, theme)
   if filename != none
     return filename

   if theme has parents
     parents = theme.parents
-  else if theme != hicolor
-    parents = [hicolor]

   for parent in parents {
     filename = FindIconHelper (icon, size, parent)
     if filename != none
       return filename
   return none

It is my understanding that implementations must not look in "hicolor" when looking into a parent theme. Instead, it should be checked right before unthemed icons.


More information about the xdg mailing list