Hyprland's GPU-accelerated screen locking utility
  • C++ 97.3%
  • CMake 1.5%
  • Nix 1.2%
Find a file
TGMadhusoodhan ef8ebe821b
screencopy: guard CSCDMAFrame destructor against destroyed EGL context (#1046)
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>
2026-07-03 19:41:43 +02:00
.github CI: use org-wide actions 2026-04-17 15:18:55 +03:00
assets core: move dbus connection from fprint to it's own thing (#1029) 2026-05-30 10:22:35 +00:00
nix nix: separate overlay with deps 2026-03-02 18:30:57 +02:00
pam Adding a pam configuration file (#115) 2024-03-02 01:49:44 +02:00
protocols background: add screenshot 2024-02-21 21:39:14 +00:00
src screencopy: guard CSCDMAFrame destructor against destroyed EGL context (#1046) 2026-07-03 19:41:43 +02:00
.clang-format core: initial commit 2024-02-18 23:08:03 +00:00
.clang-tidy clang-tidy: fix some errors (#751) 2025-04-21 20:17:15 +02:00
.gitignore core: fix background screenshot on nvidia (#656) 2025-01-24 14:25:37 +01:00
CMakeLists.txt cmakelists: fix libpam finding for base ubuntu (#1027) 2026-05-29 13:47:32 +01:00
flake.lock flake.lock: update 2026-03-02 18:31:14 +02:00
flake.nix nix: separate overlay with deps 2026-03-02 18:30:57 +02:00
LICENSE Initial commit 2024-02-18 16:10:12 +00:00
README.md misc: remove hyprland-protocols from README (#887) 2025-10-04 10:07:28 +00:00
VERSION version: bump to 0.9.5 2026-04-18 10:44:05 +01:00

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

See the wiki

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