diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf index acce3e6..1d414b5 100644 --- a/hypr/hyprlock.conf +++ b/hypr/hyprlock.conf @@ -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 } diff --git a/hypr/scripts/lock.sh b/hypr/scripts/lock.sh index 9e6c744..a6bc862 100755 --- a/hypr/scripts/lock.sh +++ b/hypr/scripts/lock.sh @@ -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