diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp
index 49cb2c1f..30e6ea96 100644
--- a/src/UserSettingsPage.cpp
+++ b/src/UserSettingsPage.cpp
@@ -22,9 +22,11 @@
#include <QLabel>
#include <QLineEdit>
#include <QMessageBox>
+#include <QProcessEnvironment>
#include <QPushButton>
#include <QScrollArea>
#include <QSettings>
+#include <QString>
#include <QTextStream>
#include "Config.h"
@@ -49,7 +51,7 @@ UserSettings::load()
isGroupViewEnabled_ = settings.value("user/group_view", true).toBool();
isTypingNotificationsEnabled_ = settings.value("user/typing_notifications", true).toBool();
isReadReceiptsEnabled_ = settings.value("user/read_receipts", true).toBool();
- theme_ = settings.value("user/theme", "light").toString();
+ theme_ = settings.value("user/theme", defaultTheme_).toString();
font_ = settings.value("user/font_family", "default").toString();
emojiFont_ = settings.value("user/emoji_font_family", "default").toString();
baseFontSize_ = settings.value("user/font_size", QFont().pointSizeF()).toDouble();
diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h
index ffff1e20..dce12315 100644
--- a/src/UserSettingsPage.h
+++ b/src/UserSettingsPage.h
@@ -85,7 +85,7 @@ public:
save();
}
- QString theme() const { return !theme_.isEmpty() ? theme_ : "light"; }
+ QString theme() const { return !theme_.isEmpty() ? theme_ : defaultTheme_; }
bool isTrayEnabled() const { return isTrayEnabled_; }
bool isStartInTrayEnabled() const { return isStartInTrayEnabled_; }
bool isGroupViewEnabled() const { return isGroupViewEnabled_; }
@@ -100,6 +100,11 @@ signals:
void groupViewStateChanged(bool state);
private:
+ // Default to system theme if QT_QPA_PLATFORMTHEME var is set.
+ QString defaultTheme_ =
+ QProcessEnvironment::systemEnvironment().value("QT_QPA_PLATFORMTHEME", "").isEmpty()
+ ? "light"
+ : "system";
QString theme_;
bool isTrayEnabled_;
bool isStartInTrayEnabled_;
diff --git a/src/Utils.cpp b/src/Utils.cpp
index a3c15c96..5c664b7c 100644
--- a/src/Utils.cpp
+++ b/src/Utils.cpp
@@ -4,6 +4,7 @@
#include <QComboBox>
#include <QDesktopWidget>
#include <QGuiApplication>
+#include <QProcessEnvironment>
#include <QScreen>
#include <QSettings>
#include <QTextDocument>
@@ -387,14 +388,20 @@ QString
utils::linkColor()
{
QSettings settings;
- const auto theme = settings.value("user/theme", "light").toString();
+ // Default to system theme if QT_QPA_PLATFORMTHEME var is set.
+ QString defaultTheme =
+ QProcessEnvironment::systemEnvironment().value("QT_QPA_PLATFORMTHEME", "").isEmpty()
+ ? "light"
+ : "system";
+ const auto theme = settings.value("user/theme", defaultTheme).toString();
- if (theme == "light")
+ if (theme == "light") {
return "#0077b5";
- else if (theme == "dark")
+ } else if (theme == "dark") {
return "#38A3D8";
-
- return QPalette().color(QPalette::Link).name();
+ } else {
+ return QPalette().color(QPalette::Link).name();
+ }
}
uint32_t
|