Remote Support Console
Decides from pixels alone whether a remote machine is in use, locked or black, arranged around the one mistake that would type a password into somebody’s session.
- Area
- Operations & tools
- Main stack
- C# · .NET 9 · WPF · xUnit
Key features
- • Four answers, not two: in use, locked, black, or nothing handed in
- • The expensive mistake is weighed differently from the cheap one, and the corpus proves which is which
- • Frames drawn in code from a fixed seed, five of them reproducing a real misread
- • The rules that were wrong stay runnable, so an improvement is a count and not a claim
- • Decided on brightness rather than colour, so a theme cannot change the answer
About the project
Inside a remote-desktop session there is nothing to query, no automation tree, no API, no window titles: the whole session is one bitmap being repainted, so “is anybody logged in?” has to be answered by looking.
The two possible mistakes do not cost the same. Reading a locked machine as in use wastes a click; reading a machine somebody is working in as locked means sending Ctrl+Alt+Del at their session and typing a password into whatever has focus. Everything is arranged around that asymmetry.
The deciding lives in a library of 875 lines with not one using directive — no WPF, no Win32 — so it is built, tested and measured on Linux in CI, against a corpus of frames drawn in code from a fixed seed. Five of those frames reproduce a specific mistake made on a real machine. The version of the rules that was wrong is kept runnable beside the one that ships, so every improvement is a number rather than a claim.
Technologies used
C#
.NET 9
WPF
xUnit
Image analysis
GitHub Actions