SessionIntent allows you to switch between different "intent-based modes" (Work, Gaming, Browsing, etc.) that automatically launch, reuse, and organize your applications across workspaces.
- 🎯 Intent-based sessions - Define your workflow as modes (work, browsing, gaming, etc.)
- 🔋 Hardware awareness - Automatically adjust modes based on battery/AC power
- 📝 Declarative configuration - Single YAML file defines everything
- 🔒 Safe operations - No data loss, no forced kills
- 🎛️ Workspace orchestration - Advisory workspace placement
- 🧪 Dev mode - Test configurations and system functionality
- 🔄 Hot reload - Edit config and apply without restart
# Method 1: Using installer script
curl -fsSL https://raw.githubusercontent.com/fazrigading/SessionIntent/master/scripts/install.sh | bash
# Method 2: Manual installation
pip install -r requirements.txt
sessionintent --initRead docs/INSTALLATION.md for more details on manual installation.
- Initialize default config:
sessionintent --init-
Edit
~/.config/sessionintent/config.yamlto define your modes, read examples/config.example.yaml for reference. -
Launch the mode selector:
sessionintent# Select mode via UI (requires wofi/rofi) - default behavior
sessionintent
# Apply specific mode directly (without wofi/rofi)
sessionintent --mode browsing
sessionintent -m browsing
# Session control
sessionintent --panic / -P # Clear state (no app termination)
sessionintent --quit / -q # Gracefully close managed apps
sessionintent --clear # Clear state files only
sessionintent --kill / -k # Force kill managed apps
sessionintent --suspend -S # Suspend session
# Status and listing
sessionintent --status / -s # Show current status
sessionintent --list / -l # List available modes
# Configuration
sessionintent --init / -i # Initialize default config
sessionintent --reload / -r # Reload configuration
# Dry-run mode (for dev testing)
sessionintent --dev --mode work
sessionintent -d -m work| File | Purpose |
|---|---|
~/.config/sessionintent/config.yaml |
User mode definitions |
~/.config/sessionintent/apps.yaml |
User app registry |
/usr/share/sessionintent/apps.yaml |
System app registry |
~/.local/state/sessionintent/current |
Current session state |
- Python 3.10+
- PyYAML
- wofi or rofi (OPTIONAL, for UI)
- GNOME Wayland
SessionIntent/
├── src/
│ ├── __init__.py # Package exports
│ ├── __main__.py # CLI entry point
│ ├── constants/ # Configuration constants
│ │ ├── paths.py # Directory/file paths
│ │ └── defaults.py # Default configs
│ ├── config/ # Configuration management
│ │ ├── loader.py # YAML loading
│ │ └── validator.py # Schema validation
│ ├── hardware/ # Hardware detection
│ │ └── power.py # AC/battery detection
│ ├── app/ # Application management
│ │ ├── registry.py # App definitions
│ │ ├── controller.py # Launch/reuse logic
│ │ └── template.py # Template resolution
│ ├── workspace/ # Workspace management
│ │ └── manager.py # GNOME workspace switching
│ ├── ui/ # User interface
│ │ ├── selector.py # wofi/rofi interaction
│ │ └── display.py # Menu formatting
│ ├── session/ # Session orchestration
│ │ ├── manager.py # Main orchestrator
│ │ └── state.py # State persistence
│ └── cli/ # CLI
│ └── parser.py # Argument parsing
│
└── tests/ # Test suite
├── test_config/
├── test_hardware/
├── test_app/
├── test_workspace/
├── test_ui/
└── test_session/
- Fedora:
sudo dnf install sessionintent(via COPR) [PLANNED] - Other distros: Use
install.shscript
MIT License - see LICENSE for details.
Contributions are welcome! See CONTRIBUTING.md and docs/ROADMAP.md for details.
- Built for GNOME Wayland
- Inspired by window manager session management tools