Skip to content

deklol/MatrixRainer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MatrixRainer icon

MatrixRainer

Latest release Platform Language .NET Framework 4.8 No dependencies Exe size License

I couldn't find a good Matrix rain screensaver, so I made one myself.
No one should be paying for shitty screensavers in 2026!

MatrixRainer glass mode raining over two monitors while a video plays behind it

Glass mode with blur, running across two monitors while a video plays underneath.


MatrixRainer is a Matrix digital rain screensaver for Windows 11, built as a tiny tray app instead of a legacy .scr file. It sleeps in the notification area doing almost literally nothing, and when your mouse and keyboard have been idle for a configurable time (default 60 minutes) it covers your monitors with rain. Any input dismisses it instantly.

Features

  • Film-style rain - mirrored half-width katakana with a hot white-green leading glyph, fading trails, and random glyph mutation, on a fixed grid like the movies
  • Multi-monitor - detects every display with its resolution and orientation (landscape and portrait both supported), runs on all of them or just the ones you pick, each with its own random rain, started in sync
  • Glass mode - see your live desktop through the rain, with an adjustable darkness tint and optional frosted blur
  • GPU composited - rain frames are presented through a DirectComposition swapchain; nothing about the animation depends on what is happening behind it
  • Gamer safe - idle detection is a passive kernel counter read, not an input hook, so it cannot add input latency and gives anti-cheat nothing to object to; it also refuses to trigger over fullscreen D3D apps
  • Tiny - a single ~58 KB executable, no runtime to install, no dependencies, ~28 MB RAM idling in the tray

Install

  1. Grab the zip from the latest release
  2. Unzip anywhere and run MatrixRainer.exe
  3. A green M appears in the system tray - right-click it:
    • Start now - start the rain immediately (any input stops it)
    • Settings... - everything configurable lives here
    • Pause idle detection - temporarily disarm
    • Exit

On first run it registers itself to start when you sign in (toggle in Settings). Settings are stored in %APPDATA%\MatrixRainer\settings.ini.

Settings

Setting What it does
Idle minutes How long mouse and keyboard must be untouched before the rain starts (1-1440)
Monitors Detected displays with resolution and orientation; check the ones you want, none checked means all
Solid / Glass Classic black background, or see the live desktop through the rain
Darkness How dark the glass tint is (15% = nearly clear, 95% = nearly black)
Blur Frosted-glass blur of the desktop behind (DWM accent, may cost fps)
Frame rate Animation rate, 10-60 fps
Glyph size Grid cell size in pixels, 12-32
Start with Windows Per-user Run registry entry, no admin needed

How it works

Idle detection. A single GetLastInputInfo read - a passive kernel counter that covers mouse and keyboard system-wide - polled adaptively: up to 30 seconds between checks while the deadline is far away. There are no SetWindowsHookEx hooks, no raw input registration, no process access. While the rain is not showing, the app is one sleeping process.

Rendering. The simulation keeps a glyph grid per monitor; each column has a bright head that sweeps down and leaves a fading trail, and lit glyphs occasionally mutate. Glyphs are pre-rendered once (MS Gothic half-width katakana, mirrored like the film, glow baked in) into premultiplied pixel tiles. Each frame, a small software blitter blends only the changed cells into a memory canvas (~1 ms per frame), and just the changed region is uploaded into a premultiplied-alpha DXGI flip-model swapchain bound to the window through DirectComposition. DWM composites that texture over the desktop on the GPU. The window has no redirection bitmap (WS_EX_NOREDIRECTIONBITMAP), so no part of the pipeline is CPU-composited - glass transparency is native alpha blending, not a layered-window trick.

Dismissal failsafes. Idle time is re-read immediately before the rain appears; it will not appear over fullscreen D3D apps, presentations, or the lock screen; after any dismissal, fresh input is required before the countdown re-arms; while active, a 100 ms system-wide watchdog plus per-window handlers close everything on any input on any monitor; a render failure closes the windows rather than leaving them stuck.

Performance

Measured with the built-in harness (MatrixRainer.exe --render-diag, 1920x1080 window, 60 fps target) against the naive GDI+ implementation this project started with:

Renderer Idle desktop Busy desktop (video + terminals)
GDI+ DrawImage (old) 37 ms/frame, ~25 fps 996 ms/frame, 1.2 fps
Software blitter + DirectComposition (current) 1.0 ms/frame 13-16 ms/frame, ~34 fps

The old approach is kept in the source only as a fallback for machines without a working Direct3D 11 stack.

Building

.\build.ps1

That's the whole build. It uses the C# compiler that ships inside every Windows installation (.NET Framework 4.8), so there is nothing to install - no SDK, no NuGet, no Visual Studio. tools\make-icon.ps1 regenerates the icon. Diagnostics: --diag (monitors and idle state), --render-diag (renderer benchmark); both write to %TEMP%.

License

MIT

About

Matrix digital rain screensaver for Windows 11. Tiny tray app, GPU composited, multi-monitor, glass mode. No one should be paying for shitty screensavers in 2026.

Topics

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors