Skip to content

Commit edcc406

Browse files
authored
Fix GTK3 Dark theme. (#17)
* Create devcontainer.json * Update devcontainer.json * Change icon theme in setDarkMode * Added dbus interface darkIconTheme and setDarkIconTheme. * Clean up * Fix DarkIconTheme
1 parent cb76bf0 commit edcc406

File tree

3 files changed

+30
-3
lines changed

3 files changed

+30
-3
lines changed

settings-daemon/theme/com.lingmo.Theme.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@
6363
</method>
6464
<method name="setIconTheme">
6565
<arg name="type" type="s" direction="in"/>
66+
</method>
67+
<method name="setDarkIconTheme">
68+
<arg name="type" type="s" direction="in"/>
6669
</method>
6770

6871
<method name="applyXResources"></method>
@@ -88,7 +91,8 @@
8891
<property name="backgroundColor" type="s" access="read"/>
8992
<property name="cursorTheme" type="s" access="read"/>
9093
<property name="cursorSize" type="i" access="read"/>
91-
<property name="iconTheme" type="s" access="read"/>
94+
<property name="iconTheme" type="s" access="read"/>
95+
<property name="darkIconTheme" type="s" access="read"/>
9296

9397
<signal name="darkModeChanged">
9498
<arg type="b"/>

settings-daemon/theme/thememanager.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ ThemeManager::ThemeManager(QObject *parent)
8585
m_cursorTheme = m_settings->value("CursorTheme", "default").toString();
8686
m_cursorSize = m_settings->value("CursorSize", 24).toInt();
8787
m_iconTheme = m_settings->value("IconTheme", "Crule").toString();
88+
m_darkIconTheme = m_settings->value("DarkIconTheme", "Crule-dark").toString();
8889

8990
// Start the DE and need to update the settings again.
9091
updateGtk3Config();
@@ -456,7 +457,7 @@ void ThemeManager::updateGtk3Config()
456457
// dark mode
457458
settings.setValue("gtk-application-prefer-dark-theme", isDarkMode());
458459
// icon theme
459-
settings.setValue("gtk-icon-theme-name", isDarkMode() ? "Crule-dark" : "Crule");
460+
settings.setValue("gtk-icon-theme-name", isDarkMode() ? m_darkIconTheme : m_iconTheme);
460461
// other
461462
settings.setValue("gtk-enable-animations", true);
462463
// theme
@@ -617,3 +618,19 @@ void ThemeManager::setIconTheme(const QString &iconTheme)
617618
updateGtk3Config();
618619
emit iconThemeChanged();
619620
}
621+
622+
QString ThemeManager::darkIconTheme() const
623+
{
624+
return m_darkIconTheme;
625+
}
626+
627+
void ThemeManager::setDarkIconTheme(const QString &iconTheme)
628+
{
629+
if (m_darkIconTheme == iconTheme)
630+
return;
631+
632+
m_darkIconTheme = iconTheme;
633+
m_settings->setValue("DarkIconTheme", m_iconTheme);
634+
updateGtk3Config();
635+
emit iconThemeChanged();
636+
}

settings-daemon/theme/thememanager.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class ThemeManager : public QObject
4747
Q_PROPERTY(QString cursorTheme READ cursorTheme WRITE setCursorTheme NOTIFY cursorThemeChanged)
4848
Q_PROPERTY(int cursorSize READ cursorSize WRITE setCursorSize NOTIFY cursorSizeChanged)
4949
Q_PROPERTY(QString iconTheme READ iconTheme WRITE setIconTheme NOTIFY iconThemeChanged)
50+
Q_PROPERTY(QString darkIconTheme READ darkIconTheme WRITE setDarkIconTheme NOTIFY iconThemeChanged)
5051

5152
public:
5253
static ThemeManager *self();
@@ -114,6 +115,9 @@ class ThemeManager : public QObject
114115
QString iconTheme() const;
115116
void setIconTheme(const QString &iconTheme);
116117

118+
QString darkIconTheme() const;
119+
void setDarkIconTheme(const QString &iconTheme);
120+
117121
void updateFontConfig();
118122

119123
signals:
@@ -152,7 +156,9 @@ class ThemeManager : public QObject
152156
QString m_cursorTheme;
153157
int m_cursorSize;
154158

155-
QString m_iconTheme;
159+
QString m_iconTheme = "Crule";
160+
161+
QString m_darkIconTheme = "Crule-dark";
156162
};
157163

158164
#endif

0 commit comments

Comments
 (0)