niri-ipc

GitHub

用于在 Linux Niri Wayland 合成器中通过 IPC 查询状态或执行窗口管理操作,如聚焦、移动窗口和切换工作区。

skills/niri-ipc/SKILL.md viralcode/openwhale

Trigger Scenarios

需要查询 Niri 状态 需要控制窗口或工作区

Install

npx skills add viralcode/openwhale --skill niri-ipc -g -y
More Options

Use without installing

npx skills use viralcode/openwhale@niri-ipc

指定 Agent (Claude Code)

npx skills add viralcode/openwhale --skill niri-ipc -a claude-code -g -y

安装 repo 全部 skill

npx skills add viralcode/openwhale --all -g -y

预览 repo 内 skill

npx skills add viralcode/openwhale --list

SKILL.md

Frontmatter
{
    "name": "niri-ipc",
    "description": "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."
}

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

./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:

# 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):

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

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

./skills/niri-ipc/scripts/niri.py output --help

Working directly with niri msg

If you don’t want the helper script, call Niri directly:

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.

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

Version History

  • 238a4b1 Current 2026-08-20 08:21

Same Skill Collection

skills/agenticflow-skill/SKILL.md
skills/agentlens/SKILL.md
skills/apple-hig/SKILL.md
skills/artifacts-builder/SKILL.md
skills/backend-patterns/SKILL.md
skills/bird/SKILL.md
skills/bot-bowl-party/SKILL.md
skills/botpress-adk/SKILL.md
skills/clawdbot-zoho-email/SKILL.md
skills/computer-use/SKILL.md
skills/deliberate-frontend-redesign/SKILL.md
skills/downloads/SKILL.md
skills/downloads/skills-skills-theme-factory/SKILL.md
skills/fanvue/SKILL.md
skills/frontend-design/SKILL.md
skills/human-optimized-frontend/SKILL.md
skills/linux-service-triage/SKILL.md
skills/miniflux-news/SKILL.md
skills/nextjs-expert/SKILL.md
skills/nodetool/SKILL.md
skills/pinak-frontend-guru/SKILL.md
skills/react-email-skills/SKILL.md
skills/remotion-best-practices/SKILL.md
skills/remotion-server/SKILL.md
skills/remotion-video-toolkit/SKILL.md
skills/resume-builder/SKILL.md
skills/slack/SKILL.md
skills/smtp-send/SKILL.md
skills/technews/SKILL.md
skills/telegram-reaction-prober/SKILL.md
skills/trmnl/SKILL.md
skills/ui-audit/SKILL.md
skills/ui-design-system/SKILL.md
skills/ui-skills/SKILL.md
skills/ui-ux-master/SKILL.md
skills/ux-audit/SKILL.md
skills/ux-decisions/SKILL.md
skills/ux-researcher-designer/SKILL.md
skills/vercel-react-best-practices/SKILL.md
skills/vision-sandbox/SKILL.md
skills/weather/SKILL.md
skills/web-design-guidelines/SKILL.md
skills/webapp-testing/SKILL.md
skills/winamp/SKILL.md
skills/xcodebuildmcp/SKILL.md
skills/zoho-email-integration/SKILL.md
skills/comfyui-runner/SKILL.md
skills/ui-ux-pro-max/SKILL.md

Metadata

Files
0
Version
238a4b1
Hash
e7a49c33
Indexed
2026-08-20 08:21

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-22 04:30
浙ICP备14020137号-1 $お客様$