niri-ipc
Control the Niri Wayland compositor on Linux via its IPC (`niri msg --json` / $NIRI_SOCKET). Use when you need to query Niri state (outputs/workspaces/windows/focused window) or perform actions (focus/move/close windows, switch workspaces, spawn commands, reload config) from an OpenClaw agent running on a Niri session.
Best use case
niri-ipc is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Control the Niri Wayland compositor on Linux via its IPC (`niri msg --json` / $NIRI_SOCKET). Use when you need to query Niri state (outputs/workspaces/windows/focused window) or perform actions (focus/move/close windows, switch workspaces, spawn commands, reload config) from an OpenClaw agent running on a Niri session.
Teams using niri-ipc should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/niri-ipc/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How niri-ipc Compares
| Feature / Agent | niri-ipc | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Control the Niri Wayland compositor on Linux via its IPC (`niri msg --json` / $NIRI_SOCKET). Use when you need to query Niri state (outputs/workspaces/windows/focused window) or perform actions (focus/move/close windows, switch workspaces, spawn commands, reload config) from an OpenClaw agent running on a Niri session.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Niri IPC Use Niri IPC through the `niri msg` CLI (preferred) or by writing JSON requests to `$NIRI_SOCKET`. This skill assumes: - You are on Linux with Niri running. - `$NIRI_SOCKET` is set (usually true inside the Niri session). ## Quick start (recommended) Use the bundled helper script (wrapper around `niri msg --json`): ```bash ./skills/niri-ipc/scripts/niri.py version ./skills/niri-ipc/scripts/niri.py outputs ./skills/niri-ipc/scripts/niri.py workspaces ./skills/niri-ipc/scripts/niri.py windows ./skills/niri-ipc/scripts/niri.py focused-window ``` ## Deeper control ### 1) High-level helpers (window matching) Use `scripts/niri_ctl.py` when you want to refer to windows by **title/app_id substring** instead of ids: ```bash # List windows (optionally filtered) ./skills/niri-ipc/scripts/niri_ctl.py list-windows --query firefox # Focus a window by substring match ./skills/niri-ipc/scripts/niri_ctl.py focus firefox # Close a matched window (focus then close) ./skills/niri-ipc/scripts/niri_ctl.py close firefox # Move a matched window to a workspace (by index or by name) ./skills/niri-ipc/scripts/niri_ctl.py move-to-workspace firefox 3 ./skills/niri-ipc/scripts/niri_ctl.py move-to-workspace firefox web # Focus a workspace by index or name ./skills/niri-ipc/scripts/niri_ctl.py focus-workspace 2 ./skills/niri-ipc/scripts/niri_ctl.py focus-workspace web ``` ### 2) Full IPC access (raw socket) Use `scripts/niri_socket.py` to talk to `$NIRI_SOCKET` directly (newline-delimited JSON): ```bash # Send a simple request (JSON string) ./skills/niri-ipc/scripts/niri_socket.py raw '"FocusedWindow"' # Batch requests: one JSON request per line on stdin printf '%s\n' '"FocusedWindow"' '"Workspaces"' | ./skills/niri-ipc/scripts/niri_socket.py stdin # Event stream (prints JSON events until interrupted) ./skills/niri-ipc/scripts/niri_socket.py event-stream ``` ### Actions Pass through Niri actions: ```bash # Focus workspace by index ./skills/niri-ipc/scripts/niri.py action focus-workspace 2 # Move focused window to workspace ./skills/niri-ipc/scripts/niri.py action move-window-to-workspace 3 # Focus a window by id ./skills/niri-ipc/scripts/niri.py action focus-window 123 # Close focused window ./skills/niri-ipc/scripts/niri.py action close-window # Reload niri config ./skills/niri-ipc/scripts/niri.py action load-config-file # Spawn (no shell) ./skills/niri-ipc/scripts/niri.py action spawn -- alacritty # Spawn through shell ./skills/niri-ipc/scripts/niri.py action spawn-sh -- 'notify-send hello' ``` ### Output configuration Use `niri msg output ...` via the wrapper: ```bash ./skills/niri-ipc/scripts/niri.py output --help ``` ## Working directly with `niri msg` If you don’t want the helper script, call Niri directly: ```bash niri msg --json windows niri msg --json action focus-workspace 2 ``` Tip: if `niri msg` parsing errors happen after upgrades, restart the compositor (new `niri msg` against old compositor is a common mismatch). ## Event stream For status bars/daemons: Niri can stream events. ```bash # Raw JSON event lines (runs until interrupted) ./skills/niri-ipc/scripts/niri.py event-stream # Just a few lines for a quick test ./skills/niri-ipc/scripts/niri.py event-stream --lines 5 ``` ## Troubleshooting - If commands fail with “NIRI_SOCKET is not set”: run inside your Niri session, or export the socket path. - If you need the socket protocol details, read: `./skills/niri-ipc/references/ipc.md`. - If your goal is complex automation (pick the right window by title/app_id, etc.), first query `windows`, then act by window id.
Related Skills
paylock
Non-custodial SOL escrow for AI agent deals.
agent-reputation
summary: Cross-platform AI agent reputation checker with trust scoring and PayLock escrow recommendations.
Telecom Agent Skill
Turn your AI Agent into a Telecom Operator. Bulk calling, ChatOps, and Field Monitoring.
OpenClaw-Finnhub
OpenClaw skill for real-time stock quote, and financials via Finnhub API.
```markdown
# OpenClaw-Last.fm
security-operator
Runtime security guardrails for OpenClaw agents.
operator-humanizer
Transform AI-generated text into authentic human writing.
kit-email-operator
**AI-powered email marketing for Kit (ConvertKit)**.
agora
Trade prediction markets on Agora — the prediction market exclusively for AI agents. Register, browse markets, trade YES/NO, create markets, earn reputation via Brier scores.
surf-check
Surf forecast decision engine.
jinko-flight-search
Search flights and discover travel destinations using the Jinko MCP server. Provides two core capabilities: (1) Destination discovery — find where to travel based on criteria like budget, climate, or activities when the user has no specific destination in mind, and (2) Specific flight search — compare flights between two known cities/airports with flexible dates, cabin classes, and budget filters. Use this skill when the user wants to: search for flights, find cheap flights, discover travel destinations, compare flight prices, plan a trip, find deals from a specific city, or explore where to go. Triggers on any flight-booking, travel-planning, or destination-discovery request. Requires the Jinko MCP server connected at https://mcp.gojinko.com.
mlx-whisper
Local speech-to-text with MLX Whisper (Apple Silicon optimized, no API key).