markdown · 1394 bytes Raw Blame History

Sprint 5: Power Buttons and Session Selector

Goal: Add power control buttons (shutdown, reboot, suspend) and a session selector dropdown to the greeter UI.

Completed Features

Power Buttons

  • Custom Cairo-drawn icons (no external dependencies):
    • Power symbol (circle with vertical line gap at top)
    • Reboot (circular arrows)
    • Suspend (crescent moon)
  • Bottom-right corner positioning
  • Hover effects with color-coded highlights:
    • Shutdown: Red tint
    • Reboot: Blue tint
    • Suspend: Gold tint
  • Semi-transparent backgrounds that glow on hover
  • IPC integration for power actions

Session Selector

  • Dropdown positioned below login form
  • Lists sessions from daemon via ListSessions IPC
  • Dropdown opens upward above the button
  • Hover highlighting on items
  • Checkmark indicator on selected session
  • Selected session's exec command used for login

Supporting Changes

  • Added POINTER_MOTION to X11 event mask for hover tracking
  • Mouse position tracking in main loop
  • Click handling for interactive elements

Files Added/Modified

  • gardm-greeter/src/icons.rs - Custom icon drawing functions
  • gardm-greeter/src/widgets/power_buttons.rs - Power button widget
  • gardm-greeter/src/widgets/session_selector.rs - Session dropdown widget
  • gardm-greeter/src/main.rs - Event handling integration
  • gardm-greeter/src/window.rs - Mouse motion events
View source
1 # Sprint 5: Power Buttons and Session Selector
2
3 **Goal:** Add power control buttons (shutdown, reboot, suspend) and a session selector dropdown to the greeter UI.
4
5 ## Completed Features
6
7 ### Power Buttons
8 - Custom Cairo-drawn icons (no external dependencies):
9 - Power symbol (circle with vertical line gap at top)
10 - Reboot (circular arrows)
11 - Suspend (crescent moon)
12 - Bottom-right corner positioning
13 - Hover effects with color-coded highlights:
14 - Shutdown: Red tint
15 - Reboot: Blue tint
16 - Suspend: Gold tint
17 - Semi-transparent backgrounds that glow on hover
18 - IPC integration for power actions
19
20 ### Session Selector
21 - Dropdown positioned below login form
22 - Lists sessions from daemon via `ListSessions` IPC
23 - Dropdown opens upward above the button
24 - Hover highlighting on items
25 - Checkmark indicator on selected session
26 - Selected session's exec command used for login
27
28 ### Supporting Changes
29 - Added `POINTER_MOTION` to X11 event mask for hover tracking
30 - Mouse position tracking in main loop
31 - Click handling for interactive elements
32
33 ## Files Added/Modified
34 - `gardm-greeter/src/icons.rs` - Custom icon drawing functions
35 - `gardm-greeter/src/widgets/power_buttons.rs` - Power button widget
36 - `gardm-greeter/src/widgets/session_selector.rs` - Session dropdown widget
37 - `gardm-greeter/src/main.rs` - Event handling integration
38 - `gardm-greeter/src/window.rs` - Mouse motion events