DimmerBeyond is a Windows Forms screen dimmer for Windows that overlays black, click-through forms on each connected display and lets you control per-display dimming from the system tray.
- Per-display opacity control from tray menu
- Per-display enable and disable toggle
- Multi-monitor support with live display change detection
- Persisted settings per physical display device name
- Single-instance app behavior (mutex)
- .NET 8
- Windows Forms
- C#
- On startup, the app loads cached screen settings.
- It discovers currently connected screens.
- It creates or syncs one overlay form per active screen.
- It creates tray controls for each active display.
- On slider or checkbox changes, in-memory settings update and are saved when tray closes.
- On display topology changes, overlays and tray controls are refreshed.
Settings are stored at:
C:\ProgramData\RGAppData\DimmerBeyond\DimmerCache.json
Cached values are keyed by Windows screen DeviceName, and each entry stores:
OpacityPercent(0 to 80)Enabled(true or false)
Notes:
- If a display is disconnected, its cached settings are retained.
- If a new display is detected, it starts with fallback opacity from
Constants.DefaultOpacityandEnabled = true.
From repository root:
dotnet build RGsScreenDimmer.slnFrom project folder:
cd DimmerBeyond
dotnet runcd DimmerBeyond
dotnet publish -c Release -r win-x86 --self-contained false- Left-click tray icon to open controls
- For each display:
- Use checkbox to enable or disable dimming
- Use slider to set opacity
- Select Exit to close the app
- App is single-instance only.
- Opacity slider range is intentionally capped at 80.
- Overlay forms are top-most, borderless, and click-through.
- If settings do not seem updated, close the tray menu once after changes to force persistence.
- If monitor arrangement changes, wait briefly for Windows to raise display update events and for UI refresh to complete.
This project is licensed under the MIT License. See LICENSE.