Commits

trunk
All users
Until Mar 14, 2026
March 2026
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4
5 6 7 8 9 10 11

Commits on February 10, 2026

Commits on January 29, 2026

  1. mfwolffe committed
  2. mfwolffe committed

Commits on January 28, 2026

  1. mfwolffe committed

Commits on January 24, 2026

  1. mfwolffe committed

Commits on January 22, 2026

Commits on January 20, 2026

  1. mfwolffe committed
  2. mfwolffe committed
  3. mfwolffe committed

Commits on January 18, 2026

  1. mfwolffe committed
  2. espadonne committed

Commits on January 17, 2026

  1. espadonne committed
  2. daemon: Remove debug eprintln statements
    Remove informational eprintln debug statements that were added during
    development. Error messages in session.rs child process are retained
    since tracing is not fork-safe and eprintln is the only way to report
    errors from the forked child.
    mfwolffe committed
  3. session: Rewrite session launch with fork/exec and PAM
    Wayland compositors like Hyprland use libseat to get device access
    (DRM, input) through logind. This requires a properly registered
    logind session, which pam_systemd creates during open_session().
    
    The key insight is that PAM open_session() must be called in the
    process that becomes the user session, not in the daemon. This commit
    rewrites session launching to use manual fork/exec:
    
    Child process (becomes user session):
    1. Call setsid() to become session leader
    2. Set XDG_SESSION_TYPE, XDG_VTNR, XDG_SEAT for pam_systemd
    3. PAM authenticate() and open_session() - registers with logind
    4. Drop privileges (initgroups, setgid, setuid)
    5. Set up controlling TTY for Wayland (chown, TIOCSCTTY)
    6. execve() the compositor
    
    Parent process (daemon):
    1. Wait for child with waitpid()
    2. Handle session end, restart greeter
    
    Other changes:
    - Add resolve_command() to find executables in user PATH
    - Use std::mem::forget() to prevent PAM client drop closing session
    - Build environment variables as CStrings for execve()
    mfwolffe committed
  4. main: Pass password to session spawner
    Connect the authentication module to the session spawner by:
    - Adding password field to SessionStartInfo (with redacted Debug impl)
    - Passing password to UserSession::start() for both X11 and Wayland
    - Improved error handling for Wayland session failures with X restart
    - Add debug logging for session startup flow
    mfwolffe committed
  5. auth: Prepare authentication for child process PAM
    Wayland compositors need proper logind session registration for device
    access (DRM, input). This requires PAM open_session() to be called in
    the process that will become the user session, not in the daemon.
    
    Changes:
    - Store password in Authenticated state for session spawner to use
    - Rename pam_authenticate to pam_verify_only (no open_session)
    - Export PAM_SERVICE_NAME constant for session module
    - Update take_authenticated to return (username, password) tuple
    
    The actual PAM open_session() call is now deferred to the forked
    child process in the session module.
    mfwolffe committed
  6. greeter: Split session exec command on whitespace
    Session desktop files like Plasma's have multi-word Exec lines
    (e.g., "/usr/libexec/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland").
    Split the exec string into command and arguments so these sessions
    can be launched correctly.
    mfwolffe committed

Commits on January 16, 2026

  1. Pass session_type from greeter to daemon
    Add session_type parameter to handle_login function and include
    it in the StartSession IPC request. Get session type from the
    session selector for both button click and Enter key handlers.
    mfwolffe committed
  2. Add session_type parameter to UserSession::start
    Update UserSession::start signature to accept session_type and
    optional display. Set XDG_SESSION_TYPE based on session type.
    For Wayland sessions, set up controlling TTY via setsid/TIOCSCTTY.
    
    Update daemon to pass session_type through SessionStartInfo and
    branch on session type for X11 vs Wayland handling. For Wayland,
    stop X server before launching compositor and restart afterward.
    mfwolffe committed
  3. Add selected_type() helper to SessionSelector
    Returns the session type (x11/wayland) for the currently selected
    session, used by the greeter to inform the daemon.
    mfwolffe committed
  4. Enable Wayland session discovery
    Enumerate sessions from /usr/share/wayland-sessions/ in addition
    to X11 sessions. Each session is tagged with its type (x11/wayland)
    for the daemon to handle appropriately.
    mfwolffe committed
  5. Add session_type field to StartSession IPC request
    Add session_type field to distinguish X11 and Wayland sessions.
    Uses serde default for backward compatibility with existing clients.
    mfwolffe committed
  6. mfwolffe committed
  7. Try multiple wallpaper paths before using default
    Check common wallpaper locations in order before falling
    back to the hardcoded default path.
    mfwolffe committed
  8. Add tooltips, dynamic cursors, and fix rendering issues
    Add power button tooltips that appear on hover. Implement
    dynamic cursor changes: text cursor over input fields,
    pointer cursor over clickable elements.
    
    Auto-select first user on startup and skip to password field.
    Add login button click handling.
    
    Fix power icon vertical line direction. Clear Cairo path
    state in avatar rendering to prevent path leaks between
    draws.
    mfwolffe committed
  9. Add cursor type support and fix large display rendering
    Implement CursorType enum with Default, Text, and Pointer
    variants using X11 cursor font glyphs. Add set_cursor()
    method that only updates when cursor type changes.
    
    Clear root window on startup to hide leftover content from
    previous sessions (e.g., garbg wallpaper pixmaps).
    
    Chunk put_image into 1MB segments to avoid exceeding X11
    maximum request size on large displays.
    mfwolffe committed
  10. Add cursor positioning and text selection to login form
    Implement proper cursor movement with arrow keys, Home, End,
    and Delete. Support shift+arrow for text selection with
    visual highlight. Handle click-to-place cursor in text fields.
    
    Fix caps lock interaction with shift key for correct case
    handling on letter keys.
    mfwolffe committed