Find a file
Kenny Levinsen cca2436ba5 Improve frame callback and commit handling
The few places that required a surface commit relied on render_frame and
render_frame_background to form it form them after they had set up frame
callback events. This would fail if render_frame ran out of buffers and
exited early, as the caller would still wait indefinitely on the frame
callback.

swaylock would quite consistently run out of buffers when rendering
immediately after a configure event, such as when the keypress causing
render also caused outputs to be enabled from idle.

Restructure the render and commit handling slightly so that the whole
frame callback and commit setup is handled by the render code, which now
has a single render entrypoint. This both avoids stalls from lacking
commits, but also fixes the case the configure path to respect frame
callbacks so we do not run out of buffers in the first place.
2024-09-06 19:46:24 -04:00
completions build: move completions to separate file 2022-12-05 11:02:41 +01:00
include Improve frame callback and commit handling 2024-09-06 19:46:24 -04:00
pam Remove FreeBSD-specific PAM configuration 2020-01-06 13:18:25 -07:00
.build.yml Remove references to pango 2019-01-23 12:20:24 +00:00
.editorconfig Add editorconfig 2021-11-19 09:20:25 +01:00
.gitignore Convert swaylock into standalone project 2019-01-13 21:16:47 -05:00
background-image.c Correct for image orientation when loading image 2024-06-14 22:41:03 +02:00
cairo.c Remove unused functions in common code 2019-01-13 21:19:43 -05:00
comm.c Use mlock for password buffer 2022-06-15 10:49:32 +02:00
LICENSE MIT license 2019-01-13 21:21:09 -05:00
log.c Implement logging and remove wlroots dependency 2019-01-14 23:30:54 -05:00
loop.c Unlock the screen on SIGUSR1 2022-09-24 12:15:53 +02:00
main.c Improve frame callback and commit handling 2024-09-06 19:46:24 -04:00
meson.build build: bump version to v1.8.0 2024-08-23 22:39:33 +02:00
meson_options.txt Set version in project file 2019-02-05 14:19:14 +01:00
pam.c Use mlock for password buffer 2022-06-15 10:49:32 +02:00
password-buffer.c Fix retry behaviour in while loop with mlock() 2023-11-17 13:56:41 +01:00
password.c Show cleared state when backspacing last character 2024-08-22 09:02:10 +02:00
pool-buffer.c Stop pooling background surface buffers 2023-03-22 10:56:42 +01:00
README.md Link to manpage 2023-11-26 22:39:41 +01:00
render.c Improve frame callback and commit handling 2024-09-06 19:46:24 -04:00
seat.c seat: NULL-check on keyboard.modifiers event 2022-02-10 09:40:06 +01:00
shadow.c Read password hash before fork 2024-03-05 09:50:47 +01:00
swaylock.1.scd Document --ready-fd in man page 2023-12-17 13:58:40 +01:00
unicode.c Delete whole utf8 character on backspace 2022-03-22 22:11:27 +01:00

swaylock

swaylock is a screen locking utility for Wayland compositors. It is compatible with any Wayland compositor which implements the ext-session-lock-v1 Wayland protocol.

See the man page, swaylock(1), for instructions on using swaylock.

Release Signatures

Releases are signed with E88F5E48 and published on GitHub. swaylock releases are managed independently of sway releases.

Installation

From Packages

Swaylock is available in many distributions. Try installing the "swaylock" package for yours.

Compiling from Source

Install dependencies:

  • meson *
  • wayland
  • wayland-protocols *
  • libxkbcommon
  • cairo
  • gdk-pixbuf2 **
  • pam (optional)
  • scdoc (optional: man pages) *
  • git *

* Compile-time dep
** Optional: required for background images other than PNG

Run these commands:

meson build
ninja -C build
sudo ninja -C build install

On systems without PAM, you need to suid the swaylock binary:

sudo chmod a+s /usr/local/bin/swaylock

Swaylock will drop root permissions shortly after startup.