r/SideProject • u/ridkc • 1d ago
I made a free screen magnifier you open by circling your mouse twice: no admin, no account, no CPU while the mouse is still
I kept zooming my whole screen to read one line, then zooming back, and every time it wrecked the layout of everything else. I also didn't want to lean in or reach for reading glasses. So I built a lens: circle the mouse twice (or tap Shift twice), and a magnifier opens at the pointer and follows it. Circle twice again to close it.
Heads-up first: the exe isn't code-signed yet, so Windows shows "Windows protected your PC" the first time (More info → Run anyway). The other limits are at the end.
What it is:
- **Windows app**, Go with plain Win32 calls.
- Size and speed: a 4.5 MB download, about 13 MB of RAM while it waits, no CPU while the mouse is still, and a frame on every display refresh. Zoom 1.2× to 4× (Ctrl + wheel), and it eases out when you move fast.
- Install and updates: it installs for you only, with no admin rights. Updates come from GitHub releases, and you can switch them off.
- **Browser extension** for Chrome and Edge (Firefox as a temporary add-on for now). Alt+Shift+L, or Option+Shift+L on a Mac.
- **A 7 KB gzipped script** (`npm i circle-lens`, or one script tag) that gives your own site's visitors the lens. It shows a live copy of the page styled by the page's own CSS, so text stays sharp at any zoom.
The gesture took the most work. It counts how far the pointer turns, and needs the last turn to close on itself and be round. Sharp reversals and pauses start it over, so reading sweeps and reaching for buttons don't count. In simulated hand-drawn circles it catches 99.8 to 100%, with no accidental opens at 1½ circles or more.
Known limits:
- Defender's machine-learning check sometimes flags new unsigned builds like this one. The README explains why, and lists what the app does and doesn't do. Release files since 1.2.1 carry GitHub build attestations (`gh attestation verify`).
- The extension isn't in the stores yet; it loads from the zip. The winget listing is waiting for review.
- There's no Mac app yet. The extension works in Chrome on a Mac.
It's MIT licensed, with no account and no tracking. If it ever opens when you didn't mean it to, tell me: in my tests it didn't at 1½ circles or more.
Page and download: https://fauzul.com/circle-lens
How it was built: https://fauzul.com/blog/circle-lens
1
1
1
u/kai_mercer19 19h ago
can the mouse gesture be switched off while keeping the Shift shortcut? could be useful if someone's normal pointer movement keeps triggering it
1
1
u/LividIllustrator8915 18h ago
Really refreshing to see someone build a native desktop utility with Go and direct Win32 calls instead of packaging an entire 200MB Chromium instance just to render a lens. 13 MB idle memory with zero idle CPU is proper software craftsmanship.
Curious how you handled mixed-DPI multi-monitor setups with the circle gesture. Win32 mouse hook coordinates across monitors with different scaling factors (like a 4K 150% main display alongside a 1080p 100% secondary display) can do weird cursor jump calculations if the process DPI awareness isn't set to Per-Monitor V2. Did you have to normalize the cursor velocity vectors per-monitor, or is it running at raw screen coordinates?
1
1
u/QuanTradin 16h ago
circle twice to open is a nice gesture, no hotkey to remember. the no CPU while the mouse is still part is what would get me to leave it running all day.
1
u/sumit_654 14h ago
make a modification where we can show the mirror image. I have some bad experience in some pirated corn websites, where the subtitles are mirrored.
1
u/software_engineeer 11h ago
Maybe you just need to increase DPI on your screen to avoid zooming text?
1
u/Acrobatic-Struggle48 9h ago
Great tool! With a multi-monitor array this is handy for the hard to see corners of my monitors.
1
1
1
u/TanukiTrix 5h ago
This is pretty clever.
know, it's one of the issues that I keep having where I create infographics and sometimes the text is really small. So I usually attach it inside of ChatGPT so I can click on it and make it bigger.
1
0
u/pokeguy_lab 21h ago
Tuning pointer turn angles so accidental gestures don't trigger it is such a clever detail. Super clean implementation, especially keeping it down to ~13MB RAM with plain Win32 calls.
1
5
u/Diver-Interesting 1d ago
Cool idea! Just curious, is there shortcut in windows OS for zooming? In mac i can hold ctrl and do scroll up/down gesture in the trackpad to zoom in/out.