Skip to content

A declarative session orchestration system for GNOME Wayland, not a replacement for window tiling management.

License

Notifications You must be signed in to change notification settings

fazrigading/SessionIntent

Repository files navigation

SessionIntent - Declarative session orchestration system for Linux with GNOME Wayland

SessionIntent allows you to switch between different "intent-based modes" (Work, Gaming, Browsing, etc.) that automatically launch, reuse, and organize your applications across workspaces.

Features

  • 🎯 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

Quick Start

Installation

# 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 --init

Read docs/INSTALLATION.md for more details on manual installation.

Configuration

  1. Initialize default config:
sessionintent --init
  1. Edit ~/.config/sessionintent/config.yaml to define your modes, read examples/config.example.yaml for reference.

  2. Launch the mode selector:

sessionintent

Usage

# 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

Key Files

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

Requirements

  • Python 3.10+
  • PyYAML
  • wofi or rofi (OPTIONAL, for UI)
  • GNOME Wayland

Project Structure

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/

Distribution

  • Fedora: sudo dnf install sessionintent (via COPR) [PLANNED]
  • Other distros: Use install.sh script

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! See CONTRIBUTING.md and docs/ROADMAP.md for details.

Acknowledgments

  • Built for GNOME Wayland
  • Inspired by window manager session management tools

About

A declarative session orchestration system for GNOME Wayland, not a replacement for window tiling management.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors