Metadata-Version: 2.4
Name: cua-auto
Version: 0.1.2
Summary: Cross-platform automation library — mouse, keyboard, screen, window, clipboard, shell
Project-URL: Homepage, https://github.com/trycua/cua
Project-URL: Documentation, https://docs.trycua.com
Project-URL: Repository, https://github.com/trycua/cua
Project-URL: Issues, https://github.com/trycua/cua/issues
Author-email: TryCua <hello@trycua.com>
License-Expression: MIT
Keywords: automation,computer-use,keyboard,mouse,pyautogui,screenshot,window
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Requires-Python: <3.14,>=3.11
Requires-Dist: pillow>=10.0.0
Requires-Dist: pynput>=1.7.0
Requires-Dist: pyperclip>=1.9.0
Requires-Dist: pywinctl>=0.4
Provides-Extra: all
Requires-Dist: mss>=9.0.0; extra == 'all'
Requires-Dist: pywin32>=306; (sys_platform == 'win32') and extra == 'all'
Requires-Dist: pywinpty>=2.0.0; (sys_platform == 'win32') and extra == 'all'
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: mss
Requires-Dist: mss>=9.0.0; extra == 'mss'
Provides-Extra: pty
Requires-Dist: pywinpty>=2.0.0; (sys_platform == 'win32') and extra == 'pty'
Provides-Extra: windows
Requires-Dist: pywin32>=306; (sys_platform == 'win32') and extra == 'windows'
Description-Content-Type: text/markdown

# cua-auto

`cua-auto` is a lightweight, cross-platform automation library providing a synchronous, MIT-licensed pyautogui-style API for mouse, keyboard, screen, window, clipboard, and shell operations. It runs on Windows, macOS, and Linux using [pynput](https://github.com/moses-palmer/pynput) for input control and [pywinctl](https://github.com/Kalmat/PyWinCtl) for window management.

```python
import cua_auto.mouse as mouse
import cua_auto.keyboard as keyboard
import cua_auto.screen as screen
import cua_auto.window as window
import cua_auto.clipboard as clipboard
import cua_auto.shell as shell

# Mouse
mouse.click(100, 200)               # left click
mouse.right_click(100, 200)
mouse.double_click(100, 200)
mouse.move_to(500, 300)
mouse.mouse_down(100, 200)
mouse.mouse_up(100, 200)
mouse.drag(100, 200, 400, 500)      # start → end
mouse.scroll_up(3)
mouse.scroll_down(3)
x, y = mouse.position()

# Keyboard
keyboard.press_key("enter")
keyboard.type_text("hello world")
keyboard.hotkey(["ctrl", "c"])
keyboard.key_down("shift")
keyboard.key_up("shift")

# Screen
img = screen.screenshot()           # returns PIL.Image
png = screen.screenshot_bytes()     # raw PNG bytes
b64 = screen.screenshot_b64()      # base64 string
w, h = screen.screen_size()
x, y = screen.cursor_position()

# Window
title = window.get_active_window_title()
handle = window.get_active_window_handle()
handles = window.get_windows_with_title("Chrome")
name = window.get_window_name(handle)
x, y = window.get_window_position(handle)
w, h = window.get_window_size(handle)
window.activate_window(handle)
window.minimize_window(handle)
window.maximize_window(handle)
window.close_window(handle)
window.set_window_size(handle, 1280, 800)
window.set_window_position(handle, 0, 0)
window.open("https://example.com")  # or file path
pid = window.launch("notepad.exe")

# Clipboard
text = clipboard.get()
clipboard.set("hello")

# Shell
result = shell.run("echo hi")       # CommandResult
print(result.stdout, result.returncode)
```
