📈 GH Trending Explorer 🎲 Surprise me

← all repos

ayandexyz / glance-linux

git clone https://github.com/ayandexyz/glance-linux.git v0.3.4 · 1mo ago

Face unlock for Linux with real liveness detection: a PAM module, a daemon, and an Omarchy lock screen indicator

+5
stars, 24h · #2,625
+~35
stars, 7 days · #3,269
+~150
stars, 30 days · #3,340
85
★ total · +35% this week
13
forks · 3 open issues

Star history (as recorded here)

2026-10-20 · 78 ★ 2026-10-22 · 85 ★
LanguagePython
LicenseMIT
Created2026-09-18 (1mo ago)
Last push1d ago
Watchers0
OwnerUser

Links

README excerpt
glance-linux 
Face unlock for Linux, with the liveness detection that face-unlock on Linux
usually doesn't have.
 .gif>)
A reimplementation of the liveness model from
Glance (macOS, MIT) around a PAM-based
unlock path. Not a port of the app — none of the Swift is portable — but the
part of Glance with real substance is: the five-cue liveness model that tells a
face from a photograph.
## Install
 [code] 
That adds the plugin, installs the daemon with every package pinned by
SHA-256, then sets up the service, PAM and lock screen -- one password prompt.
Run it again to update.
Then click the Glance icon in the top bar and choose **Glance panel → Enroll**:
your face, and a passphrase you choose.
To take it all back out:
 [code] 
It removes `pam_glance` from the lock-screen PAM stacks before deleting the
module (so no stack is left naming a missing one), restores the stock lock
screen, stops and deletes the service, removes the plugin, and deletes
`~/.local/share/glance` -- daemon, models, and your encrypted enrollment. It
asks once before touching anything.
## Why
Howdy already does face unlock on Arch. Its
well-known weakness is that it has essentially no liveness detection, so a
printed photo can unlock it. That is exactly the gap this fills.
The other half is that **Linux is a better platform for this than macOS**.
Glance's own README carries the caveat that *"macOS has no API that lets a
third-party app authorize a login, so Glance unlocks by typing your stored
password on the lock screen."* Linux has PAM. So this project:
- stores **no password** anywhere,
- injects **no keystrokes**,
- needs **no accessibility/input-injection permission**,
- and authorizes the session directly, through the same interface `sudo` and
 `hyprlock` already use.
That removes the single most sensitive secret in the macOS design.
### It is still not FaceID
A webcam sees a flat 2D image; an iPhone builds a 3D depth map. The liveness
cues here defeat a printed photo and a photo on a phone screen with reasonable
confidence. They do **not** reliably defeat a video of you. This is a
convenience feature, not a security upgrade.
Two guard rails come with that. Five failed scans in a row with a face in
view lock face unlock out for five minutes, so a looping hands-free lock
screen is not a free brute-force surface (`--max-failures`, `--lockout`). And
`SECURITY.md` spells out the trust boundary: the daemon runs as your user, so
code already running as you could subvert it — the same boundary Howdy and
the shell's own lock have, but one you should read before relying on it.
## Status
| Piece | State |
|---|---|
| Liveness model (`src/glanced/liveness/`) | **Complete, ported, tested** |
| Geometry / homography | Complete |
| Enrollment store (AES-256-GCM) | Complete |
| Alignment + ArcFace embedding | Complete |
| Camera capture, landmarking, scan loop | Complete |
| Daemon: sockets, arming, status | Complete, tested |
| `glancectl` (enroll, arm, authenticate, status, live, selft