markdown · 4459 bytes Raw Blame History

gardm Feature Checklist

Core Functionality

Authentication

  • PAM integration for password authentication
  • Multi-factor auth support (PAM handles this transparently)
  • Account lockout after failed attempts
  • "Remember last user" functionality
  • Guest session support (optional)

Session Management

  • Discover X11 sessions from /usr/share/xsessions/
  • Parse .desktop files for session metadata
  • Remember user's last session choice
  • Support custom session commands
  • Proper session environment setup (DISPLAY, XDG_*, etc.)
  • systemd-logind session registration

X11 Server Management

  • Start Xorg on appropriate VT
  • Handle X server crashes gracefully
  • Support multi-seat (seat0 initially)
  • Pass correct display/VT to sessions
  • Clean X server shutdown on logout

Power Management

  • Shutdown button (requires polkit or root)
  • Reboot button
  • Suspend button
  • Hibernate button (if available)
  • Scheduled actions (shutdown in 5 min, etc.) - optional

User Interface

Login Form

  • Username input (with dropdown of available users)
  • Password input (masked)
  • Session selector dropdown
  • Login button
  • Clear error messages on auth failure
  • Loading/spinner during authentication

Visual Design

  • Centered login form
  • Blurred background image
  • Configurable blur radius/brightness
  • Smooth fade-in on greeter start
  • Smooth transition to session (fade-out)
  • Clock display
  • Current date display

User List

  • Show available users with avatars
  • Filter system accounts (UID < 1000)
  • Filter accounts with nologin shell
  • Support user icons from AccountsService
  • Keyboard navigation through user list

Theming

  • Configurable colors/fonts via config file
  • Support custom background images
  • garbg wallpaper integration
  • Logo/branding support
  • Dark/light theme variants

Accessibility

  • Keyboard-only navigation (Tab, Enter, Escape)
  • High contrast mode (optional)
  • Screen reader support (optional, complex)
  • On-screen keyboard (optional, complex)

gar Integration

garbg Wallpaper Sync

  • Read garbg config for default wallpaper
  • Read garbg playlist state for current wallpaper
  • Apply consistent blur to match gar lock screen
  • Seamless visual transition to gar session

Shared Configuration

  • Read gar color scheme for consistent theming
  • Use same fonts as garbar
  • Respect gar's corner radius settings

System Integration

systemd

  • Proper service file
  • Socket activation (optional)
  • sd_notify for readiness
  • Proper shutdown handling (SIGTERM)
  • Alias as display-manager.service

D-Bus

  • systemd-logind integration for session management
  • AccountsService for user info (optional)
  • polkit for power actions (optional)

Files and Paths

  • Config file: /etc/gardm/config.toml
  • PAM config: /etc/pam.d/gardm
  • Socket: /run/gardm.sock
  • PID file: /run/gardm.pid
  • Log file: via journald
  • State dir: /var/lib/gardm/

Security

Hardening

  • Greeter runs as unprivileged user
  • Minimal daemon attack surface
  • Socket permissions (0600, gardm:gardm)
  • No credentials in logs
  • Secure memory handling for passwords

Input Validation

  • Sanitize username input
  • Prevent path traversal in session selection
  • Rate limiting on auth attempts
  • Timeout for idle greeter

Error Handling

  • X server fail to start
  • PAM errors (account locked, expired, etc.)
  • Session fail to start
  • IPC communication errors
  • Missing configuration graceful fallback
  • Greeter crash recovery (restart greeter)

Testing

  • Unit tests for IPC protocol
  • Unit tests for session discovery
  • Integration tests with mock PAM
  • Manual testing checklist
  • Xephyr-based testing for greeter UI

Documentation

  • README with quick start
  • Configuration reference
  • Theming guide
  • Troubleshooting guide
  • Man pages (gardmd.8, gardm-greeter.1)

Nice-to-Have (Future)

  • Wayland greeter support
  • Network login (LDAP, etc.)
  • Fingerprint authentication
  • Auto-login configuration
  • Remote desktop support
  • Multi-monitor greeter
  • Animated backgrounds
  • Weather/calendar widgets
