Commit graph

96 commits

Author SHA1 Message Date
r0chd
14cc125fcd
fix: compile without the logind feature 2026-09-09 10:10:52 +02:00
Frederic Laing
0a16d339a4 fix: remove unused Color import 2026-09-01 15:10:56 -06:00
demi
cde1a13140
fix: handle sequential PAM prompts in greeter and locker 2026-09-01 17:04:46 +02:00
chris-010
935891e36b fix(greeter): do not cancel the session on a non-fatal PAM error message
greetd delivers PAM_ERROR_MSG as an auth message of type Error, and ipc.rs
turned that into Message::Error, which cancels the greetd session. But such a
message describes the current attempt, not the end of the conversation:
pam_fprintd reports "Failed to match fingerprint" this way and then retries
until max-tries is reached.

The consequence at the login screen is that a single failed fingerprint press
ends the conversation. The greeter reconnects and immediately creates a new
session, whose PAM worker calls fprintd's Claim 14 ms later while the previous
worker still holds it, so the claim is denied and no fingerprint prompt ever
appears again. The previous worker only exits when it next tries to talk to the
greeter, which can be arbitrarily far in the future, so delaying the new session
does not help either.

Per the greetd protocol every auth message has to be acknowledged with
PostAuthMessageResponse, and for a non-interactive one the response is None,
which is what the Info arm already does. Route the Error message to its own
Message::AuthError that shows the text and acknowledges it. Message::Error and
the Response::Error path stay as they are, so a failed authentication still
cancels the session.

Drafted with AI assistance (Claude Code); the change and the measurements behind
it were reviewed and tested by me on real hardware.

Signed-off-by: chris-010 <10660568+chris-010@users.noreply.github.com>
2026-08-25 02:33:15 +02:00
chris-010
088f26cbb8 fix: ignore empty responses on the login screen
Message::Auth is constructed in exactly one place, the .on_submit of the
password input, and it forwards whatever the field holds to greetd. An
empty field therefore sends PostAuthMessageResponse with response
Some(""), PAM rejects it, and greetd tears the session down; the greeter
then reconnects with a fresh CreateSession. Every stray Enter costs that
round trip, and while it runs the user is looking at the authenticating
spinner.

Non-interactive auth messages (AuthMessageType::Info) are acknowledged
separately with response None and never reach Message::Auth, so an empty
Some can only come from the user submitting an empty field.

This is the login-screen counterpart of the lock-screen fix in #509. The
two do not overlap; that one guards Message::Submit in locker.rs.

Drafted with AI assistance (Claude Code); the change was reviewed, built
and tested by me as described.

Signed-off-by: chris-010 <10660568+chris-010@users.noreply.github.com>
2026-08-18 04:21:19 +02:00
Hugo
f64e2d8fab
fix: detect and enable logind functionality at runtime
Downstream distributions have optional logind, but the logind feature
must be defined at compile time. If cosmic-greeter is compiled with
logind support it fails to run on a host that's not running logind.

