Skip to content

feat: improve Netwatch login and installer safety - #22

Closed
tiredbooy wants to merge 17 commits into
ARCANGEL0:masterfrom
tiredbooy:feat/sddm-session-selector
Closed

tiredbooy wants to merge 17 commits into
ARCANGEL0:masterfrom
tiredbooy:feat/sddm-session-selector

Conversation

@tiredbooy

@tiredbooy tiredbooy commented Sep 12, 2026

Copy link
Copy Markdown

Summary

  • add a Netwatch-styled SDDM session selector
  • retain SDDM's remembered session as the default
  • authenticate with the user-selected session index
  • support keyboard and mouse selection with a safe single-session fallback
  • make install.sh --dry-run exit before prompts or privileged mutations
  • deploy the SDDM theme before selecting it and preserve /etc/sddm.conf.pre-cyberarch
  • restore the previous SDDM configuration and display manager after activation failures
  • document installation recovery and the separate Quickshell/SDDM Netwatch runtimes

Problem

The Netwatch SDDM theme currently passes sessionModel.lastIndex to sddm.login() without exposing a way to choose another installed desktop session. On systems with CyberArch/Hyprland installed alongside KDE Plasma or another desktop, this can repeatedly launch the previously selected session.

The installer also advertised a no-change dry run after already reaching its system-upgrade prompt and sudo pacman -Sy. Its SDDM setup selected the theme before confirming that deployment succeeded, and failed display-manager activation paths did not consistently restore the previous manager.

Safety

The dry run now performs only local dependency queries. SDDM activation is ordered after theme deployment and configuration backup, and each activation/start failure uses the same rollback path. No system-wide installation was performed while developing this change.

Testing

  • QT_QPA_PLATFORM=offscreen /usr/lib/qt6/bin/qmltestrunner -input tests/qml -o -,txt — 7 passed
  • qmllint on the Netwatch QML components — passed
  • bash tests/install/test_install_safety.sh — passed
  • TERM=dumb ./install.sh --dry-run — passed without sudo or prompts
  • bash -n install.sh updater.sh tests/install/test_install_safety.sh — passed
  • shellcheck --severity=error -e SC1087 install.sh tests/install/test_install_safety.sh — passed
  • git diff --check — passed
  • sddm-greeter-qt6 --test-mode --theme components/login/sddm-theme — no QML errors

ARCANGEL0 and others added 17 commits September 7, 2026 03:07
…olor, window corners (bevels and rounds), Glow colors and more
…o PAM

The netwatch SDDM theme's login form only had a password input; doAuth()
called sddm.login(userModel.lastUser, ...) to supply the username. On at
least one setup userModel.lastUser resolves empty, so SDDM sends an empty
username string to PAM regardless of the password typed — confirmed via
journalctl -u sddm showing `Authentication for user "" failed`.

Adds a real username TextInput bound to a new lockUser property (seeded
from userModel.lastUser as a convenience default, but user-editable).
doAuth() now sends lockUser and won't fire until both fields are non-empty.
Focus starts on the username field when empty, else the password field;
Tab/Shift+Tab move between the two fields.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0164AbQ8QodPJqEANRYzGxVa
…-username

fix(sddm/netwatch): stop sending empty username to PAM
@tiredbooy tiredbooy changed the title feat(sddm): add session selector to Netwatch login feat: improve Netwatch login and installer safety Sep 12, 2026
@ARCANGEL0
ARCANGEL0 force-pushed the master branch 10 times, most recently from fa4af8a to 1d28ca6 Compare September 14, 2026 16:56
@ARCANGEL0
ARCANGEL0 deleted the branch ARCANGEL0:master September 21, 2026 11:57
@ARCANGEL0 ARCANGEL0 closed this Sep 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants