SideScreenUtil turns a selected Windows display into a black-background, multi-window monitoring canvas. It is designed for making practical use of an OLED secondary display while reducing static, uneven pixel wear.
No application can guarantee that an OLED panel will never develop burn-in. Keep the physical display brightness reasonable, use the panel's built-in pixel-shift and pixel-refresh features, and avoid leaving unchanged content visible for long periods.
Select and configure windows on the primary display, then monitor them in a flexible layout on a black secondary-screen canvas. SideScreenUtil can move the rendered content gradually and apply visual filters to reduce long-running, spatially uneven pixel use.
- Monitor any number of application windows at the same time.
- Add, remove, or switch source windows without restarting monitoring mode.
- Capture each window with Windows Graphics Capture, with an automatic
PrintWindowfallback. - Preserve the source windows' relative positions, or use grid, horizontal, vertical, and manual layouts.
- Press
Ctrl+Alt+Lto edit the layout directly on the secondary display. Pointer-triggered hiding is temporarily suspended while editing. - Use original-color, grayscale, fixed monochrome, cycling monochrome, contour, or cycling-contour filters.
- Adjust contour sensitivity and width for more legible small text.
- Reduce brightness, drift the canvas with smooth screen-edge rebounds, vary its size slightly, and schedule fully black rest periods.
- Switch live between a memory-saving one-megapixel-per-window capture limit and full source-window resolution.
- Hide the monitoring canvas as soon as the pointer enters the selected display, and restore it when the pointer leaves.
- Optionally start with Windows and launch silently into the system tray.
- Load the interface language from extensible JSON language packs.
- 64-bit Windows 10 version 1903 or newer, or Windows 11
- Python 3.10 or newer when running the full edition from source
Every GitHub Release contains two maintained Windows editions. They implement the same core multi-window monitoring and OLED-protection workflow and are updated in parallel.
| Download | Edition | Best for |
|---|---|---|
SideScreenUtil.exe |
Full compatibility (Python/Qt) | The established implementation and widest compatibility |
SideScreenUtil-native.exe |
Compact native (Rust/Win32) | A sub-megabyte download and much lower idle memory use |
The editions store their settings separately, so they can be installed and tested side by side. See NATIVE_PREVIEW.md for native build details.
.\scripts\setup.ps1
.\scripts\run.ps1If Python is not available on PATH:
.\scripts\setup.ps1 -PythonExe "C:\Path\To\python.exe"- Select the OLED or other target display.
- Select one or more source windows.
- Choose an initial layout and visual filter.
- Click Start secondary-screen mode.
- Press
Ctrl+Alt+Lto move and resize monitored windows directly on the target display; press it again to save. - Move the pointer onto the target display whenever you need to interact with the normal desktop.
The Protection tab contains the capture-resolution switch:
- Memory saver limits each cached source frame to roughly one megapixel.
- Full resolution retains every source pixel and uses more memory.
The switch takes effect on the next captured frame and does not require restarting monitoring mode.
The Settings tab controls per-user Windows startup and silent startup. Silent startup keeps the control panel hidden on the next launch while leaving the system tray icon available. The same page shows the installed version, edition, platform, and license.
The included languages are Simplified Chinese and English. Select a language in the top-right corner of the control panel and restart SideScreenUtil to apply it throughout the interface.
Language packs are JSON files stored in assets/i18n. The build automatically discovers and bundles every *.json file in that directory. See DEVELOPMENT.md for the schema and contribution steps.
.\scripts\build.ps1
.\scripts\build-native.ps1The release executables are written to dist\SideScreenUtil.exe and
dist\SideScreenUtil-native.exe.
Prebuilt Windows executables are available from the project's GitHub Releases. Each release contains both editions and a separate SHA-256 checksum for each executable.
Smoke tests for the packaged application:
.\dist\SideScreenUtil.exe --smoke-test
.\dist\SideScreenUtil.exe --capture-smoke-test
.\dist\SideScreenUtil-native.exe --smoke-test
.\dist\SideScreenUtil-native.exe --capture-smoke-test
.\dist\SideScreenUtil-native.exe --ui-smoke-test.\.venv\Scripts\python.exe -m pytest
.\.venv\Scripts\python.exe -m ruff check .More architecture, localization, testing, and release information is available in DEVELOPMENT.md.
Differential OLED aging is associated with long-running, spatially uneven pixel use. SideScreenUtil therefore prioritizes lower output brightness, a smaller lit area, movement of fixed boundaries, and fully black rest periods. Hue cycling distributes color-channel use but does not eliminate differences in subpixel lifetime.
Background reading:
- Lifetime modeling for organic light-emitting diodes: a review and analysis
- Impact of long-term stress on the light output of a WRGB AMOLED display
- OpenCV Canny edge detector principles
The contour implementation uses a lightweight, one-sided NumPy luminance gradient. Adjustable contour width expands only toward equally bright or brighter pixels, keeping strokes inside bright objects and text instead of bleeding into the black background. OpenCV is not included in the final executable.
- DRM-protected video cannot normally be captured.
- Windows running with higher privileges than SideScreenUtil may require SideScreenUtil to run at the same privilege level.
- A minimized application may stop submitting new frames. Ordinary window occlusion generally does not stop Windows Graphics Capture.
- Full-resolution capture can use considerably more memory when several large source windows are selected.
The repository vendors the native WGC extension from windows-capture 2.0.0 under its MIT license. The license is stored at src\sidescreen\native\WINDOWS_CAPTURE_LICENSE.txt. The public Python wrapper depends on OpenCV, but SideScreenUtil loads only the native extension and does not ship OpenCV.
SideScreenUtil is released under the MIT License.
