From 537fcd9021c019963691e4303514c6e58a63ed27 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 8 Dec 2019 08:50:42 +0530 Subject: [PATCH] Allow using an env var on linux for dark mode --- src/calibre/gui2/__init__.py | 33 ++++++++++----------------------- src/calibre/gui2/palette.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 23 deletions(-) create mode 100644 src/calibre/gui2/palette.py diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index f788833486..3f7f9c11d7 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -1009,27 +1009,8 @@ class Application(QApplication): load_builtin_fonts() def set_dark_mode_palette(self): - p = self.palette() - dark_color = QColor(45,45,45) - disabled_color = QColor(127,127,127) - p.setColor(p.Window, dark_color) - p.setColor(p.WindowText, Qt.white) - p.setColor(p.Base, QColor(18,18,18)) - p.setColor(p.AlternateBase, dark_color) - p.setColor(p.ToolTipBase, Qt.white) - p.setColor(p.ToolTipText, Qt.white) - p.setColor(p.Text, Qt.white) - p.setColor(p.Disabled, p.Text, disabled_color) - p.setColor(p.Button, dark_color) - p.setColor(p.ButtonText, Qt.white) - p.setColor(p.Disabled, p.ButtonText, disabled_color) - p.setColor(p.BrightText, Qt.red) - p.setColor(p.Link, QColor(42, 130, 218)) - - p.setColor(p.Highlight, QColor(42, 130, 218)) - p.setColor(p.HighlightedText, Qt.black) - p.setColor(p.Disabled, p.HighlightedText, disabled_color) - self.set_palette(p) + from calibre.gui2.palette import dark_palette + self.set_palette(dark_palette()) def setup_styles(self, force_calibre_style): if iswindows or isosx: @@ -1038,8 +1019,14 @@ class Application(QApplication): using_calibre_style = os.environ.get('CALIBRE_USE_SYSTEM_THEME', '0') == '0' if force_calibre_style: using_calibre_style = True - if iswindows and windows_is_system_dark_mode_enabled() and using_calibre_style: - self.set_dark_mode_palette() + if using_calibre_style: + use_dark_palette = False + if iswindows: + use_dark_palette = windows_is_system_dark_mode_enabled() + elif not isosx: + use_dark_palette = os.environ.get('CALIBRE_USE_DARK_PALETTE') == '1' + if use_dark_palette: + self.set_dark_mode_palette() self.using_calibre_style = using_calibre_style if DEBUG: diff --git a/src/calibre/gui2/palette.py b/src/calibre/gui2/palette.py new file mode 100644 index 0000000000..b708a7e833 --- /dev/null +++ b/src/calibre/gui2/palette.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python2 +# vim:fileencoding=utf-8 +# License: GPL v3 Copyright: 2019, Kovid Goyal + +from __future__ import absolute_import, division, print_function, unicode_literals + +from PyQt5.Qt import QColor, QPalette, Qt + + +def dark_palette(): + p = QPalette() + dark_color = QColor(45,45,45) + disabled_color = QColor(127,127,127) + p.setColor(p.Window, dark_color) + p.setColor(p.WindowText, Qt.white) + p.setColor(p.Base, QColor(18,18,18)) + p.setColor(p.AlternateBase, dark_color) + p.setColor(p.ToolTipBase, Qt.white) + p.setColor(p.ToolTipText, Qt.white) + p.setColor(p.Text, Qt.white) + p.setColor(p.Disabled, p.Text, disabled_color) + p.setColor(p.Button, dark_color) + p.setColor(p.ButtonText, Qt.white) + p.setColor(p.Disabled, p.ButtonText, disabled_color) + p.setColor(p.BrightText, Qt.red) + p.setColor(p.Link, QColor(42, 130, 218)) + + p.setColor(p.Highlight, QColor(42, 130, 218)) + p.setColor(p.HighlightedText, Qt.black) + p.setColor(p.Disabled, p.HighlightedText, disabled_color) + return p