Add Dark Mode support for Windows

This commit is contained in:
et0h 2021-11-09 18:13:58 +00:00
parent e2605577f5
commit 731de07804
2 changed files with 27 additions and 2 deletions

View File

@ -514,13 +514,15 @@ class ConfigurationGetter(object):
self._overrideConfigWithArgs(args) self._overrideConfigWithArgs(args)
if not self._config['noGui']: if not self._config['noGui']:
try: try:
from syncplay.vendor.Qt import QtWidgets, IsPySide, IsPySide2 from syncplay.vendor.Qt import QtWidgets, IsPySide, IsPySide2, QtGui
from syncplay.vendor.Qt.QtCore import QCoreApplication from syncplay.vendor.Qt.QtCore import QCoreApplication
from syncplay.vendor import qt5reactor from syncplay.vendor import qt5reactor
if not (IsPySide2 or IsPySide): if not (IsPySide2 or IsPySide):
raise ImportError raise ImportError
if QCoreApplication.instance() is None: if QCoreApplication.instance() is None:
self.app = QtWidgets.QApplication(sys.argv) self.app = QtWidgets.QApplication(sys.argv)
self.app.setStyle(QtWidgets.QStyleFactory.create("fusion"))
self.app.setPalette(self.getDarkPalette(QtGui))
qt5reactor.install() qt5reactor.install()
if isMacOS(): if isMacOS():
import appnope import appnope
@ -550,6 +552,29 @@ class ConfigurationGetter(object):
setLanguage(self._config['language']) setLanguage(self._config['language'])
return self._config return self._config
def getDarkPalette(self, QtGui):
# Based on https://gist.github.com/lschmierer/443b8e21ad93e2a2d7eb#gistcomment-3503395
darkPalette = QtGui.QPalette()
darkPalette.setColor(QtGui.QPalette.Window, QtGui.QColor(53, 53, 53))
darkPalette.setColor(QtGui.QPalette.WindowText, QtGui.QColor(255, 255, 255))
darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(35, 35, 35))
darkPalette.setColor(QtGui.QPalette.AlternateBase, QtGui.QColor(53, 53, 53))
darkPalette.setColor(QtGui.QPalette.ToolTipBase, QtGui.QColor(25, 25, 25))
darkPalette.setColor(QtGui.QPalette.ToolTipText, QtGui.QColor(255, 255, 255))
darkPalette.setColor(QtGui.QPalette.Text, QtGui.QColor(255, 255, 255))
darkPalette.setColor(QtGui.QPalette.Button, QtGui.QColor(53, 53, 53))
darkPalette.setColor(QtGui.QPalette.ButtonText, QtGui.QColor(255, 255, 255))
darkPalette.setColor(QtGui.QPalette.BrightText, QtGui.QColor(255, 0, 0))
darkPalette.setColor(QtGui.QPalette.Link, QtGui.QColor(42, 130, 218))
darkPalette.setColor(QtGui.QPalette.Highlight, QtGui.QColor(42, 130, 218))
darkPalette.setColor(QtGui.QPalette.HighlightedText, QtGui.QColor(35, 35, 35))
darkPalette.setColor(QtGui.QPalette.Active, QtGui.QPalette.Button, QtGui.QColor(53, 53, 53))
darkPalette.setColor(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, QtGui.QColor(128, 128, 128))
darkPalette.setColor(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, QtGui.QColor(128, 128, 128))
darkPalette.setColor(QtGui.QPalette.Disabled, QtGui.QPalette.Text, QtGui.QColor(128, 128, 128))
darkPalette.setColor(QtGui.QPalette.Disabled, QtGui.QPalette.Light, QtGui.QColor(53, 53, 53))
return darkPalette
def setConfigOption(self, option, value): def setConfigOption(self, option, value):
path = self._getConfigurationFilePath() path = self._getConfigurationFilePath()
backup = self._config.copy() backup = self._config.copy()

View File

@ -40,7 +40,7 @@ if isMacOS() and IsPySide:
from Cocoa import NSString, NSUTF8StringEncoding from Cocoa import NSString, NSUTF8StringEncoding
lastCheckedForUpdates = None lastCheckedForUpdates = None
from syncplay.vendor import darkdetect from syncplay.vendor import darkdetect
if isMacOS(): if isMacOS() or isWindows():
isDarkMode = darkdetect.isDark() isDarkMode = darkdetect.isDark()
else: else:
isDarkMode = None isDarkMode = None