wayrustlock

A premium, high-performance Wayland screen locker written in Rust, designed to replicate and exceed the capabilities of swaylock-effects while ensuring stability on modern compositors like Niri and Sway.

Features

  • Blazing Fast Performance: Written in 100% safe Rust for maximum efficiency and security.
  • Advanced Visual Effects:
    • Gaussian Blur: Highly optimized blur effect for your desktop background.
    • Vignette: Add a professional vignette effect to darken the edges of your screen.
    • Fade-in Animation: Smooth transition from your desktop to the lock screen.
  • Iconic swaylock-effects UI:
    • Dynamic Rotating Highlights: Premium visual feedback as you type, with segments that appear at random angles and rotate dynamically.
    • Internal Information Hub: A perfectly centered clock, date, and system uptime indicator inside the ring.
    • Custom Colors: Full control over ring, inside, separator, and highlight colors.
  • Robust Logic:
    • Niri Compatibility: Fixed protocol violations that cause red screens on Niri.
    • Pre-lock Screenshot: Captures your desktop before locking to ensure visual effects work perfectly even if the compositor hides surfaces immediately.
    • Grace Period: Configurable unlock grace period for convenience.
    • Safe Exit: Always waits for the compositor's confirmation before exiting, preventing session corruption.
  • Permanent Logging: Verbose debug logs are always captured in ~/.wayrustlock.log for immediate troubleshooting.

Usage

Basic Command

wayrustlock --screenshots --effect-blur 7x5 --effect-vignette 0.5:0.5

Full Configuration Example

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

Configuration File

You can also provide settings via a configuration file located at ~/.config/wayrustlock/config.toml. Note that CLI arguments always take precedence over the config file.

Options

Option Description
--screenshots Enable desktop background capture.
--clock Show the centered clock and uptime.
--indicator Show the password indicator ring.
--indicator-radius Radius of the indicator ring (default: 100).
--indicator-thickness Thickness of the indicator ring (default: 7).
--effect-blur Gaussian blur settings (e.g., 7x5 for radius 7, 5 passes).
--effect-vignette Vignette settings (e.g., 0.5:0.5 for base:factor).
--ring-color Color of the outer ring (RRGGBB[AA]).
--inside-color Color of the inner circle (RRGGBB[AA]).
--key-hl-color Color of the key highlight segments (RRGGBB[AA]).
--grace Unlock grace period in seconds (default: 2).
--fade-in Fade-in animation duration in seconds (default: 0.2).

Installation

Ensure you have a Rust toolchain and the necessary Wayland development libraries installed, then run:

cargo build --release

The binary will be available at target/release/wayrustlock.

License

MIT / Apache 2.0

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