{
if (!qEnvironmentVariableIsEmpty("KDE_FULL_SESSION"))
return QByteArray("KDE");
+ // Check Unity first, whose older versions also have "GNOME_DESKTOP_SESSION_ID" set.
+ const QByteArray xdgCurrentDesktop = qgetenv("XDG_CURRENT_DESKTOP");
+ if (xdgCurrentDesktop == "Unity")
+ return QByteArrayLiteral("UNITY");
// GNOME_DESKTOP_SESSION_ID is deprecated for some reason, but still check it
if (qgetenv("DESKTOP_SESSION") == "gnome" || !qEnvironmentVariableIsEmpty("GNOME_DESKTOP_SESSION_ID"))
return QByteArray("GNOME");
{
QStringList result;
if (QGuiApplication::desktopSettingsAware()) {
- if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("KDE")) {
+ const QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment();
+ if (desktopEnvironment == QByteArrayLiteral("KDE")) {
#ifndef QT_NO_SETTINGS
result.push_back(QLatin1String(QKdeTheme::name));
#endif
- } else if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("GNOME")) {
+ } else { // Gnome, Unity, other Gtk-based desktops like XFCE.
result.push_back(QLatin1String(QGnomeTheme::name));
}
const QString session = QString::fromLocal8Bit(qgetenv("DESKTOP_SESSION"));
Q_D(const QFileIconProvider);
#if defined(Q_OS_UNIX) && !defined(QT_NO_STYLE_GTK)
- if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("GNOME")) {
+ const QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment();
+ if (desktopEnvironment != QByteArrayLiteral("KDE")) {
QIcon gtkIcon = QGtkStylePrivate::getFilesystemIcon(info);
if (!gtkIcon.isNull())
return gtkIcon;