Look at a screen. Your cursor follows.

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.

Version 0.2.0 · Free and open source, MIT licence · Windows 10/11, macOS 14+, Linux · Works fully offline

Displays Tracking

Looking at display 2. The cursor and keyboard focus moved there.

Measured, not promised

A Ryzen 7 3700X desktop with a Logitech C920 webcam, during a normal working day.

CPU, whole machine
0.55%8.8% of one core
Memory
~200 MBresident
Analysis per frame
11 msface, irises, head pose
Network connections
0enforced in CI
Face landmarks
478both irises included
Calibration
~15 sper monitor

Calibrate once. Then just look.

A personal gaze model learns how your head and eyes move when you look at each of your monitors.

  1. Calibrate

    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.

  2. Glance

    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.

  3. Type

    The cursor lands where you left it on that monitor, and the last window you used there gets keyboard focus. No synthetic clicks.

Every feature is a setting you can change

These are the defaults Eye Tracker ships with. Each one can be adjusted in its settings window, or in a plain JSON file.

Switching

  • Keyboard focus follows

    The last window you used on that monitor gets focus, so you can type the moment you look.

    On
  • Dwell before switching

    A glance has to hold this long. Hysteresis at the bezels stops flicker on the edge.

    300 ms
  • Grace while you work

    Nothing switches while you type or use the mouse, or for a moment after.

    2 s / 1.5 s
  • Reading-aware

    Copying from a document on the other screen? Your editor keeps focus while you pause to read.

    6 s
  • Ignore glances away

    Looking at your phone or keyboard is recognised from your calibrated range, and ignored.

    Always
  • Follow split panes

    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.

    Off
  • Cursor lands at

    Where you left it on that monitor, its centre, or the point you look at.

    Last position

Presence and privacy

  • When you walk away

    After a 10 s countdown the screen locks, or the displays switch off and wake when you return.

    Lock after 45 s
  • Privacy mode

    Releases the camera so the webcam light goes out. It stays on across restarts.

    Ctrl+Alt+Win+P
  • Shoulder guard

    A second face behind you blanks the screens, notifies or locks. Faces are counted, never recognised.

    Off
  • Step aside for calls

    When Teams, Zoom or another app needs the camera, tracking pauses until the call ends.

    On
  • Learn from the mouse

    Each time you move the mouse somewhere and stop, the calibration gets a little better.

    On

System

  • Monitor layout

    Two, three or more monitors, side by side, stacked, or a laptop below an external screen.

    Any
  • Frame-rate profile

    An adaptive frame rate and a motion gate that skips unchanged frames keep CPU near half a percent.

    Balanced
  • Start at login

    Quietly in the tray on Windows, macOS and Linux. The setup wizard asks.

    Your choice
  • Command line

    Bind pause, privacy and calibration to your own shortcuts or scripts.

    eye-tracker ctl

Global 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.

A camera app you can actually trust

Eye Tracker sees your face all day, so privacy is designed in, and anyone can check it.

We removed MediaPipe's runtime because it phones home

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 code
  • Network access

    No telemetry, no update checks, no accounts. CI fails on any networking code, in the source and in every bundled library.

    None
  • Camera frames

    Analysed in memory for a few milliseconds and never written to disk.

    Never stored
  • Calibration file

    Head angles, iris ratios and screen points in plain JSON you can read. No images.

    Numbers only
  • Privacy mode, pause, locked screen

    The camera device is released, so the webcam light goes out.

    Camera off
  • Keystrokes

    Typing is detected from the system's idle timer, never by reading keys.

    Never read

Open, free and on every desktop

Glance Switch inspired this project. Here is how they differ, based on the features listed on glanceswitch.com in October 2026.

FeatureEye TrackerGlance Switch
PlatformsWindows, macOS 14+ (Apple silicon; Intel from source), LinuxmacOS 14+ (Apple silicon and Intel)
PriceFree, MIT licence$14.99 one-time
Source codeOpenClosed
Network useNoneLicence key check and daily update check
TrackingHead pose + iris landmarksHead pose (+ eye position for panes)
Split-pane focus in terminals and editorsExperimental: Windows Terminal, tmux, WezTerm, Claude and ChatGPT/Codex desktop apps (code editors next)Yes
Learns from your mouse useYesYes (from clicks)
Walk-away lock / displays offYesNot listed
Shoulder-surfer guardYesNot listed
Automatic camera hand-off to callsWindows, Linux (app list on macOS)Not listed

Get Eye Tracker 0.2.0

Free and open source. Released October 1, 2026. Your system is selected.

Your system

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.

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

Questions people ask

Does it work with glasses?

Yes. Strong reflections can hide the irises; if the calibration grade is poor, tilt the camera or the lamp slightly.

I have one monitor. Is this useful?

Switching needs two or more monitors, but walk-away lock, privacy mode and the shoulder guard work with one.

Will it steal focus while I'm typing?

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.

What happens when I look at my phone?

Glances away from every monitor are recognised from your calibrated range of head and eye movement, and ignored.

Can it switch between split panes or AI sessions?

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.

Does it record me?

No. Frames exist only in memory for a few milliseconds while they are analysed. Nothing is written to disk or sent anywhere.

Which webcam do I need?

Any webcam works, built-in or external. Place it where it stays, ideally centred above your monitors, and recalibrate if you move it.

Give your mouse a break

Free, open source and private by design. Setup takes about a minute.