AdEx-Partners-DE/OpenNiri-Windows
AdEx-Partners-DE/OpenNiri-Windows has 55 GitHub stars and 4 forks. GitHot measured +1 stars in 24 hours, +1 in 7 days, and +6 in 15 days. Last checked 2026-11-15 05:50 UTC. Last push 2026-10-30.
Measured star growth
- in 24h
- +1
- in 7 days
- +1
- in 15 days
- +6
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
Scrollable tiling window manager for Windows 10/11 in Rust - Niri-style horizontal workspace, global hotkeys, and multi-monitor support.
ProductivityREADME.md
OriginalOpenNiri-Windows
OpenNiri-Windows is a scrollable tiling window manager for Windows 10/11, built in Rust.
It brings the Niri-style horizontal workspace model to native Windows without replacing DWM.
Product Positioning
Most Windows tilers are tree/BSP-driven. OpenNiri-Windows is scroll-first:
- Windows are arranged on a horizontal strip.
- Your monitor acts as a viewport over that strip.
- Navigation remains spatially consistent as windows are added.
- You move through workspace context instead of constantly rebuilding split trees.
Who This Is For
- Keyboard-driven users who manage many windows every day.
- Engineers, analysts, operators, and creators on single or multi-monitor setups.
- Teams that want an open-source Windows tiler with transparent architecture and Rust codebase.
Capability Snapshot
Implemented now:
- Multi-monitor workspaces with monitor-aware focus and move commands
- Global hotkeys with live config reload
- Floating and fullscreen toggles
- Width presets (
Alt+1/2/3) and equalize (Alt+0) - Smooth scroll animations, snap hints, and touchpad gestures (experimental, off by default)
- Optional focus-follows-mouse
- System tray actions (pause/reload/open config/open logs/exit)
- Workspace persistence and safer shutdown/recovery behavior
- Safe mode for troubleshooting (
--safe-mode) - Built-in diagnostics (
openniri-cli doctor)
Product Status
OpenNiri-Windows is alpha and under active development.
What this means in practice:
- Core behavior is implemented and tested in CI.
- UX is currently keyboard/config-first (no full GUI setup flow yet).
- Some Windows-managed/system windows can reject movement or styling operations.
- Current release state (as of 2026-02-08): no tagged public release yet, so source build is the primary install path.
Quick Start
Option A: Download (When Available)
- Open GitHub Releases
- If a tagged release is available, download the latest
.ziparchive - Extract
openniri.exeandopenniri-cli.exeto a folder - (Optional) Add the folder to your
PATH - Generate a default config:
openniri-cli init - Start the daemon:
openniri-cli run
Option B: Build from Source (Recommended for Current Alpha)
Prerequisites: Rust GNU toolchain (stable-x86_64-pc-windows-gnu) and MinGW linker
rustup toolchain install stable-x86_64-pc-windows-gnu
git clone https://github.com/AdEx-Partners-DE/OpenNiri-Windows.git
cd OpenNiri-Windows
cargo +stable-x86_64-pc-windows-gnu build --release
cargo +stable-x86_64-pc-windows-gnu run -p openniri-cli -- init
cargo +stable-x86_64-pc-windows-gnu run -p openniri-cli -- run
The workspace is configured for GNU (x86_64-pc-windows-gnu) in .cargo/config.toml, and binaries are placed in target/release/.
First Steps After Install
| Step | Command | What It Does |
|---|---|---|
| Create config | openniri-cli init |
Writes a default config.toml with comments |
| Start daemon | openniri-cli run |
Launches the window manager in the background |
| Check status | openniri-cli status |
Shows version, monitors, windows, uptime |
| Toggle pause | openniri-cli toggle-pause (alias: pause) |
Pauses/resumes tiling without stopping the daemon |
| Run diagnostics | openniri-cli doctor |
Checks binary, config, daemon, and system state |
| Stop daemon | openniri-cli stop |
Requests shutdown, waits for teardown confirmation, and runs local emergency restore if confirmation fails |
| Emergency local restore | openniri-cli emergency-uncloak (alias: restore-windows) |
Best-effort local visibility restore without daemon IPC |
| Reload config | openniri-cli reload |
Applies config changes without restarting |
If the desktop becomes unresponsive or focus gets trapped, use non-destructive recovery first:
openniri-cli panic-revert
openniri-cli status # must fail (timeout OR "Daemon is not running...") before rerun
If panic-revert cannot confirm daemon response, it now also executes a local visibility restore path automatically.openniri-cli stop now uses the same local restore safety net when shutdown confirmation is ambiguous.
You can also use openniri-cli recover as a short alias for panic-revert.
If no terminal is reachable, use tray Emergency: Uncloak All Windows and then Exit.
Start safe mode only after shutdown is confirmed:
openniri-cli run --safe-mode
For a full walkthrough, see docs/GETTING_STARTED.md. For incident recovery details, see docs/SUPPORT_PLAYBOOK.md.
Default Hotkeys
Most Win+letter combinations are reserved by Windows 11 (Win+L can never be registered), so the defaults use Alt, like GlazeWM. Existing config files keep whatever bindings they contain. Hotkeys that cannot be registered are logged by name and the rest stay active.
| Key | Action |
|---|---|
Alt+H / Alt+L |
Focus left / right |
Alt+J / Alt+K |
Focus down / up |
Alt+Shift+H / Alt+Shift+L |
Move column left / right |
Alt+Ctrl+H / Alt+Ctrl+L |
Shrink / grow column |
Win+Ctrl+Escape |
Emergency visibility restore + daemon panic-revert |
Win+Alt+H / Win+Alt+L |
Focus monitor left / right |
Win+Alt+Shift+H / Win+Alt+Shift+L |
Move window to monitor left / right |
Alt+Shift+Q |
Close focused window |
Alt+F |
Toggle floating |
Alt+Shift+F |
Toggle fullscreen |
Alt+1 / Alt+2 / Alt+3 |
Set width to 1/3, 1/2, 2/3 |
Alt+0 |
Equalize all column widths |
Alt+Shift+R |
Refresh (re-enumerate windows) |
Start Automatically with Windows
openniri-cli autostart enable
This writes a Registry entry under HKCU\Software\Microsoft\Windows\CurrentVersion\Run that launches the daemon on login. To disable:
openniri-cli autostart disable
Config and Runtime Paths
Config file:
%APPDATA%\openniri\config\config.toml
State data:
%APPDATA%\openniri\data\workspace-state.json
Daemon logs:
%TEMP%\openniri-daemon.log%TEMP%\openniri-daemon.err.log
Architecture
OpenNiri-Windows is a Rust workspace:
| Crate | Responsibility |
|---|---|
openniri-core-layout |
Platform-agnostic layout engine |
openniri-platform-win32 |
Win32 integration and window operations |
openniri-ipc |
Named-pipe command/response protocol |
openniri-daemon |
Runtime event loop and state management |
openniri-cli |
User-facing command line interface |
Technical docs:
- Getting Started - Step-by-step walkthrough
- Configuration - Full config reference with examples
- Troubleshooting - Common issues and debugging guide
- Specification - Design specification
- Architecture - Architecture overview
- Windows Constraints - Win32 platform constraints
Platform Constraints
OpenNiri-Windows is a window controller, not a compositor.
- DWM remains the compositor.
- Elevated or protected windows may reject placement/styling changes.
- Behavior can vary across app frameworks (Win32/WPF/Electron/UWP).
Contributing
See CONTRIBUTING.md.
License
GPL-3.0. See LICENSE.