# ─────────────────────────────────────────────────────────────────────────────
# hyprlock — lock screen.
#
# GENERATED FILE. Edit hyprlock.conf.template and re-run
# quickshell/scripts/panama-theme-apps; editing this copy is overwritten on the
# next color scheme change.
#
# The colors here follow the desktop's light/dark setting. They used to be
# hardcoded Tokyo Night Moon, which meant the one screen you see most often
# stayed dark when everything else went light.
#
# hyprlock takes rgba(r, g, b, a) in DECIMAL rather than hex, which is why the
# template carries "R, G, B" triples where the rest of Panama uses hex. The two
# Pango markup values are the exception and want ##rrggbb.
#
# hyprlang syntax, not Lua — hyprlock is a separate project from Hyprland.
# ─────────────────────────────────────────────────────────────────────────────
general {
hide_cursor = true
# 2 = auto. Matters at the 1.5x fractional scale this display runs.
fractional_scaling = 2
# 0 = GPU-accelerated screencopy. 1 is a CPU fallback and is very slow at
# 4500x3000.
screencopy_mode = 0
fail_timeout = 2000
}
auth {
pam:enabled = true
pam:module = hyprlock
}
# ── Background ──────────────────────────────────────────────────────────────
# `path = screenshot` grabs the desktop at lock time and blurs it in place,
# which is what GNOME does.
#
# Caveat: this uses screencopy. If the desktop is ever switched to full-time
# HDR (see hypr/overrides.lua), this background may come back black — that is
# the same upstream screencopy bug, not a hyprlock misconfiguration.
background {
monitor =
path = screenshot
blur_passes = 3
blur_size = 8
noise = 0.0117
contrast = 0.9
brightness = 0.8
vibrancy = 0.17
vibrancy_darkness = 0.05
# Shown if the screenshot is unavailable.
color = rgba(@BG@, 1.0)
zindex = -1
}
# ── Clock ───────────────────────────────────────────────────────────────────
label {
monitor =
text = cmd[update:1000] date +"%-I:%M"
color = rgba(@FG@, 1.0)
font_size = 120
font_family = Adwaita Sans Light
position = 0, 260
halign = center
valign = center
}
label {
monitor =
text = cmd[update:60000] date +"%A, %B %-d"
color = rgba(@MUTED@, 1.0)
font_size = 24
font_family = Adwaita Sans
position = 0, 160
halign = center
valign = center
}
# ── Password field ──────────────────────────────────────────────────────────
input-field {
monitor =
size = 340, 52
position = 0, -40
halign = center
valign = center
outline_thickness = 2
rounding = 26
outer_color = rgba(@ACCENT@, 0.9)
inner_color = rgba(@FIELD@, 0.85)
font_color = rgba(@FG@, 1.0)
check_color = rgba(@ACCENT@, 1.0)
fail_color = rgba(@ERROR@, 1.0)
dots_size = 0.25
dots_spacing = 0.3
dots_center = true
placeholder_text = Password
fail_text = $FAIL ($ATTEMPTS)
fade_on_empty = false
hide_input = false
}
# ── User ────────────────────────────────────────────────────────────────────
label {
monitor =
text = $USER
color = rgba(@FG@, 0.9)
font_size = 16
font_family = Adwaita Sans
position = 0, -110
halign = center
valign = center
}