Windows-Auto-Night-Mode编程开发:减少眼部疲劳的主题配置
你是否还在为白天面对刺眼的亮色屏幕、夜晚又被深色界面困扰而烦恼?Windows-Auto-Night-Mode(自动暗色模式)通过智能切换系统主题,让你的显示器随环境光线自动调整,从根源上缓解眼部疲劳。本文将从开发角度详解如何配置这一强大功能,读完你将掌握:时间触发机制实现、多组件联动配置、个性化主题定制全流程。
核心功能架构解析
Windows-Auto-Night-Mode采用模块化设计,通过AutoDarkModeSvc/服务进程实现核心逻辑,AutoDarkModeApp/提供用户界面。核心功能包括:
- 智能时间切换:基于日出日落或自定义时间触发主题转换
- 多组件联动:同步切换壁纸、光标、系统颜色等视觉元素
- 个性化配置:支持多显示器独立设置、偏移量调整、脚本扩展
关键实现文件:
- 主题切换逻辑:AutoDarkModeSvc/Core/ThemeManager.cs
- 时间配置页面:AutoDarkModeApp/Pages/PageTime.xaml.cs
- 设置数据模型:AutoDarkModeLib/Configs/AdmConfig.cs
时间触发机制实现
日出日落自动切换
系统通过LocationHandler.cs获取地理位置,结合Sunriset.cs计算日出日落时间:
// 核心计算逻辑示例 LocationHandler.GetSunTimesWithOffset(builder, out DateTime SunriseWithOffset, out DateTime SunsetWithOffset);配置路径:Settings > Time > Location-based,支持三种定位模式:
- Windows位置服务(默认)
- 手动输入经纬度
- 完全自定义时间
时间偏移量调整
用户可通过NumberBoxOffsetLight和NumberboxOffsetDark控件设置偏移量,实现提前或延后切换:
// 偏移量应用代码 builder.Config.Location.SunriseOffsetMin = offsetLight; builder.Config.Location.SunsetOffsetMin = offsetDark;多组件主题配置
壁纸自动切换
PageWallpaperPicker.xaml.cs实现了多场景壁纸管理,支持四种模式:
- 全局壁纸:所有显示器使用相同图片
- 独立配置:每台显示器单独设置壁纸
- 纯色背景:自定义十六进制颜色值
- Windows聚焦:集成系统聚焦功能(Win11 22H2+)
关键API:WallpaperHandler.SetWallpaper(),支持跨进程通信更新壁纸。
光标主题同步
光标切换通过CursorCollectionHandler.cs实现,读取系统光标方案并应用:
// 光标预览生成代码 Icon i = Icon.ExtractAssociatedIcon(cursorPath); Bitmap b = i.ToBitmap(); Image.Source = ToBitmapImage(b);配置界面:PageCursors.xaml,支持明暗主题分别设置不同光标方案。
高级个性化配置
多显示器独立设置
针对多屏用户,MonitorSettings类支持每台显示器独立配置:
<!-- 多显示器配置XAML --> <ComboBox x:Name="ComboBoxMonitorSelection" SelectionChanged="ComboBoxMonitorSelection_SelectionChanged"/>通过DetectMonitors方法自动识别显示器布局,保存配置至WallpaperSwitch.Component.Monitors集合。
颜色与视觉效果
系统颜色配置通过ColorizationSwitchSettings实现,支持:
- 强调色自动切换
- 任务栏透明度调整
- 窗口边框颜色同步
开发与扩展指南
配置文件结构
主配置文件AdmConfig.json采用分层结构,核心节点:
{ "Sunrise": "06:30:00", "Sunset": "18:30:00", "Location": { "Enabled": true, "UseGeolocatorService": true, "SunriseOffsetMin": 30 }, "WallpaperSwitch": { "Enabled": true, "Component": { "TypeLight": "Global", "GlobalWallpaper": { "Light": "C:\\wallpapers\\light.jpg" } } } }扩展脚本支持
通过ScriptHandler.cs可在主题切换时执行自定义脚本:
- 脚本路径:
%appdata%\AutoDarkMode\scripts\ - 支持类型:
.bat,.ps1,.cmd - 触发时机:主题切换前/后
部署与应用
编译与安装
项目使用Visual Studio 2022编译,解决方案文件:[Windows Auto Dark Mode.sln](https://gitcode.com/gh_mirrors/win/Windows-Auto-Night-Mode/blob/913f0071f0a0f8ea25cbd97e3897ac0fdeb6d33c/Windows Auto Dark Mode.sln?utm_source=gitcode_repo_files)。发布配置位于各项目的Properties/PublishProfiles/目录。
安装命令
支持多种安装方式:
# WinGet安装 winget install --id Armin2208.WindowsAutoNightMode # Chocolatey安装 choco install auto-dark-mode总结与展望
Windows-Auto-Night-Mode通过精细化的视觉管理,有效降低长时间使用电脑的眼部疲劳。核心优势在于:
- 无缝集成:完美适配Windows 10/11系统特性
- 性能优化:服务进程内存占用<10MB,CPU使用率<1%
- 高度可扩展:支持插件开发、脚本扩展、多语言本地化
未来版本将加入机器学习自适应亮度、应用级主题隔离等功能,持续提升视觉舒适度。
项目完整文档:Wiki/
源码仓库:https://gitcode.com/gh_mirrors/win/Windows-Auto-Night-Mode
提示:定期备份配置文件
%appdata%\AutoDarkMode\config\AdmConfig.json,避免设置丢失。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考