Linux GUI Control

Control the Linux desktop GUI using xdotool, wmctrl, and dogtail. Use when you need to interact with non-browser applications, simulate mouse/keyboard input, manage windows, or ins…

dreamtraveler13

@dreamtraveler13

What This Skill Does

Controls the Linux desktop GUI by simulating mouse/keyboard input, managing windows, and inspecting UI hierarchies via xdotool, wmctrl, and dogtail. Works with non-browser applications on X11/GNOME, including accessibility tree extraction and screenshot capture.

Replaces manual GUI testing and repetitive desktop interactions by automating clicks, typing, window management, and UI inspection through scripts.

When to Use It

  • Automate clicking buttons and typing text in a GNOME application
  • Resize or move a specific window to a known position
  • Extract the accessible UI tree of an Electron app to find button names
  • Take a screenshot of a window for visual analysis
  • Navigate a desktop app by pressing Tab and Return keys programmatically
  • Activate a window by its title before sending keystrokes

Install

$ openclaw skills install @dreamtraveler13/guicountrol

Linux GUI Control

This skill provides tools and procedures for automating interactions with the Linux desktop environment.

Quick Start

1. Identify Target Window

Use wmctrl to find the exact name of the window you want to control.

wmctrl -l

2. Inspect UI Hierarchy

For apps supporting accessibility (GNOME apps, Electron apps with --force-renderer-accessibility), use the inspection script to find button names without taking screenshots.

python3 scripts/inspect_ui.py "<app_name>"

3. Perform Actions

Use xdotool via the helper script for common actions.

# Activate window
./scripts/gui_action.sh activate "<window_name>"

# Click coordinates
./scripts/gui_action.sh click 500 500

# Type text
./scripts/gui_action.sh type "Hello World"

# Press a key
./scripts/gui_action.sh key "Return"

Workflows

Operating an App via Text UI

  1. List windows with wmctrl -l.
  2. Activate the target window.
  3. Run scripts/inspect_ui.py to get the list of buttons and inputs.
  4. Use xdotool key Tab and Return to navigate, or click if coordinates are known.
  5. If text-based inspection fails, fallback to taking a screenshot and using vision.

Forcing Accessibility in Electron Apps

Many modern apps (VS Code, Discord, Cider, Chrome) need a flag to expose their UI tree:

pkill <app>
nohup <app> --force-renderer-accessibility > /dev/null 2>&1 &

Tool Reference

  • wmctrl: Window management (list, activate, move, resize).
  • xdotool: Input simulation (click, type, key, mousemove).
  • dogtail: UI tree extraction via AT-SPI (Accessibility bus).
  • scrot: Lightweight screenshot tool.

Top skills in this category