AgentStack
SKILL verified MIT Self-run

Hyprland Control

skill-hdprajwal-agent-skills-hyprland-control · by hdprajwal

Inspect and control the Hyprland Wayland desktop from the shell via hyprctl — list/query windows, focus/move/resize/close them, switch and move things between workspaces, launch apps onto a target workspace, read monitor and cursor state. Use on Hyprland (Wayland) for any window or workspace management. Not for X11 (use wmctrl/xdotool there).

No reviews yet
0 installs
6 views
0.0% view→install

Install

$ agentstack add skill-hdprajwal-agent-skills-hyprland-control

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README — it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-hdprajwal-agent-skills-hyprland-control)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Hyprland Control? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Hyprland Control

Drive the Hyprland desktop with hyprctl. Everything is queryable as JSON (-j) and pipeable through jq, and every action is a dispatch.

Only works on Hyprland (echo $XDG_CURRENT_DESKTOPHyprland). On X11 use wmctrl/xdotool instead.

Query state (read-only, always safe)

hyprctl clients -j        # all windows: class, title, address, at[x,y], size[w,h], workspace, pid
hyprctl activewindow -j   # the focused window
hyprctl workspaces -j     # all workspaces
hyprctl activeworkspace -j
hyprctl monitors -j       # outputs: name, resolution, scale, position, focused
hyprctl cursorpos         # "X, Y" in logical pixels
hyprctl devices -j        # keyboards, mice

Useful extractions:

# active window class + title
hyprctl activewindow -j | jq -r '.class + " — " + .title'
# find a window's address by class
hyprctl clients -j | jq -r '.[] | select(.class=="firefox") | .address'
# list "class | title | workspace" for every window
hyprctl clients -j | jq -r '.[] | "\(.class)\t\(.title)\tws\(.workspace.id)"'

A window is targeted by a selector: address:0x… (most precise), class:…, initialclass:…, title:…, initialtitle:…, or pid:….

Act (dispatch)

# focus
hyprctl dispatch focuswindow address:0x55feac7945f0
hyprctl dispatch focuswindow class:org.kde.konsole
hyprctl dispatch movefocus l            # l/r/u/d — focus neighbour

# workspaces
hyprctl dispatch workspace 3            # switch to workspace 3
hyprctl dispatch movetoworkspace 3      # move active window to ws 3 (and follow)
hyprctl dispatch movetoworkspacesilent 3,address:0x…   # move a specific window, don't follow

# move / resize the active (or addressed) window
hyprctl dispatch togglefloating         # floating windows can be placed freely
hyprctl dispatch movewindowpixel "exact 100 100,address:0x…"
hyprctl dispatch resizewindowpixel "exact 1280 800,address:0x…"
hyprctl dispatch fullscreen 1           # 0=full, 1=maximize
hyprctl dispatch closewindow address:0x…

# cursor
hyprctl dispatch movecursor 960 540     # absolute, logical pixels

Launch an app (optionally onto a workspace)

hyprctl dispatch exec firefox
# launch silently onto workspace 4 without switching to it:
hyprctl dispatch exec "[workspace 4 silent] firefox"
# launch floating, centered:
hyprctl dispatch exec "[float; center] kitty"

After launching, poll hyprctl clients -j for the new window's address before acting on it — it isn't there instantly.

Batch several actions

hyprctl --batch "dispatch workspace 2 ; dispatch exec kitty ; dispatch movecursor 100 100"

Runtime config tweaks

hyprctl keyword general:gaps_out 5      # change a setting live (not persisted)
hyprctl reload                          # reload hyprland.conf

Notes & gotchas

  • Coordinates are logical pixels. If a monitor has scale ≠ 1

(hyprctl monitors -j | jq '.[].scale'), logical ≠ physical — matters when pairing with screenshots (see the screen-capture and visual-computer-use-loop skills).

  • Multi-monitor: window at is global across all outputs; account for monitor

position offsets.

  • Tiled windows ignore pixel moves/resizes — togglefloating first.
  • Confirm before closewindow on anything with unsaved work.

Pairs with

  • screen-capture — see what's on screen.
  • gui-input-automation — click/type into the window you focused.
  • clipboard-and-notificationsnotify-send to report what you did.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.