Interact with the desktop GUI — take screenshots, list/raise windows, click with grid targeting, type text, press key combos. Use when you need to see the sc...
Memory
Computer Use Kylinos
Try itGUI automation on KylinOS. V11 (Wayland/wlcom) uses wlcctrl; V10SP1 (X11) uses xdotool. Find/launch/focus windows, screenshot, click/type/drag with correct coordinates, and verify GUI results.
What it does
GUI automation on KylinOS. V11 (Wayland/wlcom) uses wlcctrl; V10SP1 (X11) uses xdotool. Find/launch/focus windows, screenshot, click/type/drag with correct coordinates, and verify GUI results.
The skill document
Computer Use KylinOS
GUI automation across KylinOS V11 (Wayland) and V10SP1 (X11). Resolve script paths relative to this skill directory.
Step 0 — detect the OS
Always run first; pick the backend by result.
bash scripts/detect-os.sh # -> v11 | v10sp1 | unknown
| Result | Backend | Tool | Protocol |
|---|---|---|---|
v11 | Wayland | wlcctrl | wlcom |
v10sp1 | X11 | xdotool | X |
Fast path
V11 (Wayland) — wlcctrl
bash scripts/wlcctrl-info.sh # inspect once per task
wlcctrl --search ''
wlcctrl --getwindowgeometry
wlcctrl --windowcapture --path /tmp/win.png # pick coords from this
wlcctrl --windowactivate
wlcctrl --keystring 'text' # keyboard is fastest
wlcctrl --key ctrl+s
bash scripts/wlcctrl-window-click.sh [button] # scale-aware click
bash scripts/wlcctrl-window-dblclick.sh [button] [delay_ms] # double-click (geometry queried ONCE, no re-verify)
bash scripts/wlcctrl-drag.sh [button] # drag
For Kaiming apps: kaiming list | grep -i ''; kaiming run .
V10SP1 (X11) — xdotool
bash scripts/xdotool-info.sh # inspect once per task
xdotool search --name ''
xdotool getwindowgeometry
import -window /tmp/win.png # screenshot to pick coords (needs imagemagick)
xdotool windowactivate
xdotool type 'text' # keyboard is fastest
xdotool key ctrl+s
bash scripts/xdotool-window-click.sh [button] # click
bash scripts/xdotool-window-dblclick.sh [button] [delay_ms] # double-click (native --repeat 2, single process)
bash scripts/xdotool-drag.sh [button] # drag
Find the app window, screenshot it, read target (rx,ry) from the image, then click/drag with the relative coordinates.
Universal rules
- Do not move a window to
(0,0)by default. Use the move-window script only when a known position is required, the window is partly off-screen, or the user asks. - Prefer keyboard shortcuts/input over pointer clicks when available.
- Capture the window in its current position; identify targets from the screenshot.
- For wheel/spinner controls prefer small drag gestures over scroll (scroll may jump values).
- Avoid closing/killing windows unless explicitly requested.
- Cache window geometry / display info per task — repeated probes are expensive.
V11 (wlcctrl) specifics
- ⚠️ man page is WRONG about coordinates. It documents
--mousemove/--windowmoveas relative displacements; both are actually ABSOLUTE. Pass the absolute target, never add current position. --mousemoveinput = logical × output scaleS;--getmouselocationreturns logical.--windowmove -x/-ytakes logical coordinates directly (NO × S).- Multi-monitor: if window geometry is output-relative, add that output's
positiontoWX,WYfirst. - Use
wlcctrl --outputs+--getdisplaygeometryfor scale/position. - Lock keys (CapsLock/NumLock) don't toggle reliably — use
ydotool.
V10SP1 (xdotool) specifics
- No fractional scaling. Screen coordinates = window origin + relative offset. No scale factor anywhere.
xdotool mousemove/windowmovetake screen pixel coordinates directly (absolute).- Screenshot via
import(ImageMagick):import -window /tmp/win.png. Requiressudo apt install imagemagick. - Window IDs are decimal integers (not UUIDs).
xdotool getwindowgeometry --shellprintsX=,Y=,WIDTH=,HEIGHT=for easy parsing.
Coordinate formula
V11 — multiply by scale (mousemove/clicks/drags)
Given window geometry (WX,WY), output scale S, target (RX,RY) in window screenshot:
logical_x = WX + RX
mousemove_x = round(logical_x * S) # every --mousemove arg, start and end
V11 — windowmove: NO scale
windowmove -x = TX # logical target, do NOT × S
V10SP1 — no scale at all (clicks/drags/windowmove all the same)
screen_x = WX + RX
The xdotool-window-click.sh / xdotool-drag.sh / xdotool-move-window.sh scripts do this for you.
Core commands
wlcctrl (V11)
wlcctrl --outputs; wlcctrl --getdisplaygeometry
wlcctrl --list; wlcctrl --search ''; wlcctrl --getactivewindow
wlcctrl --getwindowname ; wlcctrl --getwindowgeometry
wlcctrl --windowactivate
wlcctrl --windowmove -x -y
wlcctrl --windowsize -w -h
wlcctrl --windowminimize|maximize|fullscreen [-o ]
wlcctrl --windowmap
wlcctrl --windowcapture --path /tmp/w.png
wlcctrl --fullscreencapture --path /tmp/f.png [-o ]
wlcctrl --mousemove ,; wlcctrl --getmouselocation
wlcctrl --mousebutton 1; wlcctrl --mousepress 1 --mouserelease 1
wlcctrl --scroll -y
wlcctrl --keystring 'text'; wlcctrl --key ctrl+s
wlcctrl --keydown ; wlcctrl --keyup
xdotool (V10SP1)
xdotool search --name ''; xdotool search --onlyvisible --name ''
xdotool getactivewindow; xdotool getwindowname
xdotool getwindowgeometry [--shell]
xdotool windowactivate ; xdotool windowfocus
xdotool windowmove
xdotool windowsize
xdotool getmouselocation; xdotool mousemove
xdotool click ; xdotool mousedown ; xdotool mouseup
xdotool type 'text'; xdotool key ctrl+s
xdotool keydown ; xdotool keyup
import -window /tmp/w.png # screenshot (imagemagick)
When more detail is needed
Read references/details.md for keyboard aliases, multi-step test patterns, spinner controls, screenshots, multi-monitor handling, and X11 caveats.
Related skills
Drive native macOS, Windows, and Linux GUI apps from a CLI or MCP server using accessibility-tree and pixel coordinates.
Top-level Linux computer-use skill with a bundled standalone runtime that bootstraps itself without any local Claude installation, private native modules, or...
Drive your machine with a real hardware keyboard and mouse via Rebind. Click, type, browse, fill forms, operate any desktop GUI. The OS sees a real USB HID device.
Top-level cross-platform computer-use skill that bundles standalone macOS, Windows, and Linux runtimes with zero local Claude dependency and selects the corr...
浏览器测试与自动化工具包。三层架构:L1快速验证(playwright-cli)、L2深度调试(DevTools)、L3复杂测试(Python+E2E)。v1.1 新增智能点击(自动处理遮挡)。