diff --git a/res.qrc b/res.qrc
index 2b2d9b13a..0bb8152b4 100644
--- a/res.qrc
+++ b/res.qrc
@@ -94,5 +94,7 @@
res/logo/spotify-qt-symbolic-dark.svg
res/logo/spotify-qt-symbolic-light.svg
res/logo/spotify-qt.svg
+
+ res/style/dark.qss
\ No newline at end of file
diff --git a/res/style/dark.qss b/res/style/dark.qss
new file mode 100644
index 000000000..74d7d9bc1
--- /dev/null
+++ b/res/style/dark.qss
@@ -0,0 +1,37 @@
+QWidget {
+ selection-background-color: #282828;
+ color: #f5f5f5; }
+
+QScrollBar::handle {
+ background-color: #4d4d4d; }
+
+QScrollBar::add-line, QScrollBar::sub-line {
+ width: 0px;
+ height: 0px; }
+
+MainWindow {
+ background-color: #000000; }
+ MainWindow MainToolBar {
+ background-color: #282828;
+ border: 0; }
+ MainWindow MainToolBar QSlider {
+ selection-background-color: #1db954; }
+ MainWindow MainToolBar QSlider::handle {
+ background-color: #ffffff;
+ width: 12px;
+ height: 12px;
+ border-radius: 6px; }
+
+LeftSidePanel LibraryList, LeftSidePanel PlaylistList {
+ color: #b3b3b3;
+ background-color: #000000; }
+ LeftSidePanel LibraryList QScrollBar, LeftSidePanel PlaylistList QScrollBar {
+ background-color: #000000; }
+
+TracksList {
+ background-color: #121212; }
+ TracksList QHeaderView {
+ background-color: #181818;
+ color: #b3b3b3; }
+ TracksList QScrollBar {
+ background-color: #121212; }
diff --git a/res/style/dark.scss b/res/style/dark.scss
new file mode 100644
index 000000000..646a46edb
--- /dev/null
+++ b/res/style/dark.scss
@@ -0,0 +1,88 @@
+// Main background color
+$background-color: #121212;
+// Secondary background color for borders etc.
+$secondary-background-color: #282828;
+// Header background color for list titles etc.
+$header-background-color: #181818;
+
+// Background for handle in scrollbars
+$scrollbar-handle-color: #4d4d4d;
+
+// Sidebar background color
+$sidebar-background-color: #000000;
+// Sidebar font color
+$sidebar-foreground-color: #b3b3b3;
+
+// Main font color
+$foreground-color: #f5f5f5;
+// Color of selected items etc.
+$highlight-color: #282828;
+// Main Spotify green color
+$theme-color: #1db954;
+
+// Slider background (inactive)
+$slider-background-color: #535353;
+// Slider foreground (active)
+$slider-foreground-color: $sidebar-foreground-color;
+// Slider handle
+$slider-handle-color: #ffffff;
+
+QWidget {
+ selection-background-color: $highlight-color;
+ color: $foreground-color;
+}
+
+QScrollBar {
+ &::handle {
+ background-color: $scrollbar-handle-color;
+ }
+
+ &::add-line, &::sub-line {
+ width: 0px;
+ height: 0px;
+ }
+}
+
+MainWindow {
+ background-color: $sidebar-background-color;
+
+ MainToolBar {
+ background-color: $secondary-background-color;
+ border: 0;
+
+ QSlider {
+ selection-background-color: $theme-color;
+
+ &::handle {
+ background-color: $slider-handle-color;
+ width: 12px;
+ height: 12px;
+ border-radius: 6px;
+ }
+ }
+ }
+}
+
+LeftSidePanel {
+ LibraryList, PlaylistList {
+ color: $sidebar-foreground-color;
+ background-color: $sidebar-background-color;
+
+ QScrollBar {
+ background-color: $sidebar-background-color;
+ }
+ }
+}
+
+TracksList {
+ background-color: $background-color;
+
+ QHeaderView {
+ background-color: $header-background-color;
+ color: $sidebar-foreground-color;
+ }
+
+ QScrollBar {
+ background-color: $background-color;
+ }
+}
\ No newline at end of file
diff --git a/src/main.hpp b/src/main.hpp
index 0123860ea..45460490a 100644
--- a/src/main.hpp
+++ b/src/main.hpp
@@ -23,7 +23,6 @@
#include "spotify/spotify.hpp"
#include "spotify/user.hpp"
#include "trayicon.hpp"
-#include "util/darkpalette.hpp"
#include "util/dateutils.hpp"
#include "util/icon.hpp"
#include "util/utils.hpp"
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 340f8932c..2ae5a0720 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -22,6 +22,15 @@ MainWindow::MainWindow(Settings &settings)
QApplication::setStyle(settings.general.style);
Utils::applyPalette(settings.general.stylePalette);
+ // Custom dark theme
+ if (settings.general.stylePalette == PaletteDark)
+ {
+ QFile styleFile(":/res/style/dark.qss");
+ styleFile.open(QFile::ReadOnly | QFile::Text);
+ setStyleSheet(QString::fromUtf8(styleFile.readAll()));
+ styleFile.close();
+ }
+
// Check for dark background
auto bg = palette().color(backgroundRole());
if (((bg.red() + bg.green() + bg.blue()) / 3) < 128)
diff --git a/src/util/darkpalette.cpp b/src/util/darkpalette.cpp
deleted file mode 100644
index 195f42622..000000000
--- a/src/util/darkpalette.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "darkpalette.hpp"
-
-DarkPalette::DarkPalette()
-{
- // Pre-defined colors, maybe allow user to select
- QColor background(0x212121);
- QColor base(0x212121);
- QColor highlight(0x388e3c);
- QColor text(0xf5f5f5);
- QColor brightText(0xb00020);
-
- // Set colors
- setColor(QPalette::Window, background);
- setColor(QPalette::WindowText, text);
- setColor(QPalette::Base, base);
- setColor(QPalette::AlternateBase, background);
- setColor(QPalette::ToolTipBase, base);
- setColor(QPalette::ToolTipText, text);
- setColor(QPalette::Text, text);
- setColor(QPalette::Button, background);
- setColor(QPalette::ButtonText, text);
- setColor(QPalette::BrightText, brightText);
- setColor(QPalette::Highlight, highlight);
- setColor(QPalette::HighlightedText, base);
-}
\ No newline at end of file
diff --git a/src/util/darkpalette.hpp b/src/util/darkpalette.hpp
deleted file mode 100644
index a8f6ec5d9..000000000
--- a/src/util/darkpalette.hpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#pragma once
-
-#include
-
-class DarkPalette: public QPalette
-{
-public:
- DarkPalette();
-};
\ No newline at end of file
diff --git a/src/util/utils.cpp b/src/util/utils.cpp
index e9502c12a..25890f59d 100644
--- a/src/util/utils.cpp
+++ b/src/util/utils.cpp
@@ -31,8 +31,8 @@ void Utils::applyPalette(Palette palette)
break;
case PaletteDark:
- p = DarkPalette();
- break;
+ // Dark palette currently gets applied manually from qss
+ return;
}
QApplication::setPalette(p);
diff --git a/src/util/utils.hpp b/src/util/utils.hpp
index f0e587e87..b29a7ef77 100644
--- a/src/util/utils.hpp
+++ b/src/util/utils.hpp
@@ -3,7 +3,6 @@
#include "../enum/linktype.hpp"
#include "../enum/maskshape.hpp"
#include "../enum/palette.hpp"
-#include "darkpalette.hpp"
#include
#include