From db1308e3f5268a0abb9615642e2fa9e90fd969f1 Mon Sep 17 00:00:00 2001 From: Qirashi <90517227+qirashi@users.noreply.github.com> Date: Tue, 7 Apr 2026 18:06:21 +0400 Subject: [PATCH] Tray dark theme (#591) --- utils/win32_theme.py | 35 +++++++++++++++++++++++++++++++++++ windows.py | 8 ++++++++ 2 files changed, 43 insertions(+) create mode 100644 utils/win32_theme.py diff --git a/utils/win32_theme.py b/utils/win32_theme.py new file mode 100644 index 0000000..79142d7 --- /dev/null +++ b/utils/win32_theme.py @@ -0,0 +1,35 @@ +from __future__ import annotations + +import sys + +def is_windows_dark_theme() -> bool: + if sys.platform != "win32": + return False + + try: + import winreg + key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize") + value, _ = winreg.QueryValueEx(key, "AppsUseLightTheme") + return value == 0 + except Exception: + return False + +def apply_windows_dark_theme() -> None: + try: + import ctypes + uxtheme = ctypes.windll.uxtheme + + try: + set_preferred = uxtheme[135] + result = set_preferred(2) + if result == 0: + flush = uxtheme[136] + flush() + except Exception: + try: + allow_dark = uxtheme[135] + allow_dark(True) + except Exception: + pass + except Exception: + pass \ No newline at end of file diff --git a/windows.py b/windows.py index 878027a..d810b69 100644 --- a/windows.py +++ b/windows.py @@ -32,6 +32,10 @@ except ImportError: import proxy.tg_ws_proxy as tg_ws_proxy +from utils.win32_theme import ( + is_windows_dark_theme, + apply_windows_dark_theme, +) from utils.tray_common import ( APP_NAME, DEFAULT_CONFIG, FIRST_RUN_MARKER, IS_FROZEN, LOG_FILE, acquire_lock, bootstrap, check_ipv6_warning, ctk_run_dialog, @@ -316,6 +320,10 @@ def run_tray() -> None: global _tray_icon, _config _config = load_config() + + if is_windows_dark_theme: + apply_windows_dark_theme() + bootstrap(_config) if pystray is None or Image is None or ctk is None: