[Portland-bugs] [Bug 43943] New: Freedesktop needs to define a way to get/set the default icon theme

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sun Dec 18 11:01:20 PST 2011


https://bugs.freedesktop.org/show_bug.cgi?id=43943

             Bug #: 43943
           Summary: Freedesktop needs to define a way to get/set the
                    default icon theme
    Classification: Unclassified
           Product: Portland
           Version: unspecified
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: major
          Priority: medium
         Component: Portland
        AssignedTo: portland-bugs at lists.freedesktop.org
        ReportedBy: adys.wh at gmail.com


Currently there is no way to get the default icon theme from system files. This
is an issue when using a DE that is not based on gnome or kde.

This leads to the following code in Qt, which breaks outside of gnome/kde and
results in an unmodifiable icon theme:

/* the default icon theme name for QIcon::fromTheme. */
QString QGuiPlatformPlugin::systemIconThemeName()
{
    QString result;
#ifdef Q_WS_X11
    if (X11->desktopEnvironment == DE_GNOME) {
        result = QString::fromLatin1("gnome");
#ifndef QT_NO_STYLE_GTK
        result =
QGtkStylePrivate::getGConfString(QLatin1String("/desktop/gnome/interface/icon_theme"),
result);
#endif
    } else if (X11->desktopEnvironment == DE_KDE) {
        result =  X11->desktopVersion >= 4 ? QString::fromLatin1("oxygen") :
QString::fromLatin1("crystalsvg");
        QSettings settings(QKde::kdeHome() +
QLatin1String("/share/config/kdeglobals"), QSettings::IniFormat);
        settings.beginGroup(QLatin1String("Icons"));
        result = settings.value(QLatin1String("Theme"), result).toString();
    }
#endif
    return result;
}

An implementation (don't remember which one) creates a theme called "default"
and an index.theme symlinked to the chosen default theme.
Issue with adopting that is the lack of control over multiple defaults.

What I propose:
A defaults.list file which specifies the preferred themes. Example file:

[Theme]
Name=oxygen

[Theme]
Name=gnome
OnlyShowIn=Gnome

[Theme]
Name=tango
DontShowIn=KDE

[Theme]
Name=mygenerictheme

[Theme]
Name=myfallbacktheme

Keys are listed in order of priority. If a theme cannot be found or does not
match the current configuration, the next one is chosen, until a theme is found
to exist. hicolor is always the last fallback.

The described file specifies that the default global theme is oxygen.
If oxygen cannot be found, in gnome only, we check if the "gnome" icon theme
exists and use it if it does.
If we still don't have a theme, if we are not in KDE we try the tango theme.
If we still don't have a theme, we try "mygenerictheme".
If we still don't have a theme, we try "myfallbacktheme".

Finally, if none of those themes work, we default to hicolor.



unrelated: in the "Directory layout" section, there should be a mention of
whether svgz files are allowed or not.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the Portland-bugs mailing list