---
name: adom-screensaver
description: Deploy (prebuilt + signed), configure, run, and troubleshoot the Adom vibe-coding screensaver + native keep-awake on a user's Windows laptop via the adom-desktop relay. A WebView2 (Edge/Chromium) billboard of recent Adom Wiki drops, plays webm silently, renders SVG, truly caches heroes, that rests the panel (no burn-in) while keeping the machine awake so Claude Code / Remote Control threads survive. WINDOWS ONLY. Use to install/deploy, change idle or display-off timing, disable lock-on-wake, trigger it, or troubleshoot. Trigger words, adom screensaver, adom-screensaver, vibe-coding screensaver, keep laptop awake, keep awake without powertoys, stay awake, screen off but stay awake, adom-stayawake, display off timeout, screensaver lock on wake, set up screensaver, trigger screensaver, Win+Shift+L screensaver, screensaver burn-in.
---

# Adom Screensaver, deploy (prebuilt) + operate

Turns a **Windows** laptop into an always-on home for the user's Claude Code threads: a branded
**WebView2 billboard** of recent Adom Wiki drops + native keep-awake (no PowerToys). Drive it from
the Adom container through the **`adom-desktop`** relay. See also:
- **[[adom-screensaver-billboard]]**, the viewer, dual-wiki discovery, true caching, `exclude.txt` curation.
- **[[adom-screensaver-wake]]**, how HD/AD or any app dismisses it + holds the display on (IPC).
- **[[adom-screensaver-rationale]]**, the *why*: origin story, the cascade, power/lock/rest reasoning.

> ⚠️ **WINDOWS ONLY.** `adompkg install adom-screensaver` on a Linux/WSL2 container only installs
> these skills + stages the deploy payload, it does **not** run anything there. The screensaver is
> deployed to the user's **Windows laptop** over the relay. (The private source + build live on the
> org-only `adom-screensaver-dev` page; this public package ships only the prebuilt, **signed**
> binaries, no compiler needed.)

## What it is
A fullscreen WebView2 rendering `billboard.html`: opens with a branded fade-to-black, then a
power-aware **nerd-stats splash** (cover-fades up ~800ms over the fully-rendered content), then
cross-fades through Wiki v2 + v1 hero cards. Plays **webm muted/looped**, renders **SVG**/raster;
hero images/SVGs are **truly cached to disk** (video streams). When the **display-off time** arrives
it **rests**, pauses video (releasing the browser's display wake-lock), blanks to black, and powers
the panel off, so it never burns a bright billboard into a panel that's meant to be off. Keep-awake
holds the system/network the whole time. **Win+Shift+L** launches it on demand. Only **public** wiki
pages are advertised (org-private filtered; curate more via `exclude.txt`).

## Relay: base64 everything
```bash
b64=$(base64 -w0 script.ps1); adom-desktop run_script "{\"interpreter\":\"powershell\",\"scriptB64\":\"$b64\"}"
```
**Check `adom-desktop status` hostname first** (it can flip between the laptop and winvm). Calls time
out ~60s; launch long things detached + poll. A winexe (`.scr`/`.exe`) ignores `&`, use
`Start-Process`. If `run_script` returns empty, re-arm `shell_auto_approve`.

## Deploy = PREBUILT signed binaries (no compile)
Install dir: `C:\Users\<user>\adom-screensaver`. The package's `dist/win/` already holds the
**signed** `.scr` + helper + DLLs + html + assets (subject `Adom Industries, Inc.`, Azure Trusted
Signing, so Defender won't quarantine them). To deploy:
1. **Push `dist/win/*`** to the install dir (`send_files` for the big DLLs; base64 for the small
   files via the Defender-safe `.new` + `Move-Item -Force` pattern). Files: `adom-screensaver.scr`,
   `adom-stayawake.exe`, `Microsoft.Web.WebView2.Core.dll`, `Microsoft.Web.WebView2.WinForms.dll`,
   `WebView2Loader.dll`, `billboard.html`, `config.html`, `adom.ico`, `adom-wordmark.png`,
   `bundle.json`. **Do not compile**, ship the signed binaries as-is.
2. **Keep-awake + autostart:** launch `adom-stayawake.exe`; set BOTH the HKCU `…\Run` value
   `adom-stayawake` AND a Startup-folder shortcut (one alone got wiped on reboot). It's power-aware
   (AC = hold `ES_SYSTEM_REQUIRED`; battery = passive) and registers the Win+Shift+L hotkey.
3. **Register** (merge, never clobber): `HKCU\Control Panel\Desktop` → `SCRNSAVE.EXE`=`<dir>\adom-screensaver.scr`,
   `ScreenSaveActive`=1, `ScreenSaveTimeOut`=**120** (2 min), `ScreenSaverIsSecure`=0. Apply live:
   `SystemParametersInfo(0x0011,1,..)` + `SystemParametersInfo(0x000F,<secs>,..)`.
4. **Real backlight-off:** `powercfg /change monitor-timeout-ac 5` (+ `-dc 5`), the saver rests +
   powers the panel off at this mark.
5. **No lock on wake (optional, ADMIN):** `CONSOLELOCK`=0 needs elevation, warn the user, trigger one
   UAC prompt, verify via the per-scheme registry index. (A real sleep-then-wake still asks for sign-in.)
6. **Verify the deployed `.scr` is signed:** `(Get-AuthenticodeSignature <dir>\adom-screensaver.scr).Status` = `Valid`.

`bundle.json` in `dist/win/` lists the canonical file set + registry keys for an automated deploy.

## Configure (common asks)
- **Idle timeout** ("come on after N min"): `ScreenSaveTimeOut`=N*60 + live `SystemParametersInfo(0x000F,..)`.
- **Display-off** ("turn the display off after N min"): `powercfg /change monitor-timeout-ac N`.
- **Win+Shift+L hotkey:** toggle from the preferences screen (writes `hotkey.disabled` in the install dir).
- **Curate the rotation:** append a slug to `exclude.txt`, NO redeploy ([[adom-screensaver-billboard]]).
- **Preferences screen:** Windows Screen Saver "Settings…" opens the live power-settings drift table.

## Run on demand
**Win+Shift+L**, or `Start-Process '<dir>\adom-screensaver.scr' -ArgumentList '/s'`. Grace ~1s, then any
key/mouse wakes, **instant** during the billboards (the window hides immediately; no slow fade).

## Troubleshooting
- **Blank/black billboard:** WebView2 Runtime missing, or the 3 DLLs / `WebView2Loader.dll` not beside
  the `.scr`; check `%LOCALAPPDATA%\adom-screensaver\wv.log` (also has a 60s heartbeat + REST lines).
- **Defender quarantined the .scr:** shouldn't happen, it's signed. If a *modified* unsigned build was
  deployed, re-deploy the signed `dist/win` binaries (signing is a `-dev`/build concern).
- **Screen on all night / burn-in:** the rest path failed, confirm the deployed `.scr` is the current
  signed build; `wv.log` should show `REST: … powering panel off` at the display-off mark.
- **Keep-awake gone after reboot:** Run key + SCRNSAVE.EXE can get wiped, that's why we also set the
  Startup shortcut. Re-launch + re-apply.

## Honesty constraints
Don't claim a hardware dim (the on-screen dim is cosmetic CSS; real backlight-off = the display-off
timeout). Don't claim a `/remote-control` thread count (no programmatic enumeration). adom-rc is deprecated.
