SeatShell is a Rust/Slint Wayland shell centered on a built-in SingleSeat Overview for managing local sessions without turning into a full KDE or GNOME clone. The goal is not feature parity with the large desktop environments. The goal is a focused shell with a clear point of view, reliable session behavior, and a signature user/session-management experience.
This roadmap is ordered by product value and engineering risk. Each phase should leave the project in a shippable state.
SeatShell should become:
- a real Wayland desktop session, not just a nested demo window
- a keyboard-friendly shell with launcher, desktop, panel, and overview workflows
- a trustworthy local session-management surface
- a visually distinctive desktop environment with a strong conceptual point of view
- a small, understandable codebase with strong packaging and test discipline
The repository already has:
- a
labwc-backed session launcher - a Slint shell window with desktop, launcher, panel, and overview surfaces
- a first-pass shared shell design system for spacing, color, and component styling
- D-Bus services for admin discovery and user-side app launch
- desktop file discovery and launching
- release/install scripts and a session desktop entry
Objective: make SeatShell boot and behave like a real desktop session.
- Start
labwc, SeatShell services, and shell from a coordinated session runner - Export session-scoped environment for child processes
- Prevent duplicate autostarted processes when the session runner already owns lifecycle
- Support nested windowed testing
- Generate an installable Wayland session launcher and validation script
- Validate generated Wayland session metadata and greeter-visible install paths
- Validate start-to-desktop flow from a display manager
- Add restart/recovery behavior when a child process exits unexpectedly
- Add persistent runtime logs under
~/.local/state/seatshell - Add explicit health checks for D-Bus services during session startup
- login manager launch works
- shell appears consistently
- compositor shortcuts target the live shell, not extra shell instances
- logs make failures diagnosable
Status: closed for the current shell UX scope. The daily shell workflow, first-run docs, empty states, and responsive windowed layouts are now in place; Linux login-session validation remains tracked under Phase 1.
Objective: turn the shell from a proof-of-concept into something someone can live in.
- Desktop quick-launch surface
- Recent application recall
- Launcher search with desktop metadata
- Panel counts and view toggles
- Keyboard selection and focus movement in launcher
- Pinned favorites managed from config/state
- Running-app task strip merged with pinned favorites
- Better panel information architecture for power, network, audio, notifications
- Desktop context menu or command surface
- Better empty/error states when no apps are discoverable
- First-run user guidance in docs, not in-app clutter
- apps can be launched comfortably with mouse and keyboard
- common tasks are discoverable without reading source code
- the shell looks intentional rather than accidental
Objective: make the overview the feature that justifies SeatShell existing.
- Read-only session discovery
- Session previews with privacy boundaries
- Real lock/logout/message actions behind authorization
- Policy-aware admin controls and audit trail
- Consent and visibility model for viewing another session
- Clear distinction between current session, inactive session, and locked session
- Overview keyboard navigation scaffolding
- Overview bulk actions
- users understand who can see what
- admins understand what actions are allowed
- the overview is clearly more than a decorative dashboard
Objective: behave like a desktop environment instead of an app launcher with a panel.
- Make the home surface feel like a real desktop canvas instead of a launcher/dashboard stack
- Move full app browsing into launcher/overlay surfaces so the desktop itself can prioritize workspace, active windows, files, and live system state
- Replace static desktop mock objects with real desktop interactions
- Draggable desktop icons with saved positions across restarts
- Snap-to-grid, auto-arrange, and collision rules for desktop items
- Desktop selection model: single-select, marquee selection, and keyboard focus movement
- Desktop file objects that can be opened, highlighted, and handed off to default apps
- Dock interaction parity with user expectations: focus, minimize/restore, running state, and active-window indication
- Real active-window presence on the desktop surface instead of quiet-state placeholders when apps are running
- Multi-monitor-aware desktop layout rules so icon placement and chrome do not break on different outputs
- Notifications daemon integration
- Audio status/control
- Power/battery status
- NetworkManager status
- Portal integration
- Polkit integration
-
systemd --userandloginctlsession awareness - Clipboard lifecycle behavior
- Default application and file-open handoff
- browsers, editors, portals, and core desktop flows behave normally
- desktop objects can be moved, selected, relaunched, and trusted to stay where the user put them
- the dock and desktop surface reflect real application state instead of static placeholders
- SeatShell can be a primary session on a developer workstation
Objective: make contributors and testers trust the project.
- VM-based integration tests under
dbus-run-session - labwc smoke tests
- shell D-Bus control tests
- packaging for Debian, Arch, and Fedora
- reproducible release checklist
- architecture docs for services and UI boundaries
- issue templates and contribution guide
- a new contributor can build, test, and run the shell quickly
- regressions are caught before release
Objective: bring the shell up to “serious project” standards.
- first-pass coherent spacing, color, and typography system
- second-pass visual polish across all shell states and interactions
- icon strategy beyond placeholder initials
- Interaction polish for desktop manipulation: drag thresholds, drop affordances, hover feedback, and non-janky motion
- Keyboard parity for desktop objects: selection, repositioning, launching, and context actions without a mouse
- focus rings and keyboard accessibility audit
- high-DPI and scaling validation
- localization-ready strings
- performance pass for startup and UI responsiveness
- the shell feels calm, readable, and robust
- accessibility is part of the build, not an afterthought
Status: in progress. A first full conceptual art-direction pass now exists in the shell UI, theme primitives, and design notes; remaining work is icon-system depth, motion, and broader usability validation.
Objective: push SeatShell from “clean and usable” into a desktop environment with unmistakable authorship, atmosphere, and emotional pull.
- Define a signature art direction for typography, color, light, texture, and motion
- Replace placeholder letter-icons with a coherent icon and illustration system
- Design a more conceptual desktop home surface with stronger hierarchy and fewer generic dashboard patterns
- Add animation and transition rules that feel deliberate without harming responsiveness
- Introduce a wallpaper, background, or scene treatment that gives the shell a recognisable identity
- Create polished states for empty, loading, error, and success surfaces so they feel designed rather than incidental
- Validate beauty against usability: preserve keyboard speed, legibility, and low cognitive load
- Produce a visual reference set or design spec so contributors can extend the same language consistently
- the shell is immediately recognisable from a screenshot
- the design feels intentional, memorable, and cohesive across every surface
- aesthetic ambition improves the product instead of fighting clarity or performance
- stable
labwcsession startup - remote shell commands for launcher/overview/desktop
- recent-app persistence
- roadmap and contributor-facing project direction
- keyboard-first launcher
- pinned favorites
- persistent logs
- display-manager validation
- real overview actions
- basic system integration
- package install story for at least one distro
- production-quality session launch
- polished daily shell workflow
- trustworthy overview permissions
- integration tests and release discipline
SeatShell should not try to out-KDE KDE or out-GNOME GNOME.
Avoid:
- cloning every desktop feature before the core idea is mature
- tightly coupling the shell to one compositor-specific UI trick too early
- adding privileged controls before privacy and audit behavior exist
- growing a settings surface faster than the shell’s operational quality
The next concrete engineering targets for this repository are:
- Validate display-manager session startup end to end on a real login manager
- Implement draggable desktop icons with persisted positions
- Add snap-to-grid and selection behavior so desktop objects feel reliable rather than decorative
- Add dock interaction parity for focus, minimize/restore, and running-state indication
- Add notification daemon integration beyond shell-local storage
- Start Phase 3 overview differentiation work for current, inactive, and locked sessions
- Add VM-based integration tests under
dbus-run-session - Add portal and polkit integration