Windows Terminal主题自动切换:一套配置搞定深浅色联动
【免费下载链接】terminalThe new Windows Terminal and the original Windows console host, all in the same place!项目地址: https://gitcode.com/GitHub_Trending/term/terminal
晚上十点盯着终端,深色模式里突然切出浅色通知,刺眼得像闪了灯。把settings.json里的colorScheme配成浅色/深色双方案,终端就能跟着系统主题走,白天看浅色、夜里回深色,不用手动切。
这就是目标效果:同一套配置,主题变了配色跟着变。下面从最小改动开始讲。
开始前的准备清单
- 确认版本支持
light/dark双方案写法:在终端里执行wt --version看版本号,太旧就升级到最新稳定版 - 配置文件位置:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json - 系统里先能手动切换深浅色(设置 > 个性化 > 颜色),后续验证全靠它
- 改配置前把
settings.json复制一份做备份,JSON 手滑删个括号就得回滚
方法一:跟随系统主题(三步生效)
第 1 步:给 profile 配上双方案。按Ctrl+Shift+P打开命令面板,运行“Open Settings (JSON)”,在profiles的defaults下写入:
"profiles": { "defaults": { "colorScheme": { "light": "Campbell", "dark": "Campbell Powershell" } } }对象形式里light、dark分别指定两种主题下使用的配色名,两边都缺省Campbell。验证:文件里出现colorScheme对象且没有红波浪线,说明 JSON 格式没问题。
第 2 步:把应用主题设为跟随系统。在settings.json顶层加一行:
"theme": "system"theme支持dark、light、system三个值,默认是dark。这个定义在 配色方案规范 里写得明明白白。验证:命令面板运行“Reload settings”,不报错即生效。
第 3 步:切一次系统主题验证联动。把 Windows 切到浅色,新开一个标签页。验证标准很直接:浅色下文本背景变浅、深色下回到深底。若颜色纹丝不动,多半是light/dark填的方案名和schemes里的name对不上,逐个核对即可。
方法二:按时间段切换(进阶可选)
思路一句话:不等系统,用 PowerShell 按小时改写settings.json,再交给任务计划程序定时跑。脚本核心逻辑就这几行:
$hour = (Get-Date).Hour $scheme = if ($hour -ge 6 -and $hour -lt 18) { "Campbell" } else { "Campbell Powershell" } $path = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" $raw = (Get-Content $path -Raw) -replace '"colorScheme":\s*"[^"]*"', """colorScheme"": ""$scheme""`" Set-Content $path $raw把方案名换成你要的即可。剩下的细节:任务计划程序建一个每日任务,触发时间定在时段交界处(如 6:00、18:00),操作指向powershell.exe -File 脚本路径。改完配置后运行命令面板里的“Reload settings”,现有标签页立即应用新配色,不必重启窗口。
容易踩坑的场景
| 现象 | 原因和对策 |
|---|---|
| 改成 light/dark 对象后颜色不变 | 老版本只认字符串形式的colorScheme,升级版本;wt --version先确认 |
| 报配置无效或回退默认 | 方案名大小写必须与schemes里的name完全一致,别自创名字 |
定时脚本和theme: system打架 | 两个机制都在改同一处,二选一:要么删掉脚本,要么脚本里先判断系统主题再决定是否写入 |
另外提醒一句:colorScheme双方案写法目前是 主题控制配色方案 spec 定义的方向,官方在 主题方案讨论 里还规划了更完整的主题市场和基于系统主题的整体换肤,等原生能力补齐,这套手动方案可以随时退役。
<输出文章> </输出文章>
<输出文章>
Windows Terminal主题自动切换:一套配置搞定深浅色联动
</输出文章>
等等,我需要重新检查输出格式——上面重复了。以下是正确的最终输出。
<输出文章>
Windows Terminal主题自动切换:一套配置搞定深浅色联动
晚上十点盯着终端,深色模式里突然切出浅色通知,刺眼得像闪了灯。把settings.json里的colorScheme配成浅色/深色双方案,终端就能跟着系统主题走,白天看浅色、夜里回深色,不用手动切。
这就是目标效果:同一套配置,主题变了配色跟着变。下面从最小改动开始讲。
开始前的准备清单
- 确认版本支持
light/dark双方案写法:在终端里执行wt --version看版本号,太旧就升级到最新稳定版 - 配置文件位置:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json - 系统里先能手动切换深浅色(设置 > 个性化 > 颜色),后续验证全靠它
- 改配置前把
settings.json复制一份做备份,JSON 手滑删个括号就得回滚
方法一:跟随系统主题(三步生效)
第 1 步:给 profile 配上双方案。按Ctrl+Shift+P打开命令面板,运行“Open Settings (JSON)”,在profiles的defaults下写入:
"profiles": { "defaults": { "colorScheme": { "light": "Campbell", "dark": "Campbell Powershell" } } }对象形式里light、dark分别指定两种主题下使用的配色名,两边都缺省Campbell。验证:文件里出现colorScheme对象且没有红波浪线,说明 JSON 格式没问题。
第 2 步:把应用主题设为跟随系统。在settings.json顶层加一行:
"theme": "system"theme支持dark、light、system三个值,默认是dark。这个定义在 配色方案规范 里写得明明白白。验证:命令面板运行“Reload settings”,不报错即生效。
第 3 步:切一次系统主题验证联动。把 Windows 切到浅色,新开一个标签页。验证标准很直接:浅色下背景变浅、深色下回到深底。若颜色纹丝不动,多半是light/dark填的方案名和schemes里的name对不上,逐个核对即可。
方法二:按时间段切换(进阶可选)
思路一句话:不等系统,用 PowerShell 按小时改写settings.json,再交给任务计划程序定时跑。脚本核心逻辑就这几行:
$hour = (Get-Date).Hour $scheme = if ($hour -ge 6 -and $hour -lt 18) { "Campbell" } else { "Campbell Powershell" } $path = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" $raw = (Get-Content $path -Raw) -replace '"colorScheme":\s*"[^"]*"', '"colorScheme": "' + $scheme + '"' Set-Content $path $raw把方案名换成你要的即可。剩下细节:任务计划程序建一个每日任务,触发时间定在时段交界处(如 6:00、18:00),操作指向powershell.exe -File 脚本路径。改完配置后运行命令面板里的“Reload settings”,现有标签页立即应用新配色,不必重启窗口。
容易踩坑的场景
| 现象 | 原因和对策 |
|---|---|
| 改成 light/dark 对象后颜色不变 | 老版本只认字符串形式的colorScheme,先升级;用wt --version确认 |
| 配色不生效或回退默认 | 方案名大小写必须与schemes里的name完全一致,别自创名字 |
定时脚本和theme: system打架 | 两个机制都在改同一处,二选一:删掉脚本,或脚本里先判断系统主题再决定是否写入 |
这套联动能解决大部分场景,想玩得更深可以看 贡献指南 参与讨论,或关注 2023 路线图 里关于主题市场和系统主题整体换肤的规划。
【免费下载链接】terminalThe new Windows Terminal and the original Windows console host, all in the same place!项目地址: https://gitcode.com/GitHub_Trending/term/terminal
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考