linux-gui-control

Automate X11 desktop applications using xdotool, wmctrl, and the AT-SPI accessibility tree.

39|1|Updated Jul 2, 2026
One-click install
npx skills add https://github.com/HKU-MMLab/UniClawBench --skill linux-gui-control-hku-mmlab
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: linux-gui-control
Source: https://github.com/HKU-MMLab/UniClawBench/tree/main/docker/base_skills/linux-gui-control
Command: npx skills add https://github.com/HKU-MMLab/UniClawBench --skill linux-gui-control-hku-mmlab

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires dogtail, pyatspi, and includes scripts (resource) components.

What problem does it solve? Automating Linux desktop GUI applications is error-prone when agents must guess pixel coordinates or target the wrong window. This Skill provides a two-stage look-then-act workflow: inspect the accessibility tree to get exact widget coordinates, then actuate clicks, typing, and key presses via xdotool. ## Core Features & Use Cases - Accessibility-tree inspection: Dump the widget hierarchy of any window as JSON with role, name, and x/y/w/h coordinates, or find a single widget's bounding box in one command. - Coordinate-based actuation: Activate windows, click coordinates, type literal text, and send special keys through a thin xdotool wrapper. - Accessibility-aware launching: Launch Electron and Chromium apps with --force-renderer-accessibility so their widgets appear in the AT-SPI tree. - Use Case: Automate a Save As dialog in VS Code by inspecting the dialog tree, locating the Save button's coordinates, computing its center, and clicking it. ## Quick Start Use the linux-gui-control skill to open Chromium, navigate to a URL, and take a screenshot of the loaded page.

Frequently Asked Questions about linux-gui-control

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I click a button in a Linux GUI application from a script?▼

First inspect the window's accessibility tree to get the button's x, y, width, and height, then compute the center and click it with xdotool. The gui_action.sh find command prints a widget's bounding box directly for this purpose.

How to automate Chromium or Electron apps with the accessibility tree?▼

Chromium and Electron apps keep renderer accessibility off by default, so their widgets do not appear in the AT-SPI tree. Launch them with launch_with_a11y.sh, which adds --force-renderer-accessibility and --no-sandbox.

Why does the accessibility tree show empty widgets for VS Code?▼

VS Code is an Electron app whose renderer does not join the AT-SPI bus unless started with --force-renderer-accessibility. Relaunch it via launch_with_a11y.sh so inspect returns named widgets instead of empty panels.

Why does typing go to the main window instead of a Save As dialog?▼

GTK and Qt file dialogs are separate top-level X11 windows, not children of the app window. Find the dialog by title with xdotool search, activate it, then send keys to the dialog window specifically.

What tools are needed for Linux desktop GUI automation?▼

This Skill uses wmctrl to list and activate windows, xdotool to simulate mouse and keyboard input, scrot for screenshots, and python3-dogtail to read the AT-SPI accessibility tree for widget coordinates.