Metadata-Version: 2.5
Name: py-Vwayland
Version: 0.1.0
Summary: Spawn virtual Wayland compositors from Python to capture and control GUI programs
Project-URL: Documentation, https://github.com/llaa33219/py-Vwayland/tree/main/docs
Project-URL: Source, https://github.com/llaa33219/py-Vwayland
Author: py-Vwayland Authors
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: automation,compositor,gui-testing,headless,screenshot,wayland
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: X11 Applications
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Rust
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: System :: Hardware
Requires-Python: >=3.9
Provides-Extra: pillow
Requires-Dist: pillow>=9.0; extra == 'pillow'
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == 'test'
Description-Content-Type: text/markdown

# py-Vwayland

<p align="center">
  <img src="logo.svg" alt="py-Vwayland logo" width="1000">
</p>

Spawn **virtual Wayland compositors** from Python, run GUI programs inside them,
capture their screens, and inject mouse/keyboard events.

No desktop environment required: one program per compositor, fullscreen.
The compositor is written in Rust (Smithay) and bundled into the package, so no
system compositor or display server is needed (in headless mode).

```python
import vwayland

with vwayland.spawn(width=1280, height=720, headless=True) as comp:
    comp.launch("my-gui-app")
    img = comp.screenshot()
    img.save("screen.png")
    comp.click(100, 200)
    comp.type_text("hello")
    comp.key("enter")
```

## Key features

- Create/list/terminate compositors (`spawn`, `list`, `kill`)
- Open/close a program inside a compositor (`launch`, `close_app`)
- Resize the screen (`resize`)
- Switch between headless and windowed mode (`set_headless`)
- Capture the screen (`screenshot` → PNG)
- Mouse move/click/drag/scroll (`move_to`, `click`, `drag`, `scroll`)
- Keyboard input (`key`, `combo`, `type_text`)

## Documentation

See [docs/](docs/README.md) for full documentation.

- [Overview and motivation](docs/overview.md)
- [Installation and compatibility](docs/installation.md)
- [Python API reference](docs/api-python.md)
- [CLI reference](docs/api-cli.md)
- [Architecture and IPC protocol](docs/architecture.md)

## License

Apache License 2.0 — see [LICENSE](LICENSE).
