r/SideProject • • 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

Code: https://github.com/fauzulkc/circle-lens

150 Upvotes

31 comments sorted by

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. 

2

u/amokerajvosa 1d ago

This is what I created for my teaching + this feature from OP.

1

u/TimelySecret729 23h ago

hi, does it work on Mac?

1

u/AtmosphereVirtual254 22h ago

That’s a clever activation gesture

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

u/asamirid 18h ago

works flawlessly, excellent lite tool, good job 👍👍..

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

u/geetarqueen 17h ago

I know many older people who can use this!!!

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/stormj 13h ago

Thats a really clever idea. I love that! I'm trying to avoid reading glasses haha so this could help

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

u/isitnameless 7h ago

Notevoo.com

1

u/romark17 6h ago

Nice app, congratulations!

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

u/LifeEnginer 1d ago

why not:"control" + "+"?

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

u/Due-Replacement236 16h ago

simplemente guau