Skip to main content

Modern Linux desktop automation SDK with Wayland support - Single permission for screen capture and input control

Project description

Open ALO

Desktop Automation for Linux

Python Platform Wayland License PyPI

Desktop automation library for Linux with one permission dialog for both screen capture and input control. Perfect for AI agents, RPA, and testing.

✨ Features

  • Single Permission Dialog - One approval for input + capture (RustDesk-style)
  • Real-time Screen Streaming - Live frames via PipeWire
  • Full Input Control - Mouse, keyboard, shortcuts
  • Window Management - Find, activate, control windows (GNOME)
  • Persistent Sessions - Approve once, run forever
  • Wayland Native - XDG Portals, PipeWire, GStreamer
  • Type-Safe - Full type hints
  • Zero ML Dependencies - Pure hardware abstraction

🚀 Quick Start

Installation

# System dependencies (Ubuntu/Debian)
sudo apt install \
    python3-gi \
    python3-gi-cairo \
    gir1.2-gst-plugins-base-1.0 \
    gstreamer1.0-pipewire \
    xdg-desktop-portal \
    xdg-desktop-portal-gnome

# Install from PyPI
pip install open-alo-core

For Window Management (GNOME only):

  1. Install Window Calls extension from browser
  2. Enable it: gnome-extensions enable window-calls@domandoman.github.com

Basic Usage

from open_alo_core import UnifiedRemoteDesktop, Point

# ONE permission dialog for everything!
with UnifiedRemoteDesktop() as remote:
    remote.initialize(persist_mode=2, enable_capture=True)

    # Screen capture
    screenshot = remote.capture_screenshot()  # PNG bytes
    frame = remote.get_frame()                # Live frame
    width, height = remote.get_screen_size()

    # Input control
    remote.click(Point(500, 500))
    remote.type_text("Hello World!\n")
    remote.key_combo(["ctrl", "c"])

Window Management (GNOME)

from open_alo_core import WindowManager

wm = WindowManager()
editor = wm.find_window("Text Editor")
wm.activate(editor.id)
wm.maximize(editor.id)

📋 System Requirements

  • OS: Linux with Wayland (GNOME, KDE, Sway)
  • Python: 3.10+
  • Dependencies: PyGObject, GStreamer 1.0, PipeWire
  • Window Management: GNOME Shell + Window Calls extension

Tested on:

  • Ubuntu 25.10 (Questing), Wayland + GNOME/Unity
  • Window Calls extension v13+

📚 Documentation

🎯 Use Cases

  • AI Agents - Screen understanding + autonomous control
  • RPA - Robotic process automation
  • Testing - UI testing and automation
  • Monitoring - Screenshot capture and analysis
  • Remote Control - Desktop automation over network

🏗️ Architecture

UnifiedRemoteDesktop
├── RemoteDesktop Portal (org.freedesktop.portal.RemoteDesktop)
│   ├── Input Control (keyboard, mouse)
│   └── Inherits ScreenCast (screen capture)
├── PipeWire (real-time streaming)
└── GStreamer (frame processing)

WindowManager
└── Window Calls Extension (GNOME D-Bus)

🔒 Security

  • Uses XDG Desktop Portals (sandboxed)
  • Permission dialogs via system compositor
  • Persistent tokens stored in ~/.config/open_alo_core/
  • No root required

📄 License

MIT License - See LICENSE file

🤝 Contributing

Contributions welcome! Please read CONTRIBUTING.md for guidelines.

🐛 Issues

Report bugs at: https://github.com/JonyBepary/Open-ALO/issues

🌟 Credits

Developed by OPEN_ALO Contributors


Repository: https://github.com/JonyBepary/Open-ALO

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

open_alo_core-0.1.3.tar.gz (33.5 kB view details)

Uploaded Source

Built Distribution

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

open_alo_core-0.1.3-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

Details for the file open_alo_core-0.1.3.tar.gz.

File metadata

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

File hashes

Hashes for open_alo_core-0.1.3.tar.gz
Algorithm Hash digest
SHA256 35cada13dd7ee727556c5d5724cabcfdb81199046b823bfeea1e36134728d6c4
MD5 71b22df6bb7dd126605aad3fff7996bb
BLAKE2b-256 cbc5cca1f65d1e7588b619d2da3e93a567ee3ae3184bd036c34f3fcd9dc56972

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_alo_core-0.1.3.tar.gz:

Publisher: publish.yml on JonyBepary/Open-ALO

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

File details

Details for the file open_alo_core-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: open_alo_core-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 26.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for open_alo_core-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b2c39b0b4fdb1196329db79f4533fba7b35e48d582f2ad22fa52da210b0a0ab3
MD5 683dfa0d96dbc5d2d7bd57e790b0a3ba
BLAKE2b-256 bab62f40f6e686707a62921302052f52411e7f40b49d016dce4395302fd57f55

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_alo_core-0.1.3-py3-none-any.whl:

Publisher: publish.yml on JonyBepary/Open-ALO

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