wayrustlock

A production-ready Wayland screen locker inspired by swaylock-effects.

Features

  • Session locking via ext-session-lock-v1 protocol
  • Screenshot capture using wlr-screencopy-unstable-v1
  • Gaussian blur and vignette effects
  • Clock display with customizable formatting
  • Indicator ring with customizable colors and dimensions
  • PAM authentication
  • Grace period and fade-in animations
  • Multi-monitor support

Installation

cargo build --release

Usage

Basic usage:

wayrustlock

With all options from swaylock-effects compatibility:

wayrustlock \
  --screenshots \
  --clock \
  --indicator \
  --indicator-radius 100 \
  --indicator-thickness 7 \
  --effect-blur 7x5 \
  --effect-vignette 0.5:0.5 \
  --ring-color 785412 \
  --key-hl-color 4EAC41 \
  --line-color 00000000 \
  --inside-color 00000088 \
  --separator-color 00000000 \
  --grace 2 \
  --fade-in 0.2

Command-Line Options

Option Description Default
--screenshots Take screenshots of each output as background false
--clock Show clock in center of screen false
--indicator Show password indicator ring false
--indicator-radius Radius of indicator ring in pixels 100
--indicator-thickness Thickness of indicator ring in pixels 7
--effect-blur Blur radius and iterations (e.g., 7x5) none
--effect-vignette Vignette base:factor (e.g., 0.5:0.5) none
--ring-color Ring color (hex RRGGBB) 785412
--key-hl-color Key press highlight color 4EAC41
--line-color Line color 00000000
--inside-color Inside fill color 00000088
--separator-color Separator color 00000000
--grace Grace period in seconds before password required 2
--fade-in Fade-in duration in seconds 0.2
--pam-service PAM service name login
--config Path to TOML config file none
--debug Enable debug logging false

Configuration File

You can also use a TOML configuration file:

screenshots = true
clock = true
indicator = true
indicator_radius = 100
indicator_thickness = 7
effect_blur = "7x5"
effect_vignette = "0.5:0.5"
ring_color = "785412"
key_hl_color = "4EAC41"
line_color = "00000000"
inside_color = "00000088"
separator_color = "00000000"
grace = 2
fade_in = 0.2
pam_service = "login"

Dependencies

  • Wayland compositor (sway, labwc, etc.)
  • PAM (linux-pam)
  • Required Wayland protocols:
    • ext-session-lock-v1
    • wlr-screencopy-unstable-v1

Building

This project requires Rust 2021 edition and the following dependencies:

  • wayland development libraries
  • cairo development libraries
  • pam development libraries

On Debian/Ubuntu:

sudo apt install libwayland-dev libcairo2-dev libpam0g-dev

On Fedora:

sudo dnf install wayland-devel cairo-devel pam-devel

License

MIT

S
Description
No description provided
Readme GPL-3.0 9 MiB
Languages
Rust 99.4%
Nix 0.6%