Detect whether logind is present at runtime, enabling the use of the
same binaries regardless of whether logind is installed or not.
2026-07-29 17:51:37 +02:00
Ian Douglas Scott
d39915ae23 Use cosmic-keymap-unstable-v1 2026-07-28 16:17:56 -04:00
Ashley Wulber
95067445be improv: better handling of popover dialog after dropdown 2026-07-09 12:10:46 -06:00
Ashley Wulber
05f09fe33c improv: use the new menu column widget 2026-07-09 12:10:46 -06:00
Ashley Wulber
0b7803077a feat: blur 2026-07-09 12:10:46 -06:00
Fred
953478f801
feat: use spinner widget from libcosmic for authentication 2026-06-24 19:12:46 +02:00
Vukašin Vojinović
9895bd4b43 chore: add rustfmt config 2026-04-29 00:20:17 +02:00
Vukašin Vojinović
a7ca33b6eb chore:: clippy 2026-04-29 00:20:17 +02:00
Ashley Wulber
619910c5cc chore: update libcosmic
fixes input clipping
2026-04-14 10:27:16 -06:00
User
c3e2182c38 Fix selected user index during greeter init 2026-04-02 17:12:09 -04:00
Ashley Wulber
08f5a3b713 fix: wrap column in a different id when entering name 2026-03-30 12:49:32 -06:00
Ashley Wulber
0272e189f4 fix: battery icon 2026-03-30 12:49:32 -06:00
Ashley Wulber
89671a793f chore: updates after iced rebase 2026-03-30 12:49:32 -06:00
Jeremy Soller
63cd93bddd
Security hardening (#426)
- Switch gid and supplementary groups to user's when reading user's
  config
- Only show users between UID_MIN and UID_MAX in /etc/login.defs
- Open accountsservice icons with O_NOFOLLOW to explicitly disallow
  symlinks
2026-03-13 08:35:18 -06:00
Hojjat
f3e9de2425 fix: ACK so greetd doesn't wait forever on systems with fingerprint scanner
Also show info messages from PAM mainly "Place your finger on the
fingerprint reader"
2026-01-23 03:32:34 +01:00
Hojjat
4acdc099f4 chore: use libcosmic's freedesktop-desktop-entry 2026-01-23 03:32:19 +01:00
Frederic Laing
f806087fc8 address feedback 2025-11-14 11:50:14 -05:00
Frederic Laing
97d69f37e9 implement a more consistent login mask with a stable layout and improved error messages 2025-11-14 11:50:14 -05:00
Jeremy Soller
31d0f66d3a Make offset of prompt from top of screen proportional 2025-10-30 18:43:39 -06:00
Vukašin Vojinović
7bab53c5b4 chore: clippy 2025-10-27 15:10:24 -06:00
Vukašin Vojinović
a7f8a62807 improv: don't resize column for caps lock and error text
This prevents the other column items from jumping around depending on if Caps Lock is toggled or if an error is shown. Now only the error text moves depending on if Caps Lock is toggled.
2025-10-27 15:10:24 -06:00
Michael Aaron Murphy
9ba6a0481c
perf: cache image handles 2025-09-17 18:25:57 +02:00
Vukašin Vojinović
31912afaa1 chore: update dependencies
The ICU update reduces binary size by ~20 MB.
2025-09-16 09:28:25 -06:00
Ashley Wulber
79bf2cb4f8 chore: cleanup logs 2025-09-12 23:47:22 +02:00
Ashley Wulber
16185fe21e fix: reposition subsurface after layer surface size update 2025-08-29 10:29:15 -04:00
Ashley Wulber
0e2141ac6c refactor: use randr kdl command
cleanup

chore: update deps

fix: typo
2025-08-29 10:29:15 -04:00
Ashley Wulber
f3f7d5cfb6 feat: load and apply output configs
fix: typo

chore: update deps

cleanup
2025-08-29 10:29:15 -04:00
Ashley Wulber
db59a72eb9 feat: introduce cosmic-greeter-start for state cleanup 2025-08-12 10:59:29 -05:00
Ashley Wulber
9a72c09fed better syncing 2025-08-12 10:59:29 -05:00
Ashley Wulber
9c1306d8c7 feat: accessibility menu 2025-08-12 10:59:29 -05:00
Ashley Wulber
6813da21b5 fix: binary search won't work for name comparison 2025-06-30 18:30:21 +00:00
Ashley Wulber
bbaa1935f4 feat: last user 2025-06-30 18:30:21 +00:00
Ashley Wulber
ab2ae6d31e fix: clear dropdown after enter user is selected 2025-06-27 08:43:04 -04:00
Ashley Wulber
b740ad246b refactor(locker): scrollable menu in locker 2025-06-27 08:43:04 -04:00
Ashley Wulber
abc591db6d refactor: allow entering username 2025-06-27 08:43:04 -04:00
Jeremy Soller
b38bcd296a
Show if caps lock is active, fixes #115 2025-05-15 14:18:08 -06:00
Jeremy Soller
2fff220392 Move layout and prompt handling to common code 2025-05-12 14:48:32 -06:00
Jeremy Soller
8812240f50 Combine some logic between greeter and locker 2025-05-12 14:48:32 -06:00
Jeremy Soller
c9913834f2 Cleanup config handling 2025-05-12 14:48:32 -06:00
Jeremy Soller
04c3271f4a Unify user data handling between greeter and locker 2025-05-12 14:48:32 -06:00
Ashley Wulber
525c635124 fix: avoid Fill for the left element
this will allow the left element to expand if it needs more space, but half otherwise. Setting both left and right to Fill will make them both use half of the available space.
2025-05-02 18:08:05 +02:00
Ashley Wulber
37cff18672 refactor: use icu for datetime 2025-04-10 15:35:57 -06:00
Michael Aaron Murphy
0600931abf refactor: improve and fix subscriptions and async logic 2025-04-10 16:51:24 -04:00
Ashley Wulber
d6b94406e6 refactor: lock surface subsurface menu 2025-03-15 02:57:51 +00:00
Ashley Wulber
b84ee1827c update libcosmic 2025-03-15 02:57:51 +00:00