From 966b455c0e1c2ee89d50e2c1e317e3ae7a8d5218 Mon Sep 17 00:00:00 2001 From: dev Date: Mon, 23 Feb 2026 14:39:20 +0000 Subject: [PATCH] feat(main): implement def apply_dark_theme_if_requested --- scanslicer/main.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/scanslicer/main.py b/scanslicer/main.py index 391a082..db0408c 100644 --- a/scanslicer/main.py +++ b/scanslicer/main.py @@ -92,3 +92,40 @@ def _read_portal_dark_preference(): if color_scheme == 2: return False return None + + +# apply_dark_theme_if_requested: function definition for ScanSlicer behavior. +def apply_dark_theme_if_requested(app): + theme_value = os.environ.get("GTK_THEME", "").lower() + dark_theme_requested = "dark" in theme_value + if not dark_theme_requested: + portal_pref = _read_portal_dark_preference() + if portal_pref is not None: + dark_theme_requested = portal_pref + + if not dark_theme_requested: + try: + dark_theme_requested = app.styleHints().colorScheme() == Qt.ColorScheme.Dark + except Exception: + dark_theme_requested = False + + if not dark_theme_requested: + return + + # Some container/desktop combinations do not propagate GTK dark theme + # correctly to Qt widgets; enforce a dark palette when dark mode is requested. + app.setStyle("Fusion") + palette = QPalette() + palette.setColor(QPalette.Window, QColor(53, 53, 53)) + palette.setColor(QPalette.WindowText, QColor(255, 255, 255)) + palette.setColor(QPalette.Base, QColor(35, 35, 35)) + palette.setColor(QPalette.AlternateBase, QColor(53, 53, 53)) + palette.setColor(QPalette.ToolTipBase, QColor(35, 35, 35)) + palette.setColor(QPalette.ToolTipText, QColor(255, 255, 255)) + palette.setColor(QPalette.Text, QColor(255, 255, 255)) + palette.setColor(QPalette.Button, QColor(53, 53, 53)) + palette.setColor(QPalette.ButtonText, QColor(255, 255, 255)) + palette.setColor(QPalette.BrightText, QColor(255, 0, 0)) + palette.setColor(QPalette.Highlight, QColor(42, 130, 218)) + palette.setColor(QPalette.HighlightedText, QColor(255, 255, 255)) + app.setPalette(palette)