This document outlines potential future enhancements and areas for community contribution.
- GNOME Wayland: Fully supported
- GNOME X11: Not tested (may work with modifications)
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 k什ML 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: Medium
Launch applications in parallel instead of sequentially:
async def apply_mode_async(mode: dict):
tasks = [launch_app(app) for app in apps]
await asyncio.gather(*tasks)Difficulty: Low
Reload config without restarting:
# Watch config files for changes
inotifywait -m ~/.config/sessionintent/Difficulty: High
Save and restore window positions:
# Use wmctrl or xdotool for X11
# Use GNOME's window search for WaylandDifficulty: 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.