mirror of
https://github.com/hyprwm/hyprlock.git
synced 2026-05-20 19:58:10 +02:00
A read-only mirror of https://github.com/hyprwm/hyprlock
Previously, CPam::init() hardcoded a "Password: " prompt and blocked on waitForInput() before ever calling pam_authenticate(). This meant non-interactive PAM modules (howdy face recognition via pam_python, FIDO2 devices) could never run until the user typed something and pressed Enter — defeating the purpose of passwordless auth. Now pam_authenticate() fires immediately on lock. Non-interactive modules run first without needing the PAM conversation. If they succeed (e.g. face match), the screen unlocks instantly with no keypress. If they fail, subsequent modules (pam_unix) trigger the conv() callback which blocks for password input at that point. The conv() callback no longer skips waitForInput() for the "initial" prompt, since input is no longer pre-collected. Every PAM prompt now properly blocks until the user submits input. Fixes #926 Related: #535 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .github | ||
| assets | ||
| nix | ||
| pam | ||
| protocols | ||
| src | ||
| .clang-format | ||
| .clang-tidy | ||
| .gitignore | ||
| CMakeLists.txt | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
| VERSION | ||
hyprlock
Hyprland's simple, yet multi-threaded and GPU-accelerated screen locking utility.
Features
- Uses the ext-session-lock protocol
- Support for fractional-scale
- Fully GPU accelerated
- Multi-threaded resource acquisition
- Blurred screenshot as the background
- Native fingerprint support (using libfprint's dbus interface)
- Some of Hyprland's eyecandy: gradient borders, blur, animations, shadows, etc.
- and more...
How it looks
Docs / Configuration
Arch install
pacman -S hyprlock # binary x86 tagged release
# or
yay -S hyprlock-git # compiles from latest source
Building
Deps
You need the following dependencies
- cairo
- hyprgraphics
- hyprlang
- hyprutils
- hyprwayland-scanner
- mesa (required is libgbm, libdrm and the opengl runtime)
- pam
- pango
- sdbus-cpp (>= 2.0.0)
- wayland-client
- wayland-protocols
- xkbcommon
Sometimes distro packages are missing required development files.
Such distros usually offer development versions of library package - commonly suffixed with -devel or -dev.
Building
Building:
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
Installation:
sudo cmake --install build
