# Hyprlock Themed Config 💫 Matching EWW


general {
    # grace: seconds after lock is triggered during which the lock can be dismissed
    # without a password (e.g. accidental idle). Set to 0 to require password immediately.
    grace = 2

    hide_cursor = true

    # Do not attempt authentication if the input field is empty; prevents accidental
    # PAM lockouts from empty-string submissions when brushing the keyboard.
    ignore_empty_input = true
}

auth {
    # PAM service name to use for authentication (/etc/pam.d/hyprlock).
    # The hyprlock PAM stack is where howdy (biometric) and FIDO2 are wired in.
    pam:module = hyprlock

    # Enable fingerprint unlock via fprintd. Works alongside the password field;
    # whichever succeeds first (finger or typed password) dismisses the lock.
    fingerprint:enabled = true
}

# per-monitor backgrounds written by ~/.config/scripts/wallpaper-picker
source = ~/.config/hypr/hyprlock-backgrounds.conf

input-field {
    # Empty monitor = field appears on all monitors. Name a specific output (e.g. DP-1)
    # to restrict the field to one screen.
    monitor =

    # Width × height in pixels of the password box.
    size = 300, 60

    # Pixel thickness of the coloured outline drawn around the input box.
    outline_thickness = 4

    # Dot diameter as a fraction of the input-field height (0.0–1.0).
    # 0.5 = dots are half the field height, giving a balanced look.
    dots_size = 0.5

    # Gap between dots as a fraction of dot size. 0.2 adds a small breathing room.
    dots_spacing = 0.2

    dots_center = true
    hide_input = false

    # Pango markup is supported; <i> renders italic placeholder text.
    placeholder_text = <i>Password...</i>

    # Position is (x-offset, y-offset) from the anchor set by halign/valign.
    # 20% pushes the field 20% of screen height above the bottom edge.
    position = 0, 20%
    halign = center
    valign = bottom

    # Accent border & color matching EWW
    # Dark near-black fill so text/dots are readable against any wallpaper.
    inner_color = rgb(1a1a1a)
    font_color = rgb(b0b4bc)
    font_family = Agave Nerd Font Mono
}

# DATE
label {
    # cmd[update:N] re-runs the command every N milliseconds and replaces the label text.
    # 18000000 ms = 5 hours — the date only changes once a day, so this is generous.
    text = cmd[update:18000000] sh ~/Dotfiles/desktopenvs/hyprland/scripts/date.sh
    color = rgb(5018dd)
    font_size = 34
    font_family = Agave Nerd Font Mono
    # position = (x-offset, y-offset) from the halign/valign anchor.
    # 0, 40% = horizontally centred, 40% of screen height above the screen centre.
    position = 0, 40%
    halign = center
    valign = center
}

# TIME
label {
    # update:1000 = refresh every second so the clock ticks in real time.
    text = cmd[update:1000] sh ~/Dotfiles/desktopenvs/hyprland/scripts/time.sh
    color = rgb(E40046)
    # Large font makes the time the dominant visual element on the lock screen.
    font_size = 95
    font_family = Agave Nerd Font Mono
    # 25% above centre keeps the time above the input field while staying mid-screen.
    position = 0, 25%
    halign = center
    valign = center
}

# USER
label {
    text =    $USER
    color = rgb(5018dd)
    font_size = 18
    font_family = Agave Nerd Font Mono
    position = 0, 10%
    halign = center
    valign = bottom
}

# UPTIME
label {
    text = cmd[update:60000] sh ~/Dotfiles/desktopenvs/hyprland/scripts/uptime.sh
    font_size = 24
    color = rgb(5018dd)
    font_family = Agave Nerd Font Mono
    position = 0, 0
    halign = right
    valign = bottom
}

# BATTERY
label {
    text = cmd[update:10000] sh ~/Dotfiles/desktopenvs/hyprland/scripts/batteryperc
    color = rgb(5018dd)
    font_size = 24
    font_family = Agave Nerd Font Mono
    position = 50, 0
    halign = left
    valign = bottom
}

# PROFILE PICTURE OR LOGO
image {
    path = ~/Pictures/profile.jpg
    size = 230
    rounding = 110
    border_size = 4
    border_color = rgb(5018dd)
    rotate = 0
    position = 0, 40%
    halign = center
    valign = bottom
}


