diff --git a/share/icons/application/scalable/apps/keepassxc-monochrome-kde-plasma-locked.svg b/share/icons/application/scalable/apps/keepassxc-monochrome-kde-plasma-locked.svg
new file mode 100644
index 000000000..03660c890
--- /dev/null
+++ b/share/icons/application/scalable/apps/keepassxc-monochrome-kde-plasma-locked.svg
@@ -0,0 +1,7 @@
+
diff --git a/share/icons/application/scalable/apps/keepassxc-monochrome-kde-plasma.svg b/share/icons/application/scalable/apps/keepassxc-monochrome-kde-plasma.svg
new file mode 100644
index 000000000..8f10aa398
--- /dev/null
+++ b/share/icons/application/scalable/apps/keepassxc-monochrome-kde-plasma.svg
@@ -0,0 +1,7 @@
+
diff --git a/share/icons/icons.qrc b/share/icons/icons.qrc
index 3e82e172d..fe08a0f5b 100644
--- a/share/icons/icons.qrc
+++ b/share/icons/icons.qrc
@@ -107,6 +107,8 @@
application/scalable/apps/keepassxc-monochrome-dark-locked.svg
application/scalable/apps/keepassxc-monochrome-light.svg
application/scalable/apps/keepassxc-monochrome-light-locked.svg
+ application/scalable/apps/keepassxc-monochrome-kde-plasma.svg
+ application/scalable/apps/keepassxc-monochrome-kde-plasma-locked.svg
application/scalable/apps/keepassxc-locked.svg
application/scalable/apps/keepassxc-unlocked.svg
application/scalable/apps/preferences-desktop-icons.svg
diff --git a/src/gui/ApplicationSettingsWidget.cpp b/src/gui/ApplicationSettingsWidget.cpp
index 9f24bbc85..30dd5e1ea 100644
--- a/src/gui/ApplicationSettingsWidget.cpp
+++ b/src/gui/ApplicationSettingsWidget.cpp
@@ -313,6 +313,12 @@ void ApplicationSettingsWidget::loadSettings()
#else
m_generalUi->trayIconAppearance->addItem(tr("Monochrome (light)"), "monochrome-light");
m_generalUi->trayIconAppearance->addItem(tr("Monochrome (dark)"), "monochrome-dark");
+#ifdef Q_OS_LINUX
+ if (qEnvironmentVariable("XDG_CURRENT_DESKTOP").split(';').contains("KDE") || qEnvironmentVariable("XDG_SESSION_DESKTOP") == "KDE") {
+ // Most likely inside a KDE/Plasma session, so add option to use theme-aware icon
+ m_generalUi->trayIconAppearance->addItem(tr("Monochrome (theme-aware)"), "monochrome-kde-plasma");
+ }
+#endif
#endif
m_generalUi->trayIconAppearance->addItem(tr("Colorful"), "colorful");
int trayIconIndex = m_generalUi->trayIconAppearance->findData(icons()->trayIconAppearance());
diff --git a/src/gui/Icons.cpp b/src/gui/Icons.cpp
index bae6ba4cd..0fbf6232f 100644
--- a/src/gui/Icons.cpp
+++ b/src/gui/Icons.cpp
@@ -69,11 +69,38 @@ QIcon Icons::applicationIcon()
QString Icons::trayIconAppearance() const
{
auto iconAppearance = config()->get(Config::GUI_TrayIconAppearance).toString();
+
+ // If loaded an icon appearance that was set to 'monochrome-kde-plasma',
+ // but the current session is not KDE/Plasma, clear the icon appearance setting
+ // and let the auto detecting a few lines later determine a new appearance
+#ifndef Q_OS_LINUX
+ // Any operating system but Linux
+ if (iconAppearance == "monochrome-kde-plasma") {
+ iconAppearance.clear();
+ }
+#else
+ if (!qEnvironmentVariable("XDG_CURRENT_DESKTOP").split(';').contains("KDE") && qEnvironmentVariable("XDG_SESSION_DESKTOP") != "KDE"
+ && iconAppearance == "monochrome-kde-plasma"
+ ) {
+ // If running Linux but no KDE/Plasma session
+ iconAppearance.clear();
+ }
+#endif
+
if (iconAppearance.isNull()) {
#ifdef Q_OS_MACOS
iconAppearance = osUtils->isDarkMode() ? "monochrome-light" : "monochrome-dark";
+#else
+#ifdef Q_OS_LINUX
+ if (qEnvironmentVariable("XDG_CURRENT_DESKTOP").split(';').contains("KDE") || qEnvironmentVariable("XDG_SESSION_DESKTOP") == "KDE") {
+ // Educated guess that KeePassXC runs in a KDE/Plasma session, use the theme-aware icon
+ iconAppearance = "monochrome-kde-plasma";
+ } else {
+ iconAppearance = "monochrome-light";
+ }
#else
iconAppearance = "monochrome-light";
+#endif
#endif
}
return iconAppearance;