Computer use for Hyprland: semantic desktop state over IPC, plus vision and native input
Connect Hypruse to Claude, Cursor or any other MCP client and it stops being a tab you switch to. Computer use for Hyprland: semantic desktop state over IPC, plus vision and native input. The hypruse mcp server is what makes that connection.
Computer use exists on macOS and Windows. On Linux there is effectively nothing: the Claude Desktop Linux beta explicitly ships without screen control, Anthropic's reference implementation is an X11 container, and the existing Wayland attempts lean on setuid uinput hacks or GNOME-only portals.
The toolset is worth reading before you wire it up, because it tells you what the integration is really for:
desktop — One-call semantic snapshot: monitors, workspaces, windows (address/class/title/geometry), active window, cursor, and layer surfaces (launchers, barsscreenshot — Focused monitor, exact window crop by address, or x,y,WxH region; returns image + coordinate-mapping metadata; fast JPEG by default (lossless=truezoom — Native-resolution re-capture around an estimated point (optionally clamped to a window): the precision step before clicking small controls, samemarks — Set-of-Marks capture: the window screenshot with every accessible control drawn as a numbered mark, plus a JSON legend (role, name, current valueclick_ui — Click a control by accessible NAME or by a marks number in one call: the coordinate comes from the tree, the click goes through the real pointerpointer — move / click / drag / scroll (discrete wheel notches) in global coordinateskeyboard — Type literal text (unicode-safe) or press app-level combos (ctrl+shift+t, esc, F5); optional window address focuses the target first so keystrokeshypr — Switch workspace, focus/move/close windows, fullscreen, floating (pure IPC, milliseconds; close_window also waits up to 1s for the destroy event, solaunch — Start an app (optionally silent on another workspace), block on its actual openwindow event, return its address; detects single-instance appsbinds — The user's own keybinds, decoded (SUPER+Q, action, description); the agent runs one with use_binduse_bind — Execute a keybind by combo (SUPER+F), running its bound action, so the agent drives the owner's own launchers and shortcutssequence — Run an ordered list of actions (pointer/keyboard/click_ui/hypr/wait_for) in one call; stops the moment the desktop changes in a way the current stepInstallation goes through your MCP client rather than a global install: point it at hypruse on PyPI and it is fetched when the client starts. The copy-paste blocks for Claude Desktop, Claude Code and Cursor are further down this page.
Configuration is passed through the environment: HYPRUSE_SCREENSHOT_MODE. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
This sits in the browser automation group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. Hypruse's toolset — desktop, screenshot, zoom and 11 more — is a fair guide to whether it matches your workflow. It is maintained by IlyasKhallouki; worth a glance at recent repository activity before you build anything load-bearing on it.
This entry was verified against Hypruse's own documentation before publication; SyncDev keeps the directory reviewed rather than auto-generated.
| Tool | What it does |
|---|---|
| desktop | One-call semantic snapshot: monitors, workspaces, windows (address/class/title/geometry), active window, cursor, and layer surfaces (launchers, bars, notification popups) with a best-effort kind and geometry |
| screenshot | Focused monitor, exact window crop by address, or x,y,WxH region; returns image + coordinate-mapping metadata; fast JPEG by default (lossless=true for PNG); stable=true waits for the frame to settle |
| zoom | Native-resolution re-capture around an estimated point (optionally clamped to a window): the precision step before clicking small controls, same metadata contract |
| marks | Set-of-Marks capture: the window screenshot with every accessible control drawn as a numbered mark, plus a JSON legend (role, name, current value, exact click point per number); needs ImageMagick for the drawing, degrade |
| click_ui | Click a control by accessible NAME or by a marks number in one call: the coordinate comes from the tree, the click goes through the real pointer (visible, same safety guarantees); an ambiguous name returns the candidates |
| pointer | move / click / drag / scroll (discrete wheel notches) in global coordinates |
| keyboard | Type literal text (unicode-safe) or press app-level combos (ctrl+shift+t, esc, F5); optional window address focuses the target first so keystrokes land in the right app. Compositor binds (super+...) go through use_bind, |
| hypr | Switch workspace, focus/move/close windows, fullscreen, floating (pure IPC, milliseconds; close_window also waits up to 1s for the destroy event, so its result and then= observation reflect the close instead of racing it |
| launch | Start an app (optionally silent on another workspace), block on its actual openwindow event, return its address; detects single-instance apps (browsers) whose window ignores exec rules and moves it to the requested works |
| binds | The user's own keybinds, decoded (SUPER+Q, action, description); the agent runs one with use_bind |
| use_bind | Execute a keybind by combo (SUPER+F), running its bound action, so the agent drives the owner's own launchers and shortcuts |
| sequence | Run an ordered list of actions (pointer/keyboard/click_ui/hypr/wait_for) in one call; stops the moment the desktop changes in a way the current step did not expect, so a click/type/enter micro-sequence costs one round-tr |
| wait_for | Block on real compositor events (window open/close, workspace change, title change, layer surfaces appearing/closing, urgency, screen sharing on/off) with a match filter and timeout; a filtered wait whose condition alrea |
| clipboard | Read or write the text clipboard via wl-clipboard; opt-in, exists only with HYPRUSE_CLIPBOARD=1 in the server env |
{
"mcpServers": {
"hypruse": {
"command": "uvx",
"args": ["hypruse"],
"env": {
"HYPRUSE_SCREENSHOT_MODE": "your-value"
}
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
| Variable | Description | Required |
|---|---|---|
| HYPRUSE_SCREENSHOT_MODE | Configuration value read at startup. | Optional |
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
Industrial-strength web extraction — render, scrape, crawl and search entire sites into clean markdown.
The original Chromium automation reference server — simple, screenshot-driven browser control.
Give your coding agent the full DevTools toolbox: traces, network, console, heap snapshots and Lighthouse.
Puppeteer-powered browser control that drives pages from the accessibility tree instead of pixels.
Cloud browsers for AI agents — automation sessions that run in Browserbase's fleet, not on your machine.