View source
1 # gardm Feature Checklist
2
3 ## Core Functionality
4
5 ### Authentication
6 - [ ] PAM integration for password authentication
7 - [ ] Multi-factor auth support (PAM handles this transparently)
8 - [ ] Account lockout after failed attempts
9 - [ ] "Remember last user" functionality
10 - [ ] Guest session support (optional)
11
12 ### Session Management
13 - [ ] Discover X11 sessions from `/usr/share/xsessions/`
14 - [ ] Parse .desktop files for session metadata
15 - [ ] Remember user's last session choice
16 - [ ] Support custom session commands
17 - [ ] Proper session environment setup (DISPLAY, XDG_*, etc.)
18 - [ ] systemd-logind session registration
19
20 ### X11 Server Management
21 - [ ] Start Xorg on appropriate VT
22 - [ ] Handle X server crashes gracefully
23 - [ ] Support multi-seat (seat0 initially)
24 - [ ] Pass correct display/VT to sessions
25 - [ ] Clean X server shutdown on logout
26
27 ### Power Management
28 - [ ] Shutdown button (requires polkit or root)
29 - [ ] Reboot button
30 - [ ] Suspend button
31 - [ ] Hibernate button (if available)
32 - [ ] Scheduled actions (shutdown in 5 min, etc.) - optional
33
34 ## User Interface
35
36 ### Login Form
37 - [ ] Username input (with dropdown of available users)
38 - [ ] Password input (masked)
39 - [ ] Session selector dropdown
40 - [ ] Login button
41 - [ ] Clear error messages on auth failure
42 - [ ] Loading/spinner during authentication
43
44 ### Visual Design
45 - [ ] Centered login form
46 - [ ] Blurred background image
47 - [ ] Configurable blur radius/brightness
48 - [ ] Smooth fade-in on greeter start
49 - [ ] Smooth transition to session (fade-out)
50 - [ ] Clock display
51 - [ ] Current date display
52
53 ### User List
54 - [ ] Show available users with avatars
55 - [ ] Filter system accounts (UID < 1000)
56 - [ ] Filter accounts with nologin shell
57 - [ ] Support user icons from AccountsService
58 - [ ] Keyboard navigation through user list
59
60 ### Theming
61 - [ ] Configurable colors/fonts via config file
62 - [ ] Support custom background images
63 - [ ] garbg wallpaper integration
64 - [ ] Logo/branding support
65 - [ ] Dark/light theme variants
66
67 ### Accessibility
68 - [ ] Keyboard-only navigation (Tab, Enter, Escape)
69 - [ ] High contrast mode (optional)
70 - [ ] Screen reader support (optional, complex)
71 - [ ] On-screen keyboard (optional, complex)
72
73 ## gar Integration
74
75 ### garbg Wallpaper Sync
76 - [ ] Read garbg config for default wallpaper
77 - [ ] Read garbg playlist state for current wallpaper
78 - [ ] Apply consistent blur to match gar lock screen
79 - [ ] Seamless visual transition to gar session
80
81 ### Shared Configuration
82 - [ ] Read gar color scheme for consistent theming
83 - [ ] Use same fonts as garbar
84 - [ ] Respect gar's corner radius settings
85
86 ## System Integration
87
88 ### systemd
89 - [ ] Proper service file
90 - [ ] Socket activation (optional)
91 - [ ] sd_notify for readiness
92 - [ ] Proper shutdown handling (SIGTERM)
93 - [ ] Alias as display-manager.service
94
95 ### D-Bus
96 - [ ] systemd-logind integration for session management
97 - [ ] AccountsService for user info (optional)
98 - [ ] polkit for power actions (optional)
99
100 ### Files and Paths
101 - [ ] Config file: `/etc/gardm/config.toml`
102 - [ ] PAM config: `/etc/pam.d/gardm`
103 - [ ] Socket: `/run/gardm.sock`
104 - [ ] PID file: `/run/gardm.pid`
105 - [ ] Log file: via journald
106 - [ ] State dir: `/var/lib/gardm/`
107
108 ## Security
109
110 ### Hardening
111 - [ ] Greeter runs as unprivileged user
112 - [ ] Minimal daemon attack surface
113 - [ ] Socket permissions (0600, gardm:gardm)
114 - [ ] No credentials in logs
115 - [ ] Secure memory handling for passwords
116
117 ### Input Validation
118 - [ ] Sanitize username input
119 - [ ] Prevent path traversal in session selection
120 - [ ] Rate limiting on auth attempts
121 - [ ] Timeout for idle greeter
122
123 ## Error Handling
124
125 - [ ] X server fail to start
126 - [ ] PAM errors (account locked, expired, etc.)
127 - [ ] Session fail to start
128 - [ ] IPC communication errors
129 - [ ] Missing configuration graceful fallback
130 - [ ] Greeter crash recovery (restart greeter)
131
132 ## Testing
133
134 - [ ] Unit tests for IPC protocol
135 - [ ] Unit tests for session discovery
136 - [ ] Integration tests with mock PAM
137 - [ ] Manual testing checklist
138 - [ ] Xephyr-based testing for greeter UI
139
140 ## Documentation
141
142 - [ ] README with quick start
143 - [ ] Configuration reference
144 - [ ] Theming guide
145 - [ ] Troubleshooting guide
146 - [ ] Man pages (gardmd.8, gardm-greeter.1)
147
148 ## Nice-to-Have (Future)
149
150 - [ ] Wayland greeter support
151 - [ ] Network login (LDAP, etc.)
152 - [ ] Fingerprint authentication
153 - [ ] Auto-login configuration
154 - [ ] Remote desktop support
155 - [ ] Multi-monitor greeter
156 - [ ] Animated backgrounds
157 - [ ] Weather/calendar widgets