雨林黑猫 · 更绿版。网页保留原生成图;电脑静态桌面和锁屏使用其4K版本。泡泡背景另按VDD当前壁纸材料选择,画廊不是本次泡泡截图。
查看画廊与说明用途与结果
最快了解这个项目
为什么需要它
桌面图片不应随着项目目录搬家而丢失,换电脑也不该重新找图、调参数。空闲画面则需要在回来操作时及时退开,不能借屏保把远程桌面锁住,或让旧泡泡进程越积越多。这个项目分别处理图片恢复、空闲触发、窗口共存与停用恢复。
举个实际例子
“沿用我选好的壁纸,离开电脑一会儿让实体屏出泡泡;主屏关着就别往副屏上跑。”静态恢复和空闲程序独立工作。也可以按Ctrl+Win+E立即显示,松键稳定后才建立退出基线,正常移动或打字就回到工作。
最后我会得到什么
得到可恢复的静态图片设置,以及能查看状态、直接启动、预览、停用或卸载的原生泡泡入口。主屏不在时保持待命,不改变虚拟屏和仪表屏;没有实际看见画面时,不把进程或配置通过说成视觉验收完成。
正常工作
图片文件、固定图片模式和Windows回读一致时,恢复脚本报告完成。泡泡程序正常运行并达到六分钟可靠空闲时才显示;普通活动会把画面收起。
发现问题
配置发生漂移或常驻程序停止时,先分开核对设置、安装与进程,再处理相应问题;静态图片不因此被重新生成或替换。本轮已经修正超时值并恢复现有程序。
暂不可用
系统缺少Bubbles.scr、没有可用的当前用户桌面或已有另一原生泡泡实例时,不再启动一份。缺少选图或图像校验不符时,静态恢复入口直接报错。
从哪里开始
先运行 scripts/Set-WindowsBackground.ps1 -Action Verify/Apply 检查或恢复图片;泡泡另用 scripts/Install-EmeraldVeil.ps1 -Action Install 和 scripts/Set-NativeBubbles.ps1 -Action Enable。
需要准备什么
- 想用的项目图片
- 桌面、锁屏或泡泡的选择
- 要启用还是恢复原设置
从开始到拿到结果
- 1先恢复选定图片
Verify 先看当前桌面和锁屏,Apply 保存原设置后只改有漂移的地方。
- 2需要泡泡再启用
另安装本用户会话程序,可靠空闲六分钟后在实体屏显示,普通输入就收起。
- 3与其他画面协调
动态壁纸短暂停播,外部黑罩标记出现时让位;主屏关闭时保持待机。
- 4按层撤回
Disable、Restore、Remove 管泡泡状态,原桌面和锁屏图片按记录在 Windows 设置恢复;实际显示仍需现场观察。
从这些需求了解功能
从一个实际问题看它怎样处理、交回什么;当前能做到哪一步和仍有哪些限制,也写在对应说明中。
电脑与手机壁纸
两种屏幕,各自合适的画面
横图用于电脑,竖图用于手机。先加载缩略图,点开才加载所选大图;网页图采用无损 WebP,保留所用来源的全部像素。手机现用 PNG 另已备份在项目仓库。打开后可缩放、滚动查看细节,也可关闭或切换上一张、下一张。
项目指标与相关入口查看规模、覆盖范围和关联能力
当前项目指标
- 选定图片
- 雨林黑猫 / 4K
- 桌面与锁屏
- 接口回读通过
- 空闲策略
- 6分钟 / 常驻已恢复
- 9月9日安装观察
- 0.1.27 / 核对通过
它负责
- 保存并恢复已选Windows桌面/锁屏静帧与换机入口。
- 六分钟可靠空闲或明确启动时显示原生泡泡,正常输入收起,实体屏缺席待命。
- 让专属背景、原生泡泡、已有Wallpaper Engine和外部黑罩按各自职责共存。
- 保存受影响设置的原状态,明确停用、还原、卸载和实际验证的区别。
它不负责
- 不提供安全锁屏,也不改变用户主动锁定电脑的选择。
- 不重新分发Windows的Bubbles.scr或微软泡泡素材。
- 不添加网络、遥测、持久活动日志、屏幕截图或第二个输入监控系统。
- 不接管Wallpaper Engine选图、播放列表或持久配置。
- 已拒绝的猫分层草稿不属于现役功能,不作为待办自动恢复。
产品思想与设计核心
壁纸恢复和空闲画面各做一件事
静态图片只需原脚本、选图与文件即可恢复,不必安装泡泡。泡泡另按VDD当前Wallpaper Engine材料或Windows壁纸选择背景,只显示被确认的实体桌面屏,身份不足就待命。
泡泡借用系统原件,操作还给用户
保留Windows原生泡泡的材质与运动,不重画一套。覆盖层不抢焦点、不主动锁屏,正常输入时退开;远端是否好用仍要看实际客户端。
区分真操作和没有意义的鼠标消息
有些设备或远程工具会发出指针根本没动的消息,不能让它们不断重置空闲时间;连续移动、按键和滚轮仍算活动。判断事件本身,不按软件名称猜用户在不在。
已有画面和保护工具可以继续用
设置静态图片时不改Wallpaper Engine。启动泡泡时只短暂协调其当前会话播放;外部黑罩持有暂停标记时,泡泡连预览也会让位,标记消失后恢复原来的策略。
停用、还原和卸载说清楚
Disable先停止泡泡和自动触发;Restore还原第一次启用前保存的屏保参数;Remove移除项目自启和程序。原壁纸在Windows设置里按保存记录选回,不冒充一个命令能还原电脑所有改动。
项目怎样演化到现在
空闲画面不该打断回来操作
采用原生泡泡,加入六分钟空闲、输入退出和会话启动;它不是另一个锁屏或身份验证入口。
阶段依据
- 2026-08 · 原生泡泡、六分钟空闲、输入退出与会话运行。
8c7d69e
与已有壁纸和窗口共存
协调背景、黑罩与窗口层级,静态图片有独立恢复入口;实验画面和已认可图片分开。
阶段依据
- 2026-08-31—09-05 · 背景、层级、现有Wallpaper Engine与外部黑罩共存。
f243bce - 2026-09-07 · 静态桌面/锁屏恢复独立,未接受的动态或分层实验不进入交付。
cf77883
想开就能开,主屏不在就等待
托盘与快捷键直接启动,物理屏缺席不改用虚拟屏;当前壁纸材料取代固定底图,暂停和退出按实际入口行为说明。
阶段依据
- 2026-09-17 · 想开就能开,主屏不在就等待
b06e530
完整项目状态与证据边界
已确认事实
- 源码 0.1.28 把 Windows 显示图片放到用户图片目录,前像仍保存在应用数据目录;统一通过 IDesktopWallpaper 设置和读取共同及逐屏壁纸。自动屏保关闭时,系统可能回读运行超时 0,只有 active=false 时接受;保存值仍须为360秒,项目自己按六分钟空闲计时。
- PUBLIC(公开) main b06e5300d7ac4a159e0180ab900c047fc801ea71。当前源码将泡泡背景改为优先VDD的Wallpaper Engine材料快照、缺材料才取该VDD的Windows壁纸;只显示已识别实体屏。已发布源码、安装Verify和实际画面分别判断,不把旧0.1.27安装记录变成新版本加载证明。
- Windows各屏底层壁纸和锁屏仍选雨林黑猫4K,资产SHA-256 FA8D1FDC7799D537864D2784B5718E8BA15B77775D246C019179084B0F0239E7不变。泡泡不再固定用嵌入黑猫图:启动时优先复用VDD当前Wallpaper Engine材料快照,缺失才回退VDD Windows壁纸;不改变VDD选图。
- 0.1.27 对应的 Set-WindowsBackground.ps1 -Action Verify 返回 verified:desktop.matches=true,三块当前显示器逐项 matches=true,lockScreen.matches=true,锁屏解码图像平均像素差0,changedSurfaces为空。脚本也能核对Windows仍记得的离线显示器,未改变连接或排列;本轮没有应用图片或进入真实锁屏。
- 现有安装器只读 Verify 通过,已安装程序版本0.1.27、190135964字节、SHA-256=1a9fe476aeeb6fd0a176f106c022ac8277c59957a780a08ffff8cfd95b3c1a83;文件 ProductVersion 的编译标识仍含 f6e134f,不能把它当成本轮重新编译证明。唯一启动项指向已安装 WinExe,本轮未强制显示泡泡或重启程序。
- 9月8日曾发现enabled=1但程序已停止,注册表超时600、运行时360。沿现有Enable入口将注册表恢复为360,并启动已安装程序;首次前像SHA-256前后相同。现配置Verify通过:NativeBubblesEnabled=1、ScreenSaveActive=0、ScreenSaverIsSecure=0,运行时false/360/false。原停止原因未有充分证据。
- 源码每50ms读取GetLastInputInfo,360秒可靠空闲后显示;零位移鼠标消息被过滤,孤立注入移动仍传给应用但暂不计为空闲活动。第二次注入在250ms内到达才确认连续活动;渲染器退出后,仍空闲时按1秒退避重试。
- 9月8日37项测试通过,0失败、0跳过;0.1.27本轮核对源码、图片与安装,不把这组旧测试改写成新回归。原36项覆盖输入分类、空闲计时、状态协调、外部暂停与部分源码结构;新增隔离进程测试先复现控制命令失败被忽略,再验证非零结果被正确拒绝。测试不启动真实Bubbles,不能证明窗口像素、Job Object(作业对象)实机清理、自然触发或远端画面。
当前缺口
- 驻留进程是Ctrl+Win+E唯一Owner,现不提供“暂停本次会话”或托盘退出驻留入口;可以通过正式Disable/Restore/Remove管理功能。Windows应用重启登记不等于已实测每种崩溃/自然开机,未新增服务、任务或第二守护器。
- 桌面/锁屏接口回读通过,不等于本轮看过真正锁屏画面;跨机器设置流程已有实现,本轮未在第二台电脑重新应用。
- 原生泡泡的大小、数量和边缘运动由Windows实现决定;当前版本采用未公开的Radius参数,系统更新后需要重新确认实际画面。
- 泡泡让静止画面多一些运动,不保证OLED不会烧屏;亮度、面板维护和自动息屏仍由显示器及系统负责。
- 远程兼容依靠同一用户桌面、输入穿透和不主动锁屏;不承诺所有远程软件、网络和显示器组合已经实测。
来源与公开边界
公开仓库保存项目代码、电脑选图、明确备份的手机壁纸和恢复说明。原来的桌面/锁屏图片、注册表备份和本机运行状态留在本机;网站展示一次核对结果,不控制当前桌面。
当前关键技术事实
- 源版本与工作区
- PUBLIC(公开) main b06e5300d7ac4a159e0180ab900c047fc801ea71。当前源码将泡泡背景改为优先VDD的Wallpaper Engine材料快照、缺材料才取该VDD的Windows壁纸;只显示已识别实体屏。已发布源码、安装Verify和实际画面分别判断,不把旧0.1.27安装记录变成新版本加载证明。
- 静态图片和泡泡背景的分工
- Windows各屏底层壁纸和锁屏仍选雨林黑猫4K,资产SHA-256 FA8D1FDC7799D537864D2784B5718E8BA15B77775D246C019179084B0F0239E7不变。泡泡不再固定用嵌入黑猫图:启动时优先复用VDD当前Wallpaper Engine材料快照,缺失才回退VDD Windows壁纸;不改变VDD选图。
- 静态背景现场回读
- 0.1.27 对应的 Set-WindowsBackground.ps1 -Action Verify 返回 verified:desktop.matches=true,三块当前显示器逐项 matches=true,lockScreen.matches=true,锁屏解码图像平均像素差0,changedSurfaces为空。脚本也能核对Windows仍记得的离线显示器,未改变连接或排列;本轮没有应用图片或进入真实锁屏。
- 泡泡安装与当前运行
- 现有安装器只读 Verify 通过,已安装程序版本0.1.27、190135964字节、SHA-256=1a9fe476aeeb6fd0a176f106c022ac8277c59957a780a08ffff8cfd95b3c1a83;文件 ProductVersion 的编译标识仍含 f6e134f,不能把它当成本轮重新编译证明。唯一启动项指向已安装 WinExe,本轮未强制显示泡泡或重启程序。
- 配置恢复
- 9月8日曾发现enabled=1但程序已停止,注册表超时600、运行时360。沿现有Enable入口将注册表恢复为360,并启动已安装程序;首次前像SHA-256前后相同。现配置Verify通过:NativeBubblesEnabled=1、ScreenSaveActive=0、ScreenSaverIsSecure=0,运行时false/360/false。原停止原因未有充分证据。
- 输入与恢复机制
- 源码每50ms读取GetLastInputInfo,360秒可靠空闲后显示;零位移鼠标消息被过滤,孤立注入移动仍传给应用但暂不计为空闲活动。第二次注入在250ms内到达才确认连续活动;渲染器退出后,仍空闲时按1秒退避重试。
- 源码验证范围
- 9月8日37项测试通过,0失败、0跳过;0.1.27本轮核对源码、图片与安装,不把这组旧测试改写成新回归。原36项覆盖输入分类、空闲计时、状态协调、外部暂停与部分源码结构;新增隔离进程测试先复现控制命令失败被忽略,再验证非零结果被正确拒绝。测试不启动真实Bubbles,不能证明窗口像素、Job Object(作业对象)实机清理、自然触发或远端画面。
完整执行流程
- 1先恢复喜欢的图片
从选图清单找到已保存PNG,按需保存原始记录、复制到本用户持久目录并设置Windows桌面和锁屏,最后读取实际结果。
- 2需要泡泡时再安装启用
安装单个程序与直接登录启动项,然后用Enable配置六分钟策略;不把一次性图片恢复变成长驻服务。
- 3等待可靠空闲
程序每50ms观察输入;无意义鼠标移动不重置计时,暂停、外部黑罩或不可靠读数会阻止自动显示。
- 4显示并维护两层画面
和现有壁纸播放做短暂协调,显示专属背景,再启动原生泡泡;维护两层位置,输入或停止操作到来就收起。
- 5问题按层处理
仍空闲时可重试意外退出的渲染器;静态背景漂移按需重跑Apply(应用图片);想撤回时分别处理屏保参数、程序安装和原壁纸。
本页用到的名词
需要核对专业含义时,可以在这里查看它在 Emerald Veil 项目中的具体用法。
- Bubbles.scr
- Windows自带的气泡屏幕保护程序。本项目使用系统现有副本的/s全尺寸模式,微软仍决定泡泡材质、运动和数量。
- watchdog(看门狗)
- 这里指本用户会话中的小程序:等待空闲、显示泡泡、响应活动、重试意外退出的渲染器。它不是系统服务。
- Job Object(作业对象)
- 把本次启动的泡泡进程交给Windows统一管理;关闭最后一个作业句柄时结束其子进程,减少退出后残留。
- Color-key(色键透明)
- 把原生泡泡窗口中的黑色像素设为透明,让下面的项目背景显示出来。背景窗口本身仍是不透明图片。
- Preimage(变更前状态)
- 修改前保存的具体原状态,用于按原样恢复;它不代表备份整台电脑,也不自动证明所有操作完全可回滚。
- DWM(桌面窗口合成器)
- Windows负责组合各个窗口画面的组件。这里等待其完成一轮合成,避免泡泡初始化时使用尚未稳定的背景。
- GetLastInputInfo
- Windows提供的最近输入时间。项目结合少量内存中的事件分类计算空闲,不保存用户按键、活动日志或截图。
系统里实际有什么
下面是当前产品组件,不是概念分类。每一项都对应真实文件、入口或验证链。
恢复Windows桌面与系统锁屏图片
读取选图清单和PNG,核对SHA-256,通过IDesktopWallpaper与Windows.System.UserProfile.LockScreen设置并回读。PowerShell 7自动转到Windows自带64位Windows PowerShell运行WinRT接口。
在当前用户桌面等待空闲,显示与收起泡泡
.NET Windows WinExe承载原生泡泡与所选VDD背景快照,托盘显示目标、空闲时间和最近失败,并提供立即启动;双击和Ctrl+Win+E进入真正屏保,preview仍限15秒。原Run项保持用户会话运行,Windows Application Restart负责受支持的异常恢复。
区分可靠空闲、活动、启用状态和外部保护让位
IdleTimeline处理计时、回绕与不可靠采样;InputActivityFilter只在内存判断活动;VeilActivationPolicy和VeilModeReconciler决定显示/隐藏及1秒恢复退避。
管理原生泡泡进程和两层画面
会话租约防止重复启动,Job Object(作业对象)关闭时结束子进程。原生泡泡窗口使用黑色色键透明;不透明的项目背景窗口紧贴其下,两者都不接管用户输入。
和已有壁纸、外部黑罩协调
唯一识别当前会话wallpaper64,再用同目录wallpaper32控制stop/play;外部暂停只看会话内命名标记是否仍被持有,不识别远程产品或记录输入。
配置、检查、停用、恢复和安装
原屏保参数保存在本机前像;安装器部署单个程序并注册直接WinExe Run值,不建立服务、计划任务或额外常驻脚本。
当前数据合同与写读边界
name / image / sha256 / width / height / color / renderSettings
静态背景脚本:选图SHA-256 FA8D1FDC7799D537864D2784B5718E8BA15B77775D246C019179084B0F0239E7;3840×2160。参数vivid=0.5、rain=0.75、wind=0、haze=0.5、depth=0、rainStyle=1,只记录选定画面来源,不让Windows运行动态雨幕。
capturedUtc / desktopPath / desktopBackup / wallpaperStyle / tileWallpaper / lockScreenOriginalUri / lockScreenBackup / pictureSelectors
静态背景脚本:这是脚本保存的JSON记录,没有另一个wly.*版本schema(数据结构)。首次保存原图和模式,重复应用不覆盖原图;缺少旧selector字段时只补采该字段。原图片按记录在Windows设置里选回。
emerald-veil.native-bubbles-preimage.v2;兼容v1
Set-NativeBubbles.ps1:保存runtime(运行环境)和registry_values,逐项含路径、名称、存在性、类型、值;v2包括NativeBubblesEnabled,v1恢复时将该标志还原为不存在。记录留在本机。
HKCU Desktop + Screensavers\Bubbles + Software\EmeraldVeil
配置脚本与常驻程序:SCRNSAVE.EXE指向系统Bubbles.scr;ScreenSaveTimeOut=360、ScreenSaveActive=0、ScreenSaverIsSecure=0均为REG_SZ;Radius=1130000000、NativeBubblesEnabled=1为REG_DWORD。常驻程序每30秒修正运行时策略,不是全注册表定时重写器。
native-bubbles-session-<session>.lock / JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE / HWND
NativeBubblesLauncher:租约和当前会话进程检查拒绝重复实例,不接管已有原生泡泡。启动进程归作业对象,退出时先隐藏已持有窗口,再释放进程和租约。
会话内命名mutex(互斥体)的句柄生命周期标记
外部保护程序创建,Emerald Veil只读观察:以initiallyOwned=false创建,持有句柄即让位;无需Wait或ReleaseMutex。观察者立即关闭探测句柄,最后持有者关闭或崩溃后标记消失。
照片原件与显示版本
缩略图用于快速浏览,点开后才加载大图。经过转换或压缩的显示副本与来源原件分别标明,下面可下载网页使用的大图。
显示尺寸 1672 × 941 · 1,743,642 B · SHA-256 15c8f97c699af6e0f33196fdd89066ffdcfefaefda78cddcf2e19939730107dd
来源原件 1672 × 941 · 2,490,116 B · SHA-256 61c9224fc6359c27fc55d9b15ddd8bfef33fe24a94d63b12f1efaa437ea3077a
无损 WebP,1672×941 解码像素与已核实的生成原 PNG 完全相同;网页不加载 17 MB 的 4K 超分文件。
显示尺寸 841 × 1870 · 2,353,694 B · SHA-256 52e27a29e0206bf48fbff4ab5e4713901bd28b658e5da2424771e5bb883f1db2
来源原件 841 × 1870 · 3,138,778 B · SHA-256 d432ccf2116d00e5ef71b2bb6ca1eb75d093de77d8ac7abb9088ae932ff9b231
无损 WebP,841×1870 RGBA像素与归档记录核对到的原始生成PNG完全相同;网页不使用超分后的12MB成品,也没有从成品反向缩图。
5 层证据分别证明什么
能证明:用户明确提供并要求备份的手机PNG在PUBLIC(公开) main 5a2f8d7中,路径assets/mobile-wallpaper/emerald-elf-1440x3200.png;远端原文件回读1440×3200、12114553字节,SHA-256=f87bdb1cff2f8885fc80ef02a0edff0eff2c18e76a63af63edca1e1d60c42eed,与输入字节相同。
不能证明:保存图片不代表已经在手机设置为壁纸,网页生成原图与实际使用成品是不同尺寸;本轮未修改手机设置。
能证明:2026-09-12只读回读0.1.28远端源码及Windows 11兼容差分;手机壁纸备份保留原证据,37项核心与控制命令回归仍为9月8日,不是0.1.28新测试。
不能证明:不启动真实渲染器,不能证明实际泡泡像素、窗口层级、Job Object(作业对象)崩溃清理或完整六分钟自然触发。
能证明:0.1.27的Verify确认三块当前显示器与锁屏引用共同持久图片,desktop.matches和逐屏matches为true,锁屏解码平均像素差0。
不能证明:不是实际锁屏目视,也不是第二台电脑上的应用验证;不证明HDR或任意显示器裁剪效果。
能证明:安装器只读Verify通过,安装版本0.1.27和实际文件大小/哈希已回读;六分钟配置与常驻恢复沿用9月8日实际记录,没有在本轮重新启停。
不能证明:配置与常驻恢复不证明本轮已看到自然触发的泡泡,也不证明原退出原因已根治。
能证明:只有实际看到空闲触发、输入退出和远端连接,才证明对应会话和显示组合的使用结果。
不能证明:本轮未重新执行这些实机操作;设计机制、历史截图或测试数量不能补成当前PASS。
维护入口
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Set-WindowsBackground.ps1 -Action Apply恢复桌面与锁屏图片:在项目目录运行;使用已保存图片,不重新生成。会修改当前用户个性化设置,先保存原始图片与设置记录。
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\Set-WindowsBackground.ps1 -Action Verify只检查图片:核对图片、固定模式、持久路径和解码锁屏画面,正确返回verified/0,漂移返回drift/1;不锁定会话。
dotnet publish .\src\EmeraldVeil.App\EmeraldVeil.App.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o .\artifacts\publish\win-x64构建可安装泡泡程序:从源码安装需.NET 10 SDK;生成安装器默认读取的单文件程序。不因构建自动启动泡泡。
pwsh -NoProfile -File .\scripts\Install-EmeraldVeil.ps1 -Action Install安装或更新泡泡程序:部署到本用户Programs\EmeraldVeil,注册直接启动项并启动程序;Enable不是安装器,不能替代这一步。
pwsh -NoProfile -File .\scripts\Set-NativeBubbles.ps1 -Action Enable启用六分钟自动泡泡:保存第一次启用前的原状态,写入360秒、半径和enabled标志,并关闭Windows自己的自动屏保触发。
pwsh -NoProfile -File .\scripts\Set-NativeBubbles.ps1 -Action Verify检查泡泡配置:检查屏保注册表与运行时;程序是否运行和实际画面仍需分别观察。
pwsh -NoProfile -File .\scripts\Install-EmeraldVeil.ps1 -Action Verify检查程序安装:检查已安装的程序与自启项,不把安装一致当作实屏效果已通过。
pwsh -NoProfile -File .\scripts\Set-NativeBubbles.ps1 -Action Disable立即停用泡泡:停止匹配Windows系统路径的泡泡进程,清除项目enabled标志,并让Windows自动触发保持关闭。不是只读操作,也不会还原静态壁纸。
pwsh -NoProfile -File .\scripts\Set-NativeBubbles.ps1 -Action Restore还原原屏保设置:还原第一次Enable前记录的精确键值存在性、类型、值和运行时状态;不是恢复Windows默认值,也不是卸载程序。
pwsh -NoProfile -File .\scripts\Install-EmeraldVeil.ps1 -Action Remove卸载泡泡程序:移除项目自启项和已装程序。若同时要回到原屏保设置,先按Restore处理;恢复记录留在本机。
快照怎样更新
2026-09-12只读回读0.1.28远端源码并补入Windows 11壁纸和超时兼容;电脑各屏、锁屏、安装版本与手机壁纸仍保留9月9日0.1.27观察,37项回归和启用恢复仍为9月8日。本轮没有安装、触发泡泡或进入锁屏。
