Stable v0.3.2

garlock

Secure screen locker with PAM authentication and visual ring indicator

garlock is the screen locker component of the gardesk ecosystem. Inspired by swaylock, it features a circular ring indicator that provides visual feedback during password entry, blurred screenshot background, and secure PAM-based authentication. Supports daemon mode for integration with idle managers and gar keybindings, with protection against brute force attacks via configurable cooldown periods.

🎯 RPM Available

Features

Installation

RPM (Fedora/RHEL)

terminal
$sudo dnf config-manager --add-repo https://repos.musicsian.com/musicsian.repo
$sudo dnf install garlock

From Source

terminal
$git clone https://github.com/espadon/gardesk
$cd gardesk/garlock
$cargo build --release
$sudo cp target/release/garlock /usr/local/bin/

PAM Configuration

garlock requires a PAM configuration file at /etc/pam.d/garlock. The RPM package installs this automatically. For manual installation:

# /etc/pam.d/garlock
auth       include      system-auth
account    include      system-auth
password   include      system-auth
session    include      system-auth

Quick Start

Lock your screen immediately:

terminal
$garlock
INFO garlock 0.3.2 starting INFO Capturing screenshot... INFO Creating locker window... INFO Entering event loop

Using with gar Keybindings

Add a lock keybinding to your gar configuration:

-- ~/.config/gar/init.lua
gar.keybinds = (
  -- Lock screen with Super+L
  ( mods = ( "Mod4" ), key = "l", action = "spawn", args = "garlock" ),

  -- Lock screen with Super+Escape (alternative)
  ( mods = ( "Mod4" ), key = "Escape", action = "spawn", args = "garlock" ),
)

Daemon Mode

Run garlock as a daemon for integration with idle managers (like swayidle):

terminal
$garlock daemon
INFO garlock 0.3.2 starting INFO Running in daemon mode INFO Daemon ready, waiting for commands

Lock via Daemon

terminal
$garlock lock
INFO Sending lock command to daemon INFO Daemon response: "Locking screen"

systemd Service

# ~/.config/systemd/user/garlock.service
[Unit]
Description=garlock screen locker daemon
PartOf=gar-session.target
After=gar.service

[Service]
ExecStart=/usr/bin/garlock daemon
Restart=on-failure

[Install]
WantedBy=gar-session.target

CLI Commands

terminal
$garlock # Lock immediately (direct or via daemon)
$garlock lock # Lock via daemon, fallback to direct
$garlock daemon # Start daemon mode
$garlock status # Query lock state (daemon required)
$garlock shutdown # Stop daemon gracefully

Options

terminal
$garlock --help
garlock - Screen locker for the gar desktop suite Usage: garlock [OPTIONS] [COMMAND] Commands: daemon Run in daemon mode lock Lock the screen status Query lock state shutdown Stop daemon Options: -c, --config <PATH> Config file path -d, --debug Enable debug logging -h, --help Print help -V, --version Print version

File Locations

  • Config: ~/.config/garlock/config.toml
  • PAM config: /etc/pam.d/garlock
  • Socket: $XDG_RUNTIME_DIR/garlock.sock
  • Logs: journalctl --user -u garlock.service