Windows
Windows 10 or 11, 64-bit
Per-user install, no administrator rights. Builds are not code-signed yet: if SmartScreen warns, choose More info → Run anyway.
Eye Tracker watches your head and eyes through the webcam you already have and moves the mouse cursor, and keyboard focus, to the monitor you are looking at. No more dragging the mouse across screens before you can type.
Looking at display 2. The cursor and keyboard focus moved there.
A Ryzen 7 3700X desktop with a Logitech C920 webcam, during a normal working day.
A personal gaze model learns how your head and eyes move when you look at each of your monitors.
Follow a few dots with your eyes, about 15 seconds per monitor. Every desk gets its own profile, so docking at home and at work just works.
Look at another monitor for 0.3 s. Head pose and iris position are combined, and quick glances at your phone or keyboard are ignored.
The cursor lands where you left it on that monitor, and the last window you used there gets keyboard focus. No synthetic clicks.
These are the defaults Eye Tracker ships with. Each one can be adjusted in its settings window, or in a plain JSON file.
The last window you used on that monitor gets focus, so you can type the moment you look.
A glance has to hold this long. Hysteresis at the bezels stops flicker on the edge.
Nothing switches while you type or use the mouse, or for a moment after.
Copying from a document on the other screen? Your editor keeps focus while you pause to read.
Looking at your phone or keyboard is recognised from your calibrated range, and ignored.
Look at another pane of Windows Terminal, tmux or WezTerm, or another session in the Claude or ChatGPT/Codex desktop app, and the keyboard focus and cursor move there. Experimental.
Where you left it on that monitor, its centre, or the point you look at.
After a 10 s countdown the screen locks, or the displays switch off and wake when you return.
Releases the camera so the webcam light goes out. It stays on across restarts.
A second face behind you blanks the screens, notifies or locks. Faces are counted, never recognised.
When Teams, Zoom or another app needs the camera, tracking pauses until the call ends.
Each time you move the mouse somewhere and stop, the calibration gets a little better.
Two, three or more monitors, side by side, stacked, or a laptop below an external screen.
An adaptive frame rate and a motion gate that skips unchanged frames keep CPU near half a percent.
Quietly in the tray on Windows, macOS and Linux. The setup wizard asks.
Bind pause, privacy and calibration to your own shortcuts or scripts.
eye-tracker ctlGlobal hotkeys use Ctrl+Alt+Win on Windows, ⌃⌥⌘ on macOS and Ctrl+Alt+Super on Linux, so they never type a character on any keyboard layout. See the full configuration reference.
Eye Tracker sees your face all day, so privacy is designed in, and anyone can check it.
The face-landmark model comes from Google's MediaPipe (Apache-2.0), but its runtime contains a usage logger that connects to Google's servers. Eye Tracker runs the same model through OpenCV instead, with identical results, and the runtime is not shipped.
Every release is scanned for networking codeNo telemetry, no update checks, no accounts. CI fails on any networking code, in the source and in every bundled library.
Analysed in memory for a few milliseconds and never written to disk.
Head angles, iris ratios and screen points in plain JSON you can read. No images.
The camera device is released, so the webcam light goes out.
Typing is detected from the system's idle timer, never by reading keys.
Glance Switch inspired this project. Here is how they differ, based on the features listed on glanceswitch.com in October 2026.
| Feature | Eye Tracker | Glance Switch |
|---|---|---|
| Platforms | Windows, macOS 14+ (Apple silicon; Intel from source), Linux | macOS 14+ (Apple silicon and Intel) |
| Price | Free, MIT licence | $14.99 one-time |
| Source code | Open | Closed |
| Network use | None | Licence key check and daily update check |
| Tracking | Head pose + iris landmarks | Head pose (+ eye position for panes) |
| Split-pane focus in terminals and editors | Experimental: Windows Terminal, tmux, WezTerm, Claude and ChatGPT/Codex desktop apps (code editors next) | Yes |
| Learns from your mouse use | Yes | Yes (from clicks) |
| Walk-away lock / displays off | Yes | Not listed |
| Shoulder-surfer guard | Yes | Not listed |
| Automatic camera hand-off to calls | Windows, Linux (app list on macOS) | Not listed |
Free and open source. Released October 1, 2026. Your system is selected.
Windows 10 or 11, 64-bit
Per-user install, no administrator rights. Builds are not code-signed yet: if SmartScreen warns, choose More info → Run anyway.
macOS 14 or later, Apple silicon
Not notarised yet: the first time, right-click the app and choose Open. Intel Macs can run from source.
x86_64, glibc 2.35+ (Ubuntu 22.04 or newer)
Full features on X11. On Wayland the cursor follows on sway and Hyprland (or with ydotool); see the platform notes.
Prefer to run from source?You need Git and uv. Intel Macs use this route too.
git clone https://github.com/bugraskl/eye-tracker.git
cd eye-tracker
uv sync
uv run eye-tracker
Yes. Strong reflections can hide the irises; if the calibration grade is poor, tilt the camera or the lamp slightly.
Switching needs two or more monitors, but walk-away lock, privacy mode and the shoulder guard work with one.
No. Nothing switches while you type (and for 2 s after), while you use the mouse (1.5 s), or while you pause to read the other monitor during typing (6 s). All of these are adjustable.
Glances away from every monitor are recognised from your calibrated range of head and eye movement, and ignored.
Yes, experimentally. Turn on Follow split panes and the pane you look at gets the keyboard focus in Windows Terminal, tmux and WezTerm. On Windows you can also opt in for two Claude sessions side by side or a ChatGPT/Codex conversation next to its side chat. Panes must be large enough for your calibration's accuracy, and nothing switches while you type. Support for VS Code, Cursor, Antigravity and JetBrains IDEs is next.
No. Frames exist only in memory for a few milliseconds while they are analysed. Nothing is written to disk or sent anywhere.
Any webcam works, built-in or external. Place it where it stays, ideally centred above your monitors, and recalibrate if you move it.
Free, open source and private by design. Setup takes about a minute.