Утилита для Windows 10/11, которая автоматически переключает светлую и тёмную тему системы по времени суток. Сделана по мотивам проверенных решений — Auto Dark Mode и PowerToys Light Switch: те же режимы расписания, раздельное управление темой приложений и оболочки, смещения относительно восхода/заката и глобальная горячая клавиша.
- Режимы расписания
- по фиксированному времени («светлая в 07:30, тёмная в 19:30»);
- по восходу и закату для ваших координат (± смещение в минутах), координаты вводятся вручную или определяются по IP;
- выключено — только ручное переключение.
- Что переключать: тема приложений и/или тема оболочки (панель задач, Пуск, проводник) — независимо.
- Ручное переключение: кнопки в окне, пункты меню трея или глобальная
горячая клавиша (по умолчанию
Ctrl+Alt+D). Ручной выбор действует до следующего планового переключения, затем расписание продолжается. - Возврат темы по расписанию: если тему поменяли вручную в настройках Windows, утилита вернёт плановую (отключается галкой).
- Автозапуск вместе с Windows, старт свёрнутым в трей, защита от повторного запуска.
- Светлая/тёмная тема самого окна — следует за текущей темой системы.
Окно настроек — нативное (PySide6/Qt), во стиле Windows 11: фреймлес-окно с кастомным тайтлбаром, карточки, переключатели, сегмент-контрол. Тема окна следует за темой системы. Потребление памяти — порядка 100–150 МБ в свёрнутом виде (это обычный python-процесс, не браузер).
Если антивирус (например, COMODO Auto-Sandbox) помещает утилиту в песочницу, её файловые операции могут виртуализироваться, а интерфейс — не запуститься. Добавьте
python.exe/WinThemeSwitcher.exeв доверенные.
Нужен Python 3.10+.
pip install -r requirements.txt
run.batОкно настроек закрывается в трей (крестик — это «свернуть», а не выход). Управление — через значок в трее: статус, переключение сейчас, включение расписания, настройки, выход.
build.batПолучите dist\WinThemeSwitcher.exe — одиночный файл без зависимостей.
Тема хранится в реестре:
HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize
(AppsUseLightTheme, SystemUsesLightTheme; 1 — светлая, 0 — тёмная).
Утилита раз в 30 секунд сверяет время с расписанием и при необходимости
меняет эти значения, после чего рассылает WM_SETTINGCHANGE ("ImmersiveColorSet"), чтобы приложения подхватили новую схему.
Изменения применяются мгновенно, без перезагрузки и перезапуска приложений.
Настройки лежат в %APPDATA%\WinThemeSwitcher\settings.json.
main.py — точка входа
wtswitch/
config.py — настройки (JSON в %APPDATA%)
theme.py — чтение/переключение темы через реестр
schedule.py — какая тема нужна сейчас и когда следующее переключение
solar.py — расчёт восхода/заката (алгоритм NOAA)
geoloc.py — определение координат по IP
app.py — ядро: Qt-цикл, фоновый поток, состояние, трей+GUI
gui.py — окно настроек (PySide6, стиль WinUI 3)
tray.py — значок в трее (pystray)
hotkey.py — глобальная горячая клавиша
icons.py — генерация иконок (Pillow)
tools/make_icon.py — сборка assets/icon.ico
- Auto Dark Mode — самый популярный опенсорс-переключатель тем для Windows (C#).
- PowerToys Light Switch — штатная утилита Microsoft с той же задачей.