Skip to main content

High-performance Wayland GUI layout scanner for AI Agents

Project description

waywarp-scanner

High-performance, decoupled Wayland GUI layout scanner designed for AI Agents. It runs neural object detection and OCR locally to extract user interface controls (buttons, inputs, labels, text blocks) and exports logical coordinate JSON grids to downstream AI orchestrators (e.g. Gemini, Claude Code, Hermes).

By using waywarp-scanner, AI agents can bypass sending large raw screenshots to VLMs (Visual Language Models), saving over 98% of prompt tokens while securing 100% exact coordinates for mouse interaction.


Features

  • 🧠 Dual Neural Inference: Combines YOLOv8 (widget detection) and Character Region Awareness for Text Detection CRAFT/EasyOCR (text localization and character recognition).
  • 🧩 Geometry-Based Widget Merger: Automatically merges OCR text blocks into enclosed widget bounding boxes with ascending left-to-right (horizontal) sorting.
  • 📐 Wayland Scale Factor Auto-detection: Automatically queries monitor scaling factors from the active Wayland compositor (hyprctl, swaymsg, or wlr-randr) and converts raw pixel coordinates into logical units.
  • Heterogeneous Hardware Acceleration: Auto-detects and binds to optimal compute backends, supporting Nvidia CUDA, Apple Silicon MPS (MacBook), and CPU fallbacks.
  • 📦 Standardized CLI Contract: Outputs layout grids to stdout as GFM JSON and outputs all runtime errors strictly to stderr with JSON schema envelopes.

Installation

1. Install CLI Tool via PyPI

Install the layout scanner package locally using uv (recommended) or pip:

uv tool install waywarp-scanner
# or
pip install waywarp-scanner

2. Install AI Agent Skill (Gemini / Claude Code / Hermes CLI)

To equip your developer agent CLI with this skill, install it instantly using the skills utility:

npx skills add https://github.com/Xuepoo/waywarp-skill

Quick Start

1. Download Visual Models

Download CRAFT and YOLOv8 weights to your XDG-compliant cache folder:

waywarp-scanner download-models

Weights are cached at $XDG_DATA_HOME/waywarp/models/ (falls back to ~/.local/share/waywarp/models/).

2. Scan Screen Layout

Run layout scanner to analyze the active screen:

waywarp-scanner scan

Output JSON Format Example:

{
  "screen_width": 1920,
  "screen_height": 1080,
  "elements": [
    {
      "id": 0,
      "type": "button",
      "text": "Login",
      "center": [100.0, 50.0],
      "bbox": [80.0, 40.0, 40.0, 20.0],
      "monitor_index": 0,
      "confidence": 0.95
    }
  ]
}

Use these center coordinates to execute pointer warps directly via waywarp:

waywarp --move-to 100.0 50.0 --click left

Development & Test

We use uv for local virtual environment and package management:

# Run test suite
uv run pytest

# Check code formatting & styles
uv run ruff check
uv run ruff format --check

# Check type safety
uv run mypy .

License

MIT License.

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

waywarp_scanner-0.1.5.tar.gz (19.6 kB view details)

Uploaded Source

Built Distribution

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

waywarp_scanner-0.1.5-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file waywarp_scanner-0.1.5.tar.gz.

File metadata

  • Download URL: waywarp_scanner-0.1.5.tar.gz
  • Upload date:
  • Size: 19.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for waywarp_scanner-0.1.5.tar.gz
Algorithm Hash digest
SHA256 52a58035f2c191c17081e12e955e306ad7ca328ba59d7694d2b8fc9e92e629f1
MD5 8007b670b3757735424ceed3d101e918
BLAKE2b-256 898cac49b60a70b2bf9e0b87a6c69e0670a2945c9c15d62f4d1c1c33bf4d50d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for waywarp_scanner-0.1.5.tar.gz:

Publisher: release.yml on Xuepoo/waywarp-scanner

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

File details

Details for the file waywarp_scanner-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for waywarp_scanner-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d3ef861e3d6fc8ae0bbeb217cf688b9006e4f22884e1d067bf2134dcfc7c95be
MD5 1aa7e41d47109f9bea03b7b6ffc9490e
BLAKE2b-256 3bc3d384a6868f8ccd440f7088aa9290217658f3e60f05ceac0ca1715d8a53f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for waywarp_scanner-0.1.5-py3-none-any.whl:

Publisher: release.yml on Xuepoo/waywarp-scanner

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