Skip to main content

CLI to orchestrate and automate graphical desktop workflows.

Project description

weavgui

English | 中文

Requirements: You need a vision-capable LLM, and the Claw-style platform must support loading images directly from files into context. We recommend weavbot for this workflow.

Turn any vision-capable LLM into a desktop GUI operator.

weavgui provides a minimal CLI toolkit that closes the loop between seeing and acting: take an annotated screenshot, feed it to a vision model, move the mouse, and repeat — until the model clicks exactly where it needs to.

screenshot (with crosshair) → vision model analyzes image → mouse move / click → screenshot → ...

No browser required. No DOM. No accessibility tree. Just pixels and a feedback loop.

npx skills add https://github.com/yankeguo/weavgui/tree/main/skills/weavgui -a openclaw -y

Screenshot with cursor crosshair and bounding boxes

Installation

uv tool install weavgui

To upgrade an existing installation:

uv tool upgrade weavgui

Quick Start

weavgui --version
weavgui screenshot
weavgui mouse move '(0.05,0.05)'
weavgui mouse moveto '(0.5,0.3)'
weavgui mouse click
weavgui pasteboard write hello world
weavgui pasteboard read
weavgui keystroke command+c

Auto-Screenshot Behavior

Every action command automatically captures a screenshot to screenshot.png in the current working directory after a short delay. No flags needed.

Command Auto-screenshot delay
screenshot immediate (no delay)
mouse move, mouse moveto 500 ms
mouse click, doubleclick, rightclick 2 s
keystroke 1 s

The screenshot always includes cursor markers (crosshair + reference boxes). Read screenshot.png as an image after any command to observe the result.

Coordinate System

Mouse and screenshot-related commands use normalized coordinates:

  • Values range from 0.0 to 1.0
  • Origin at top-left: (0.0, 0.0), bottom-right: (1.0, 1.0)
  • x increases to the right (fraction of screen width), y increases downward (fraction of screen height)
  • Single-display only (primary monitor)
  • Resolution-independent: the same coordinates work regardless of screen size or DPI

Command Reference

Global

Command Description
weavgui --version Print CLI version
weavgui -h Show help

screenshot

Capture a screenshot of the primary display and save it as screenshot.png in the current working directory.

weavgui screenshot

The cursor position is always annotated:

  • Red crosshair spanning the full screenshot
  • Red small box centered on cursor (normalized radius 0.03)
  • Green medium box centered on cursor (normalized radius 0.07)
  • Blue large box centered on cursor (normalized radius 0.20)

The three boxes serve as positioning references for the next mouse move / mouse moveto command:

Target location Suggested delta range
Inside the red box Fine adjustment, ±0.03
Between red and green boxes Medium adjustment, ±0.03–0.07
Between green and blue boxes Coarse adjustment, ±0.07–0.20
Outside the blue box Large move needed — estimate from the full screenshot
weavgui screenshot
# → saves screenshot.png with cursor markers
# → prints cursor position in normalized coordinates to stdout

mouse

mouse move '(dx,dy)'

Move the cursor by a relative delta in normalized coordinates. The argument uses (dx,dy) format. Fails if the target position would leave the valid range [0.0, 1.0). After moving, waits 500 ms and saves a screenshot to screenshot.png.

weavgui mouse move '(0.05,0.05)'
weavgui mouse move '(-0.05,0.03)'

mouse moveto '(x,y)'

Move the cursor to an absolute normalized position. The argument uses (x,y) format. Fails if the position is outside the valid range [0.0, 1.0). After moving, waits 500 ms and saves a screenshot to screenshot.png.

weavgui mouse moveto '(0.5,0.3)'

mouse click

Left click at the current cursor position. Waits 2 s then saves a screenshot to screenshot.png.

weavgui mouse click

mouse doubleclick

Double left click at the current cursor position. Waits 2 s then saves a screenshot to screenshot.png.

weavgui mouse doubleclick

mouse rightclick

Right click at the current cursor position. Waits 2 s then saves a screenshot to screenshot.png.

weavgui mouse rightclick

pasteboard

pasteboard read

Read text from the system pasteboard and print to stdout.

weavgui pasteboard read

pasteboard write <text...>

Write text to the system pasteboard. Multiple arguments are joined by a single space.

weavgui pasteboard write hello world

keystroke

Simulate keyboard input. Supports single keys and combinations joined with +. Waits 1 s then saves a screenshot to screenshot.png.

weavgui keystroke <keys>
Input Meaning
c Press c
ctrl+c Press Ctrl+C
command+c Press Command+C
shift+a Press Shift+A
alt+f4 Press Alt+F4

Modifier aliases:

Alias Resolves to
control ctrl
cmd command
option alt

On macOS, single-key combos with command are sent via AppleScript for better reliability.

weavgui keystroke c
weavgui keystroke ctrl+c
weavgui keystroke command+c

Development

Clone the repository and install dependencies:

git clone https://github.com/yankeguo/weavgui.git
cd weavgui
uv sync

Run commands from source:

uv run weavgui --version
uv run weavgui screenshot

Notes

  • Mouse and keystroke automation requires Accessibility permission.
  • If commands fail on macOS, go to System Settings > Privacy & Security > Accessibility and grant access to your terminal application.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

weavgui-0.1.6.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

weavgui-0.1.6-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file weavgui-0.1.6.tar.gz.

File metadata

  • Download URL: weavgui-0.1.6.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for weavgui-0.1.6.tar.gz
Algorithm Hash digest
SHA256 2882bfe802eca796e2429c9eb1b3401acac82b63014104f05388097888dfea03
MD5 54e4b5ccb27c137af5d3600b1a1cc910
BLAKE2b-256 121b5fe540bc640550b5bb207c538d1974362c4911f38e5576881aa0eca37be5

See more details on using hashes here.

Provenance

The following attestation bundles were made for weavgui-0.1.6.tar.gz:

Publisher: release.yml on yankeguo/weavgui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file weavgui-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: weavgui-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for weavgui-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 79af6396dc3d48ad91071a3f022c45fdc916f4027db694943e39cbc53f89e63b
MD5 9966fddb8c7df0704f84419f8c4683d2
BLAKE2b-256 71384270becf891e21653747817049d711f01ba8a88c50a12eeecf74e3537232

See more details on using hashes here.

Provenance

The following attestation bundles were made for weavgui-0.1.6-py3-none-any.whl:

Publisher: release.yml on yankeguo/weavgui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page