* widget: add utility functions to calculate borders and make em static
* image: use the rounding util functions
* input-field: use the rounding util functions
* shape: use the rounding util functions
* image: use absolutePath to get last_write_time and ignore when no reloadTime
* background: use absolutePath to get last_write_time and ignore when no reloadTime
In file included from src/auth/Auth.cpp:2:
src/auth/Pam.hpp:43:5: error: no type named 'thread' in namespace 'std'; did you mean 'pthread'?
43 | std::thread m_thread;
| ^~~~~~~~~~~
| pthread
* auth: add an interface for different authentication methods
* auth: pick inline feedback based on last active implementation
* config: move auth options to auth:<auth_impl>
BREAKING:
- general:pam_module -> auth:pam:module
- general:enable_fingerprint -> auth:fingerprint:enabled
- general:fingerprint_ready_message -> auth:fingerprint:ready_message
- general:fingerprint_present_message ->
auth:fingerprint:present_message
* auth: don't clear password input for fingerprint auth check
* fingerprint: checkAuthenticated when handling verfiy status
* Revert conditionally clearing the password input buffer
Makes sure the input field can show the fail text for fingerprint auth.
* auth: virtual instead of override, remove braces
* pam: join the thread
* auth: remove isAuthenticated and switch to a control flow based unlock
* auth: initialize authentication before aquiring the session lock
* renderer: add renderBorder function
* config: add CGradientValueData from Hyprland
* input-field: change outer to take gradients
Added gradient support to the following color options:
- `outer_color`
- `fail_color`
- `check_color`
- `capslock_color`
- `numlock_color`
- `bothlock_color``
* image: add gradient border
* shape: add gradient border
* shaders: adapt the new rounded smoothing factor from Hyprland
* config: introduce a custom value type for layout related options
* widgets: use CLayoutValueData for size and position options
* widgets: catch bad_any_cast and out_of_range when contructing widgets other than label
* config: rename and restrict CLayoutValueData::fromAny to fromAnyPv
This is only for casting `any` variables that represent a void * to a
CLayoutValueData*, not just any any.
* misc: remove debug prints
* auth: Support parallel fingerprint auth
I chose to use Fprint's dbus interface directly rather than going through pam (which uses Fprint's dbus interface) due to poor handling of system sleep somewhere between fprintd and pam. When preparing for sleep, fprintd puts the device to sleep, which causes VerifyStatus to emit with verify-unknown-error, which normally should be responded to by calling both Device.StopVerify and Device.Release (and this is what pam does). Unfortunately, if you try to release the device when the system is preparing for sleep, you'll get an error that the device is busy and then you can't can't claim or release the device for 30 seconds.
pam also has a max timeout for pam_fprintd.so of 99 seconds, and so if we used pam, we'd have to deal with the timeouts and keep restarting the auth conversation.
gdm/gnome-session lock seems to get around these issues by having a shutter on top of the lock screen that you have to interact with first that gives gnome-session a trigger to start fingerprint auth.
* nix/overlays: add sdbus overlay
---------
Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
* misc: use Vector2D, Box and Mat3x3 from hyprutils
* nix: flake update
Fix CI fails. We need hyprutils>=0.2.3
* misc: use a function to convert Hyprlang::VEC2 to Vector2D
* misc: fixup some includes
* input-field: make dots support arbitrary chars
* input-field: add font_familiy for placeholder and text dots
* input-field: allow dots_spacing from -1.0 to 1.0
Useful when using emojis in dots_text_format
* config: add input-field dots_fade_time option
Time is in milliseconds. Anything <= 0 is immediate.
* input-field: change speedPerSecond to fadeMs
Default is 200ms, which is the same amount of time as the previous
5 speedPerSecond. Not sure using doubles is necessary, but I'm
using them to avoid precision issues.
Closes: https://github.com/hyprwm/hyprlock/issues/355