fix(hyprlock): make input field always visible

With fade_on_empty=true, a 0.3-alpha inner_color and placeholder_text=$LAYOUT
(which resolves empty under fcitx5), the empty input field faded to nothing —
only the clock rendered and there was no visible way to type the password.

- fade_on_empty = false
- inner_color alpha 0.3 -> 0.6
- static placeholder 'Enter password' instead of $LAYOUT

Also document the graceful emergency unlock (pkill -USR1 hyprlock) in
lock.sh: SIGTERM/SIGKILL on a running lock latches Hyprland's crashed-
lockscreen state, requiring hl.clear_crashed_lockscreen() to recover.

Clarify in hyprlock.conf that the fingerprint auth block is for Chester and
is a no-op on machines without fprintd (e.g. Rutherford).
This commit is contained in:
Jeena 2026-08-29 09:34:30 +09:00
parent f9553329ef
commit 4c497ed538
2 changed files with 18 additions and 3 deletions

View file

@ -1,4 +1,7 @@
auth {
# Parallel fingerprint auth — used on Chester (fingerprint reader + fprintd).
# On machines without fprintd/reader (e.g. Rutherford) hyprlock simply never
# claims a device, so this stays inactive and only password auth applies.
fingerprint {
enabled = true
ready_message = Scan fingerprint to unlock
@ -29,13 +32,16 @@ label {
input-field {
size = 8%, 3%
outline_thickness = 0
inner_color = rgba(255, 182, 193, 0.3) # transparent background
inner_color = rgba(255, 182, 193, 0.6) # translucent but clearly visible
outer_color = rgba(255, 255, 255, 0.5) rgba(255, 255, 255, 1.0) 90deg
check_color = rgba(255, 50, 80, 0.9) rgba(255, 0, 100, 0.9) 30deg
fail_color = rgba(255, 50, 80, 0.9) rgba(255, 0, 100, 0.9) 30deg
font_color = rgba(255, 255, 255, 0.9)
fade_on_empty = true
# fade_on_empty made the empty field nearly invisible (combined with the
# transparent inner_color and an empty $LAYOUT placeholder under fcitx5),
# leaving only the clock on screen with no way to tell where to type.
fade_on_empty = false
rounding = 20
position = 0, 60
@ -43,6 +49,8 @@ input-field {
valign = bottom
font_family = Roboto
placeholder_text = $LAYOUT
# $LAYOUT can resolve to an empty string when fcitx5 owns the keyboard,
# which left a blank placeholder; show useful static text instead.
placeholder_text = Enter password
}

View file

@ -3,6 +3,13 @@
# Prevent multiple hyprlock instances (second instance breaks the lock screen)
pidof hyprlock && exit 0
# --- Emergency unlock (from TTY or SSH) ---
# If the lock screen ever misbehaves, unlock GRACEFULLY with:
# pkill -USR1 hyprlock
# Do NOT kill it with SIGTERM/SIGKILL: Hyprland detects the lock screen dying
# while locked and latches a "crashed lockscreen" state that then requires:
# hyprctl --instance 0 eval "hl.clear_crashed_lockscreen()"
hyprctl switchxkblayout all 0
fcitx5-remote -s keyboard-us-dvorak
wpctl set-mute @DEFAULT_AUDIO_SINK@ 1