Skip to content

About

Automatically switches Windows between light and dark themes by schedule (fixed times or sunrise/sunset)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

Win Theme Switcher

Утилита для 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

Окно настроек закрывается в трей (крестик — это «свернуть», а не выход). Управление — через значок в трее: статус, переключение сейчас, включение расписания, настройки, выход.

Автономный exe

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 с той же задачей.

About

Automatically switches Windows between light and dark themes by schedule (fixed times or sunrise/sunset)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages