SessionIntent switches between intent-based modes (work, gaming, browsing, …) that automatically launch, reuse, and organize applications across workspaces.
Backends are auto-detected: GNOME, KDE Plasma, Hyprland, Sway, generic wlroots, and an EWMH fallback — override with --backend.
- 🎯 Intent-based sessions - Define workflows as modes (work, browsing, gaming, …)
- 🖥️ Multi-desktop - Provider-based support for GNOME, KDE, Hyprland, Sway, wlroots, EWMH
- 🔋 Hardware awareness - Filter modes on battery vs AC power
- 📝 Declarative configuration -
config.yamlmodes +apps.yamlregistry (version: 2schema) - 🔒 Safe by default - Reuse before launch; destructive actions are explicit commands
- 🎛️ Workspace orchestration - Per-workspace app placement with optional monitor
- 👁️ Mode preview -
preview <mode>shows workspaces and apps before applying - 🔔 Notifications - Desktop notice on every mode switch
- 🧩 Plugins - Drop-in hooks in
~/.config/sessionintent/plugins/ - 🧪 Dev mode -
--devprints commands instead of executing
curl -fsSL https://raw.githubusercontent.com/fazrigading/SessionIntent/master/INSTALL.sh | bashpip install .Read docs/INSTALLATION.md for details. Distro packages: PKGBUILD in packaging/arch/, Debian sources in debian/, Flatpak manifest in packaging/flatpak/, RPM spec in packaging/fedora/ (all pending upload except the installer).
- Initialize SessionIntent:
sessionintent init- Set up your apps:
sessionintent setup-
Edit
~/.config/sessionintent/config.yamlto define your modes, read examples/config.example.yaml for reference. -
Launch the mode selector:
sessionintentUpgrading from flag-based CLI or version: 1 configs? See docs/MIGRATION.md.
# Select mode via UI (requires wofi/rofi) - default behavior
sessionintent
sessionintent select
# Apply specific mode directly (without wofi/rofi)
sessionintent apply browsing
# Preview a mode without applying
sessionintent preview browsing
# Session control
sessionintent panic # Clear state (no app termination)
sessionintent quit # Gracefully close managed apps
sessionintent clear # Clear state files only
sessionintent kill # Force kill managed apps
sessionintent suspend # Suspend session
# Status and listing
sessionintent status # Show current status
sessionintent list # List available modes
# Configuration
sessionintent init # Initialize default configs and extension
sessionintent setup # Set up SessionIntent (scan apps)
sessionintent scan # Rescan installed apps
sessionintent scan --force # Rescan, ignore cache
sessionintent reload # Reload configuration
sessionintent version # Display version information
# Global flags (come before the command)
sessionintent --dev apply work
sessionintent --backend sway apply work
sessionintent --config ~/other.yaml list| File | Purpose |
|---|---|
~/.config/sessionintent/config.yaml |
User mode definitions ($XDG_CONFIG_HOME honored) |
~/.config/sessionintent/apps.yaml |
User app registry |
/usr/share/sessionintent/apps.yaml |
System app registry |
~/.local/state/sessionintent/current |
Current session state ($XDG_STATE_HOME honored) |
- Python 3.10+
- PyYAML
- wofi or rofi (OPTIONAL, for UI; terminal fallback otherwise)
- A supported desktop (GNOME, KDE, Hyprland, Sway, wlroots) or X11/EWMH
GPL-3.0-or-later - see LICENSE for details.
Contributions are welcome! See CONTRIBUTING.md and docs/ROADMAP.md for details.
- Provider-based multi-desktop support
- Inspired by window manager session management tools