10ab8b2740
The size of the surface used to draw the indicator depends on the extents of the text being drawn on and under the indicator. This commit refactors the `render_frame` function so that the surface size is computed before drawing; before, `render_frame` drew onto a buffer, estimated the size the buffer should have had, and recursively called itself to try again with the estimated size, if necessary. This was done because Cairo's methods to estimate font and text size require that a cairo_t context object and an associated cairo_surface already have been set up. Since the surface size depends on the text size, the natural way to use Cairo would have a circular dependency. In order to compute sizes _before_ the buffer is created, this commit adds a 1x1 surface and a matching `test_cairo` context which is set to the same font and drawing parameters as the buffer that will be created. Font/text extent measurements should give the same results as for the final buffer. |
||
---|---|---|
completions | ||
include | ||
pam | ||
.build.yml | ||
.editorconfig | ||
.gitignore | ||
background-image.c | ||
cairo.c | ||
comm.c | ||
LICENSE | ||
log.c | ||
loop.c | ||
main.c | ||
meson_options.txt | ||
meson.build | ||
pam.c | ||
password-buffer.c | ||
password.c | ||
pool-buffer.c | ||
README.md | ||
render.c | ||
seat.c | ||
shadow.c | ||
swaylock.1.scd | ||
unicode.c | ||
wlr-input-inhibitor-unstable-v1.xml | ||
wlr-layer-shell-unstable-v1.xml |
swaylock
swaylock is a screen locking utility for Wayland compositors. It is compatible with any Wayland compositor which implements one of the following Wayland protocols:
- ext-session-lock-v1, or
- wlr-layer-shell and wlr-input-inhibitor
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.