Skip to main content

SessionIntent: Declarative session orchestration for Linux desktops

License: GPL v3 Python 3.10+ PyPI CI Release

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).

Features

  • 🎯 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.yaml modes + apps.yaml registry (version: 2 schema)
  • 🔒 Safe by default - Reuse before launch; destructive actions are explicit commands
  • 🎛️ Workspace orchestration - Per-workspace app placement with optional monitor; switches wait until the app window is visible (GNOME Shell 46–51 via bundled extension)
  • 👁️ 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 - --dev prints commands instead of executing

Quick Start

Installation

curl -fsSL https://raw.githubusercontent.com/fazrigading/SessionIntent/master/INSTALL.sh | bash

Method 2: Using uv

uv tool install git+https://github.com/fazrigading/SessionIntent

Or run without installing:

uvx --from git+https://github.com/fazrigading/SessionIntent sessionintent --help

Method 3: Manual installation (pip)

pip 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).

Configuration

  1. Initialize SessionIntent:
sessionintent init
  1. Set up your apps:
sessionintent setup
  1. Edit ~/.config/sessionintent/config.yaml to define your modes, read examples/config.example.yaml for reference.

  2. Launch the mode selector:

sessionintent

Upgrading from flag-based CLI or version: 1 configs? See docs/MIGRATION.md.

Usage

# 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

Key Files

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)

Requirements

  • Python 3.10+
  • PyYAML
  • wofi or rofi (OPTIONAL, for UI; terminal fallback otherwise)
  • A supported desktop (GNOME, KDE, Hyprland, Sway, wlroots) or X11/EWMH

License

GPL-3.0-or-later - see LICENSE for details.

Contributing

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

Acknowledgments

  • Provider-based multi-desktop support
  • Inspired by window manager session management tools

Metadata

Release files for sessionintent 0.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sessionintent 0.4.3
File Size Uploaded
sessionintent-0.4.3.tar.gz 63.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sessionintent 0.4.3
File Interpreter ABI Platform
sessionintent-0.4.3-py3-none-any.whl Python 3 none any Details

Total release size: 143.1 kB

Release files / sessionintent-0.4.3.tar.gz

Download URL sessionintent-0.4.3.tar.gz
Size 63.6 kB
Tags Source
SHA-256 checksum
How to use checksums
64945caabc1c84bf6d5dc4304b9bf779c472a4b9ce21eb55f6a63605d63de609
BLAKE2b-256 checksum
How to use checksums
d3f365f265a5cd1a808e0dab8d2ab576f4d938efdd97139c79406873c8d124ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / sessionintent-0.4.3-py3-none-any.whl

Download URL sessionintent-0.4.3-py3-none-any.whl
Size 79.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b1ca7e6d5874d1626f6da3a8ec904e8e929dd63585995410061c11bea0c428b6
BLAKE2b-256 checksum
How to use checksums
c127f5ce4b0a20970664268bab61b7b6fa2eb9b368dc2541d48d101824ab982b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.4.3 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page