mirror of
https://github.com/hyprwm/hyprlock.git
synced 2026-07-05 17:06:07 -05:00
Hyprland's GPU-accelerated screen locking utility
- C++ 97.3%
- CMake 1.5%
- Nix 1.2%
CUniquePointer::operator bool() only tests the impl_base pointer, not impl_->_data (the actual managed object). When the CEGL object is already destroyed — e.g. due to global-destructor ordering — impl_base can remain alive with _data == nullptr. The previous check `if (g_pEGL)` passed in this state, causing a null-pointer dereference when accessing g_pEGL->eglDisplay. Fix by using g_pEGL.get() which correctly returns nullptr once the CEGL object's _data has been cleared. Also guard against m_image == EGL_NO_IMAGE to avoid calling eglDestroyImage with an uninitialised image handle (frames destroyed before onBufferReady completes). Co-authored-by: TGMadhusoodhan <tgmadhusoodhan@gmail.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
