eliott 7a4db52140 chore: remove internal dev artifacts
Remove planning docs, phase summaries, old installers, and redundant
documentation. These were development-phase artifacts that don't belong
in the shipped project. install.sh replaces setup.sh and
install-system.sh. API docs can be generated with cargo doc.

Removed:
- .planning/ (37 files of threat modeling and review docs)
- CODING_STANDARDS.md, TESTING.md, CHANGELOG.md
- docs/API.md, docs/BENCHMARKS.md
- scripts/setup.sh, scripts/install-system.sh
- tests/PHASE*_TEST_SUMMARY.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:43:23 +02:00
2026-01-15 22:40:51 +01:00
2026-01-15 22:40:51 +01:00
2026-01-15 22:50:18 +01:00
2026-01-15 22:40:51 +01:00
2026-01-02 21:25:00 +01:00
2026-01-15 22:40:51 +01:00
2026-01-30 09:44:12 +01:00
2026-04-02 15:41:02 +02:00
2026-01-30 09:44:12 +01:00

Linux Hello Logo

Linux Hello

Windows Hello-style face authentication for Linux

Unlock your computer with your face using your laptop's IR camera. Works with GDM, SDDM, and LightDM — your password always works as a fallback.

License: GPL-3.0 Rust


How it works

  1. You lock your screen or log out
  2. The IR camera captures your face (invisible to you — just a brief red light)
  3. The ONNX neural network matches your face against your enrolled template
  4. If it's you, you're in. If not, type your password as usual.

Phone screens are invisible to IR, so photos on a phone can't fool it.


Tested on

Hardware OS Display Manager Status
Lenovo Yoga Pro 7 (Chicony IR camera) Zorin OS 17 GDM (GNOME) Working

Other laptops with Windows Hello-compatible IR cameras should work. GDM, SDDM, and LightDM are supported. If you test on different hardware, please open an issue to let us know.


Install

You need Rust and a Windows Hello-compatible IR camera.

git clone https://gitea.lab48.be/eliott/Linux-Hello.git
cd Linux-Hello
./install.sh

The installer handles everything: dependencies, build, ONNX models, IR emitter setup, face enrollment, and lock screen integration.

When it's done, lock your screen and look at the camera.

To uninstall:

./install.sh --uninstall

CLI commands

linux-hello enroll              # Enroll your face (5 frames)
linux-hello test                # Test authentication
linux-hello list                # Show enrolled templates
linux-hello remove default      # Remove a template
linux-hello remove --all        # Remove all templates
linux-hello detect --image pic.jpg --scores   # Detect faces in an image
linux-hello capture --count 5   # Capture raw frames
linux-hello status --camera     # Show camera info
linux-hello config              # Show current config

Configuration

Config lives at /etc/linux-hello/config.toml (system) or ~/.config/linux-hello/config.toml (user).

[camera]
device = "/dev/video2"          # Your IR camera (or "auto")
resolution = [640, 360]
fps = 15

[detection]
model = "blazeface"

[embedding]
model = "mobilefacenet"
distance_threshold = 0.6        # Lower = stricter matching

[anti_spoofing]
enabled = true
depth_check = false             # Disable if no depth camera
temporal_check = false          # Blink/movement (needs longer capture)
min_score = 0.7

Security

  • IR camera blocks phone/screen photo attacks (screens don't emit IR)
  • Anti-spoofing checks IR reflection patterns and skin texture
  • AES-256-GCM encrypted face templates with PBKDF2 key derivation (600k iterations)
  • TPM2 hardware-bound keys when available, software fallback otherwise
  • Secure memory — embeddings are zeroized on drop, locked in RAM (no swap)
  • Constant-time comparisons prevent timing attacks
  • IPC uses Unix socket with peer credentials and rate limiting

Contributing

Contributions welcome — especially:

  • Testing on other laptops/IR cameras
  • Packaging for distributions
  • Security auditing

See CONTRIBUTING.md for guidelines.


License

GPL-3.0 — see LICENSE.

Description
No description provided
Readme 1.1 MiB
Languages
Rust 83.9%
Shell 5.2%
C++ 3.6%
C 3.6%
QML 3.1%
Other 0.6%