Windows
This page documents how TomorrowOS works on Windows today, including install options, on-device setup, supported commands, playback behaviour, and deploy notes. Current support: TomorrowOS Windows Player V1 targets Windows 11 Pro (x64) as a native signage appliance. Windows 10, Home editions, and ARM64 are out of V1 scope unless separately certified. Windows is a first-class TomorrowOS player platform alongside Samsung Tizen and BrightSign. Support still depends on PC / SoC hardware, Windows edition + build, GPU / display drivers, and WebView2 Runtime — always verify on the real machine before claiming production support.Purpose
This page covers:- How to install the TomorrowOS Windows player
- How the Windows player boots (Watchdog → Player → WebView2)
- CMS URL, orientation, display, and maintenance passcode setup
- Signage hardening (Prepare Windows /
/harden) - Device identification and capabilities
- Content policy / playback behaviour
- Widget and package handling
- Display controls (reboot, on/off timer)
- Screenshots
- Deploy and certification checklist
Core principle
Windows is capable, but hardware + edition + WebView2 matter.A feature may work on one PC / GPU stack and fail on another. Prefer:
- Check
device.info.getCapabilities - Test the real playlist on that machine + Windows build
- Only then mark the combination production-ready
Install the player
Supported baseline: Windows 11 Pro x64 with .NET-compatible runtime packaging and WebView2 Evergreen Runtime.Option A — Interactive installer (recommended for first device)
- Build or obtain
TomorrowOS-Windows-Setup.exefrom the Windows player repository (npm run build→build/windows/). - Run the installer as administrator.
- Complete the wizard:
- CMS endpoint
- Orientation
- Playback display index
- Maintenance passcode
- Optional signage hardening (sleep / screensaver / overlays / taskbar)
- After install, Watchdog autostarts at login and launches the Player.
- Pair with the six-character code shown on screen (Control Panel → Pair).
Option B — Silent / fleet install
Each device stores its own hashed maintenance passcode locally. There is no universal master password.
Uninstall
RunTomorrowOS.Uninstall.exe from the install folder. Confirm Uninstall TomorrowOS Windows, wait for progress, then Uninstall successful.
Local / lab without installer
For development only, publish Player + Watchdog to a folder and launchTomorrowOS.Player.exe (see the Windows repo README.md). Set core/config.js cmsEndpoint first, or leave it empty to use the on-device CMS setup UI.
Runtime architecture
TomorrowOS on Windows is a native .NET host that embeds the shared HTML player in WebView2:
Boot path:
Important behaviour:
- Installer (or
config.js) supplies CMS URL + orientation when possible - If no CMS URL is stored yet, the player can show an on-device CMS setup screen
- Platform id reported to CMS:
windows - Press Ctrl+Shift+Alt+M, then enter the maintenance passcode, to exit / restart Windows from the appliance UI
- Lab fallback passcode (only if installer settings are missing):
tomorrow - Playback is policy-driven through
device.content.setPolicy
Configure CMS URL and orientation
Windows can be configured at install time (like BrightSign’sconfig.js) or on-device when the CMS URL is empty (closer to Tizen’s setup UI).
Via installer / config.js
Setup writes (or overwrites) config.js:
Hosted CMS
Use the same CMS origin you want the device to pair with (public HTTPS or reachable LAN URL). Unlike BrightSign’s Control Panel zip download path, Windows V1 is currently distributed as the native Setup binary from the Windows player repo / your own release channel — confirm how your fleet obtains the.exe.
Local testing
Do not enterlocalhost or 127.0.0.1 as the CMS URL when the player runs on a different machine than the CMS.
For local testing against a CMS on your laptop, use that computer’s LAN IP, for example:
Device identification
device.info.get is backed by the native host (DeviceInfoService / WMI + registry).
Typical fields:
deviceIdprefers a stable SMBIOS UUID /MachineGuid(pairing identity)model/serialNumbercome from hardware / BIOS when available- Use model + Windows edition/build + GPU together when diagnosing playback or codec issues
Capability map
On a real Windows player runtime (WebView2 host bridge present),device.info.getCapabilities currently reports:
Always trust the live capability response over this table.
Content and playback
Playback is policy-driven:- Images / UI / V1 video play inside WebView2 (HTML / Media element path)
- Native Media Foundation dual-buffer video can replace the HTML video path later without changing the CMS contract
- Black-gap avoidance keeps the previous picture up until the next item is ready — see
docs/guides/black-gap-playback.md - Widgets (
.zip/.wgt) download, extract locally via the host bridge and load in an iframe — seedocs/guides/widget-zip-packages.md - Media is cached under
%ProgramData%\TomorrowOS\storage - HTML widgets are architecturally allowed via WebView2 isolation but are not the V1 certification focus
Display control
Reboot
device.reboot bridge. The player tries to save resume state before restarting.
On / off timer
display.setMuted) while the device stays connected — not a full Windows power-off of the PC. Capability is gated by canSetDisplayMute.
Screenshots
Maintenance and appliance mode
Ordinary users should not be able to leave the player. Technicians:- Press Ctrl+Shift+Alt+M
- Enter the device maintenance passcode set at install time
- Exit / restart as needed
Hardening (Prepare Windows)
Hardening turns a normal Windows 11 Pro PC into a dedicated signage appliance: the player stays on top, the screen stays awake, and consumer Windows UI (toasts, Game Bar, screensaver, sleep) stays out of the way. It does not disable Windows security updates. Updates stay on; the optional “maintenance window” toggle only steers when they prefer to install.When it is applied
Dedicated production screens should use hardening (wizard defaults or
/harden). Shared lab PCs should not.
What each toggle does
Installer step label: Prepare Windows. Critical items are strongly recommended for production; turning them off shows a warning in the wizard.
Notes:
- Screensaver ≠ sleep ≠ display off. Disabling the screensaver alone will not keep a PC awake; use the sleep and display-off toggles too.
- Uninstall / restore paths try to reverse overlay and power backups where Setup saved them — do not assume every fleet image restores identically; re-check power settings after reimage.
- Game bar cannot be completely blocked because Win+G is handled by the Windows Xbox Gaming Overlay system component, rather than as a normal application keyboard shortcut. Therefore, the current workaround is to detect and close Game Bar immediately after Windows launches it.
- Group Policy / Intune / RMM policies on the machine can still override local hardening. For large fleets, align those rings with the same goals.
Silent install mapping
What hardening is not
- Not a full kiosk lockdown / Assigned Access replacement (use Windows kiosk / shell launcher policies separately if you need that)
- Not a CMS feature — settings live on the PC via Setup +
%ProgramData%\TomorrowOS\settings.json - Not a substitute for a maintenance passcode — technicians still use Ctrl+Shift+Alt+M + passcode to exit
Supported baseline
V1 targets:- Windows 11 Pro x64
- WebView2 Evergreen Runtime
- Native Setup installer (interactive or silent)
- Windows 10
- Windows Home / S Mode
- ARM64
Deploy checklist
- Obtain
TomorrowOS-Windows-Setup.exe(build from the Windows repo or your release channel) - Confirm the target PC is Windows 11 Pro x64 with WebView2 Runtime
- Install:
- Interactive wizard, or
- Silent flags with
/cms,/passcode,/orientation, optional/harden
- Confirm Watchdog starts at login and Player opens fullscreen on the chosen display
- Confirm the player reaches pairing / brand idle
- Pair with the 6-character code in the Control Panel
- Publish a small image + video playlist and confirm playback
- Test maintenance hotkey + passcode exit
- Record model + Windows edition/build + GPU for certification notes
Certification tests for Windows
Minimum tests per machine class:- Install (interactive) completes and Watchdog autostarts
- Silent install with
/cms+/passcodeworks - Boot to player UI / brand idle / pairing
- CMS URL save rejects unreachable / invalid values (when using on-device setup)
- Pair with CMS (
platform=windows) -
device.info.getreturns model / serial / OS edition -
device.info.getCapabilitieslooks correct - Image playlist playback
- Video playlist playback (H.264) in WebView2
- Image ↔ video transitions without black gaps
- Widget
.zip/.wgtplayback (if used) - Offline / cached replay after disconnect
- Reboot + resume
- Screenshot capture
- On/off timer (quiet / black overlay)
- Portrait orientation (if used)
- Multi-monitor: correct
displayIndexafter reboot - Maintenance hotkey + passcode exit
- Hardening keeps the appliance from sleeping / showing overlays (if applied)
-
/hardensilent install applies power + overlay settings as expected - Developer / shared install leaves Windows usable (hardening off)
Related docs
docs/api/overview.md— command surfacedocs/guides/black-gap-playback.md— transition behaviourdocs/guides/widget-zip-packages.md— widget zip handlingdocs/guides/assets-and-atomic-activation.md— media cache / publish flow- Windows player repository
README.md— build, silent flags, lab launch