| Crates.io | stasis |
| lib.rs | stasis |
| version | 0.8.5 |
| created_at | 2025-10-16 17:22:50.372691+00 |
| updated_at | 2025-12-11 00:49:02.567544+00 |
| description | A lightweight, Feature Rich Wayland idle manager written in Rust. |
| homepage | |
| repository | https://github.com/saltnpepper97/stasis |
| max_upload_size | |
| id | 1886430 |
| size | 2,131,351 |
A modern Wayland idle manager that knows when to step back.
Keep your session in perfect balance—automatically preventing idle when it matters, allowing it when it doesn't.
Features • Installation • Quick Start • Compositor Support • Media Bridge Plugin • Contributing
Stasis doesn't just lock your screen after a timer—it understands context. Watching a video? Reading a document? Playing music? Stasis detects these scenarios and intelligently manages idle behavior, so you never have to jiggle your mouse to prevent an unwanted screen lock.
🧠 Smart idle detection with configurable timeouts
🎵 Media-aware idle handling – automatically detects media playback
🌐 Per-tab browser detection – optional Media Bridge plugin for granular media tracking
🚫 Application-specific inhibitors – prevent idle when specific apps are running
⏸️ Idle inhibitor respect – honors Wayland idle inhibitor protocols
🛌 Lid events via DBus – detect laptop lid open/close events to manage idle
⚙️ Flexible action system – supports named action blocks and custom commands
🔍 Regex pattern matching – powerful app filtering with regular expressions
📝 Clean configuration – uses the intuitive RUNE configuration language
⚡ Live reload – update configuration without restarting the daemon
lock-screen action block is present and properly configured, Stasis tracks the PID of the command it executes to ensure the sequence stays intact.libnotify.lock_detection_type config for compositors using loginctl (e.g., quickshell). Uses busctl to query systemd-logind's LockedHint property.Install the stable release or latest development version:
# Stable release
yay -S stasis
# Or latest git version
yay -S stasis-git
Works with paru too:
paru -S stasis
please note the note at the bottom about flakes and nix.
If you use Nix flakes, stasis provides a flake.nix so you can build or
consume the package directly from flakes.
Quick ways to use stasis from flakes:
# build the stasis package from GitHub
nix build 'github:saltnpepper97/stasis#stasis'
stasis as an input in your own flake.nix and reference the package in
your outputs or NixOS configuration. Example (snippet):inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
stasis.url = "github:saltnpepper97/stasis";
};
outputs = { self, nixpkgs, ... }:
let
system = "x86_64-linux"; # adjust for your host
in {
# reference the stasis package from the stasis flake
packages.${system}.my-stasis = self.inputs.stasis.packages.${system}.stasis;
# Or add it to a NixOS configuration
nixosConfigurations.<host> = nixpkgs.lib.nixosSystem {
inherit system;
modules = [ ./configuration.nix ];
configuration = {
environment.systemPackages = [ self.inputs.stasis.packages.${system}.stasis ];
};
};
}
Notes:
git
cargo
rust
dbus
libinput
libnotify - (optional) for desktop notifications
playerctl - (optional) for enhanced media player detection
pulseaudio or pipewire-pulse - (optional) for audio detection
Build and install manually for maximum control:
# Clone and build
git clone https://github.com/saltnpepper97/stasis
cd stasis
cargo build --release --locked
# Install system-wide
sudo install -Dm755 target/release/stasis /usr/local/bin/stasis
# Or install to user directory
install -Dm755 target/release/stasis ~/.local/bin/stasis
Get up and running in just a few minutes!
See the webpage for quick start instructions, including how to ensure your user is in the input group and much more!
Stasis integrates with each compositor's native IPC protocol for optimal app detection and inhibition.
| Compositor | Support Status | Notes |
|---|---|---|
| Niri | ✅ Full Support | Tested and working perfectly |
| Hyprland | ✅ Full Support | Native IPC integration |
| labwc | ⚠️ Limited | Process-based fallback (details below) |
| River | ⚠️ Limited | Process-based fallback (details below) |
| Your Favorite | 🤝 PRs Welcome | Help us expand support! |
Both River and labwc have IPC protocol limitations that affect Stasis functionality:
💡 Tip: When using River or labwc, include both exact executable names and flexible regex patterns in your
inhibit_appsconfiguration. Enable verbose logging to see which apps are detected.
We welcome contributions! Adding support typically involves:
Check existing implementations in the codebase for reference, and don't hesitate to open an issue if you need guidance.
Media Bridge is an optional browser extension that provides accurate per-tab media detection. While SoundTabs is a standalone project not exclusive to Stasis, it solves critical browser media detection issues that benefit idle management.
Standard browser MPRIS implementations have significant limitations:
Media Bridge fixes these issues by providing real-time, per-tab audio state directly from the browser.
| Browser | Status | Installation |
|---|---|---|
| Firefox | ✅ Available | Install Media Bridge |
| Chrome/Chromium | 🚧 Coming Soon | Extension in development |
| Brave/Edge/Vivaldi | 🚧 Coming Soon | Will use Chrome extension |
📝 Note: Media Bridge is completely optional and not Stasis-specific. Stasis works great without it using improved MPRIS detection with audio sink verification.
Stasis uses RUNE—a purpose-built configuration language that's both powerful and approachable.
Why RUNE?
r"regex.*" for patterns without escaping hell#@ annotationsRUNE makes configuration feel less like programming and more like describing what you want—because that's what a config should be.
Thank you for making Stasis better for everyone! To keep contributions organized and efficient, please follow these guidelines.
Bug Reports & Feature Requests
bug for errors, feature request for new ideas, enhancement for improvements.Packaging & Compositor Contributions
packaging or compositor.Other Contributions
discussion, help wanted, or needs review can help guide attention.Released under the MIT License – free to use, modify, and distribute.
Built with ❤️ for the Wayland community
Keeping your session in perfect balance between active and idle