Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SideScreenUtil

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.

Feature overview

SideScreenUtil control panel sending selected windows to a movable, black-background OLED monitoring canvas

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.

Highlights

  • 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 PrintWindow fallback.
  • Preserve the source windows' relative positions, or use grid, horizontal, vertical, and manual layouts.
  • Press Ctrl+Alt+L to 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, 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.
  • Load the interface language from extensible JSON language packs.

Requirements

  • 64-bit Windows 10 version 1903 or newer, or Windows 11
  • Python 3.10 or newer when running from source

Run from source

.\scripts\setup.ps1
.\scripts\run.ps1

If Python is not available on PATH:

.\scripts\setup.ps1 -PythonExe "C:\Path\To\python.exe"

Basic operation

  1. Select the OLED or other target display.
  2. Select one or more source windows.
  3. Choose an initial layout and visual filter.
  4. Click Start secondary-screen mode.
  5. Press Ctrl+Alt+L to move and resize monitored windows directly on the target display; press it again to save.
  6. 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.

Languages

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.

Build the EXE

.\scripts\build.ps1

The release executable is written to dist\SideScreenUtil.exe.

Prebuilt Windows executables are available from the project's GitHub Releases. Each release also includes a SHA-256 checksum file.

Smoke tests for the packaged application:

.\dist\SideScreenUtil.exe --smoke-test
.\dist\SideScreenUtil.exe --capture-smoke-test

Development checks

.\.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.

OLED design rationale

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:

The contour implementation uses a lightweight NumPy gradient and adjustable dilation. OpenCV is not included in the final executable.

Known limitations

  • 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.

Third-party component

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.

License

SideScreenUtil is released under the MIT License.

About

OLED-friendly multi-window secondary display monitor for Windows.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages