This document outlines potential future enhancements and areas for community contribution.
All Core Features from TODO.md have been implemented:
| Feature | Status | File |
|---|---|---|
| Logging system | ✅ Done | src/session/log.py |
| Async App Launching | ✅ Done | src/app/controller.py |
| Config Hot Reload | ✅ Done | src/config/watcher.py |
| Session Snapshots | ✅ Done | src/session/snapshot.py |
| Window state persistence | ✅ Done | src/session/snapshot.py |
| Plugin system | ✅ Done | src/plugins/system.py |
| Time-based auto-switching | ✅ Done | src/session/scheduler.py |
| Desktop notifications | ✅ Done | src/session/notify.py |
| Theme support | ✅ Done | src/ui/theme.py |
A comprehensive technical plan has been developed to transition SessionIntent beyond GNOME/Wayland to support multiple Linux desktop environments. See LINUX_DESKTOP_COMPATIBILITY_PLAN.md for detailed architecture.
- Provider Pattern: Abstract display, workspace, and extension layers
- Universal Workspace Manager: EWMH + wlroots support
- Session Detection: Auto-detect desktop environment at runtime (XDG-compliant)
- Testing Matrix: Multi-DE/distribution validation
- Subprocess-Based: No new Python dependencies - uses existing system tools
- Phase 1: Foundation - XDG paths, detection system, TUI fallback
- Phase 2: KDE Plasma + Hyprland (primary targets)
- Phase 3: wlroots generic + Sway
- Phase 4: EWMH fallback + testing
- GNOME Wayland: Fully supported (existing)
- KDE Plasma: Planned (Priority 1)
- Hyprland: Planned (Priority 1)
- Generic wlroots: Planned (Priority 2)
- Sway: Planned (Priority 2)
- GNOME X11: May work with existing gdbus
Difficulty: High
Add abstraction layer for KDE Plasma workspace management:
# Proposed structure
class WorkspaceManager(ABC):
@abstractmethod
def switch_workspace(self, num: int) -> bool: ...
@abstractmethod
def get_current_workspace(self) -> int | None: ...
class GNOMEWorkspaceManager(WorkspaceManager):
# Current implementation
class KDEWorkspaceManager(WorkspaceManager):
# Use qdbus or ... for workspace controlRelevant files to modify:
src/workspace/manager.pysrc/session/manager.py
Difficulty: Medium
Use Hyprland's IPC socket for workspace control:
# Possible approach
hyprctl workspace <n>
hyprctl activeworkspaceDifficulty: Medium
Use swaymsg similar to Hyprland approach.
Difficulty: Low
Create PKGBUILD for Arch User Repository.
Difficulty: Medium
Package as Flatpak for universal Linux distribution.
Difficulty: Low
Create .deb package for Debian-based distributions.
Difficulty: Low
Add terminal-based mode selector for headless environments:
sessionintent --tuiDifficulty: Medium
Show what apps will launch before confirming:
sessionintent --preview work
# Output:
# Workspace 1: firefox (profile: work), vscode
# Workspace 2: slack, thunderbird- Add more unit tests
- Add integration tests
- Test on multiple GNOME versions
- Fork the repository
- Pick an item from this roadmap
- Open a discussion issue before starting major work
- Submit a pull request
For questions, reach out via GitHub Issues.