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 package
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.8+
  • 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.0.tar.gz (33.4 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.0-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for open_alo_core-0.1.0.tar.gz
Algorithm Hash digest
SHA256 56e5d1b442b230956584c631a5e695c2a192590cad71ab49fed8c45456245be2
MD5 2b709536e3dd624e74149ec39b8cb7c0
BLAKE2b-256 758ca4afcf59b0c0cf22254e76a41ded1c9fa4a706776ec526ca6946bfe20f21

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_alo_core-0.1.0.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.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for open_alo_core-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c67784884e9f689f21be8ebcfd5b6306a3a4cce19da56ec0a4c91aebf887fe4a
MD5 824d79fd3bb574675ec04f0186b217b6
BLAKE2b-256 9c3040f4d97fd739d050b949c1816a5f0de0dc3d8802bb70eb6b05aaeff3febe

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_alo_core-0.1.0-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