Windows Terminal 主题自动切换:3 个场景配好,配色不用再手动换
【免费下载链接】terminalThe new Windows Terminal and the original Windows console host, all in the same place!项目地址: https://gitcode.com/GitHub_Trending/term/terminal
Windows Terminal 的配色可以跟随系统深浅色主题自动切换,也能用定时脚本按时间段换。这篇按 3 个真实场景把做法拆开:跟系统走的最省事,定时脚本最可控,两者同时存在时谁说了算也有现成规则。要改的只是 settings.json 里的几个字段和一份小脚本,配完之后不再需要盯着终端手动切配色。
⚙️ 场景一:跟着系统深浅色走,零脚本
这是最省事的路。把全局字段theme(应用主题模式)设成system,再在profiles.defaults里给colorScheme(配色方案名)写一对浅色/深色映射,终端就会在系统切主题时自动换配色:
{ "theme": "system", "profiles": { "defaults": { "colorScheme": { "light": "Campbell", "dark": "Campbell Powershell" } } } }colorScheme平时是单个字符串,这里改成带light、dark两个键的对象,两种主题各指向一个方案名,不写时默认都是内置的 Campbell。这种成对写法在 profiles 配置规范里有定义,设计背景可以看 主题配色切换的设计文档。
操作就三步:
- 按
Ctrl+Shift+P打开命令面板,输入 "open settings (JSON)" 打开 settings.json,文件一般在%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\下; - 把上面两个片段贴进对应层级,浅色方案换成你顺眼的,比如 One Half Light;
- 确认 Windows"个性化 > 颜色"里应用模式开了自动切换,终端就会跟着日出日落一起变。
有研究提到,屏幕亮度和环境光不匹配会让眼疲劳增加四成以上。白天浅色、夜里深色,让它自己跟着走基本是顺手的事。
这个能力需要较新的版本,1.10 起就有,不确定就先跑一下wt --version看一眼。
⏰ 场景二:按时间段换配色,定时脚本接管
有些节律系统主题覆盖不了,比如"上午浅色、下午中性、夜里深色"。思路是让任务计划程序(Windows 自带的定时任务管理器)按时跑一段 PowerShell,把 settings.json 里的配色名改掉。
- 写脚本 ThemeSwitcher.ps1,核心就两块:按当前小时选方案名,再写回配置文件。
$hour = (Get-Date).Hour $scheme = switch ($hour) { { $_ -ge 6 -and $_ -lt 12 } { "One Half Light" } { $_ -ge 12 -and $_ -lt 18 } { "Campbell" } default { "One Half Dark" } } $path = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" $settings = Get-Content $path -Raw | ConvertFrom-Json $settings.profiles.defaults.colorScheme = $scheme $settings | ConvertTo-Json -Depth 32 | Set-Content $path- 打开"任务计划程序"建基本任务:触发器设成每天 6:00、12:00、18:00 各一次,操作选"启动程序",程序填
powershell.exe,参数指向脚本路径;条件里勾上"只有使用交流电源时才启动",避免笔记本上出现没预期到的切换。 - 想让切换立刻可见,不用重启窗口:命令面板里跑一次"重新加载设置",所有分屏窗格会一起应用新配色。
如果还想省电优先,脚本开头加一句电池判断(查 Win32_Battery 的 BatteryStatus),电池供电时直接强制深色方案即可,不必再建第二个计划任务。
🔀 两种方式同时存在时,谁优先
如果既开了系统主题联动、又挂了定时脚本,它们写的是同一个字段,谁后跑谁生效。实际用的时候建议把优先级定死,脚本开头照这个顺序判断就行:
- 工作时间(比如 9:00-18:00):时间触发赢。系统主题让位,脚本无条件覆盖;
- 其余时间:系统主题赢。脚本读一下系统当前的应用模式(注册表里的 AppsUseLightTheme 键),该跳过就跳过,直接退出;
- 电池供电:深色优先,前两条都让路。
判断逻辑不复杂,就是两个 if。规则定死后行为可预期,不会出现"一会儿脚本说了算、一会儿系统说了算"的来回跳。
让切换更顺手
几个零碎但省心的开关:
useAcrylic: true配合opacity(0-100,背景不透明度)做半透明背景,主题切换时视觉过渡更柔和;注意亚克力和像素着色器都会多吃一点 GPU,低配机器建议关掉;- 改完配置用命令面板的"重新加载设置"比关窗重开更快,分屏里每个窗格都会同步应用,不用逐格处理;
- 动 settings.json 之前留一份备份,配色字段写错格式会让整个配置回退到默认,有备份恢复起来更稳。
场景速查表
| 你的场景 | 推荐做法 | 要动的位置 |
|---|---|---|
| 白天深/浅跟系统走 | theme设system+ 配色映射 | settings.json 顶层与 profiles.defaults |
| 固定时间段换配色 | 任务计划程序定时跑 PowerShell | 脚本文件 + 任务计划程序 |
| 电池下省电优先 | 脚本开头加电池判断,强制深色 | ThemeSwitcher.ps1 内 |
| 多窗格同步生效 | 命令面板跑"重新加载设置" | 无需改配置 |
接下来可以试
- 先把
profiles.defaults里的映射跑一周,再给最常用的一两个 profile 单独指定colorScheme,粒度更细; - 想跟一下这块的后续方向,仓库的 终端 v2 路线图里有整体主题和主题市场的条目,进展都挂在上面。
【免费下载链接】terminalThe new Windows Terminal and the original Windows console host, all in the same place!项目地址: https://gitcode.com/GitHub_Trending/term/terminal
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考