mirror of
https://github.com/trycua/lume.git
synced 2026-05-05 03:40:34 -05:00
Add Cua Preview
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
import os
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
import sys
|
||||
import json
|
||||
import traceback
|
||||
|
||||
# Load environment variables from .env file
|
||||
project_root = Path(__file__).parent.parent
|
||||
env_file = project_root / ".env"
|
||||
print(f"Loading environment from: {env_file}")
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv(env_file)
|
||||
|
||||
# Add paths to sys.path if needed
|
||||
pythonpath = os.environ.get("PYTHONPATH", "")
|
||||
for path in pythonpath.split(":"):
|
||||
if path and path not in sys.path:
|
||||
sys.path.append(path)
|
||||
print(f"Added to sys.path: {path}")
|
||||
|
||||
from computer.computer import Computer
|
||||
from computer.logger import LogLevel
|
||||
from computer.utils import get_image_size
|
||||
|
||||
|
||||
async def main():
|
||||
try:
|
||||
print("\n=== Using direct initialization ===")
|
||||
computer = Computer(
|
||||
display="1024x768", # Higher resolution
|
||||
memory="8GB", # More memory
|
||||
cpu="4", # More CPU cores
|
||||
os="macos",
|
||||
verbosity=LogLevel.NORMAL, # Use QUIET to suppress most logs
|
||||
use_host_computer_server=False,
|
||||
)
|
||||
try:
|
||||
await computer.run()
|
||||
|
||||
await computer.interface.hotkey("command", "space")
|
||||
|
||||
# res = await computer.interface.run_command("touch ./Downloads/empty_file")
|
||||
# print(f"Run command result: {res}")
|
||||
|
||||
accessibility_tree = await computer.interface.get_accessibility_tree()
|
||||
print(f"Accessibility tree: {accessibility_tree}")
|
||||
|
||||
# Screen Actions Examples
|
||||
print("\n=== Screen Actions ===")
|
||||
screenshot = await computer.interface.screenshot()
|
||||
with open("screenshot_direct.png", "wb") as f:
|
||||
f.write(screenshot)
|
||||
|
||||
screen_size = await computer.interface.get_screen_size()
|
||||
print(f"Screen size: {screen_size}")
|
||||
|
||||
# Demonstrate coordinate conversion
|
||||
center_x, center_y = 733, 736
|
||||
print(f"Center in screen coordinates: ({center_x}, {center_y})")
|
||||
|
||||
screenshot_center = await computer.to_screenshot_coordinates(center_x, center_y)
|
||||
print(f"Center in screenshot coordinates: {screenshot_center}")
|
||||
|
||||
screen_center = await computer.to_screen_coordinates(*screenshot_center)
|
||||
print(f"Back to screen coordinates: {screen_center}")
|
||||
|
||||
# Mouse Actions Examples
|
||||
print("\n=== Mouse Actions ===")
|
||||
await computer.interface.move_cursor(100, 100)
|
||||
await computer.interface.left_click()
|
||||
await computer.interface.right_click(300, 300)
|
||||
await computer.interface.double_click(400, 400)
|
||||
|
||||
# Keyboard Actions Examples
|
||||
print("\n=== Keyboard Actions ===")
|
||||
await computer.interface.type_text("Hello, World!")
|
||||
await computer.interface.press_key("enter")
|
||||
|
||||
# Clipboard Actions Examples
|
||||
print("\n=== Clipboard Actions ===")
|
||||
await computer.interface.set_clipboard("Test clipboard")
|
||||
content = await computer.interface.copy_to_clipboard()
|
||||
print(f"Clipboard content: {content}")
|
||||
|
||||
finally:
|
||||
# Important to clean up resources
|
||||
pass
|
||||
# await computer.stop()
|
||||
except Exception as e:
|
||||
print(f"Error in main: {e}")
|
||||
traceback.print_exc()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user