OpenClaw Desktop Control
by @michealxie001
Remote desktop control and automation. Capture screenshots, control mouse and keyboard, automate UI interactions. Supports VNC, RDP, and local desktop enviro...
clawhub install oc-desktop-control📖 About This Skill
name: desktop-control description: Remote desktop control and automation. Capture screenshots, control mouse and keyboard, automate UI interactions. Supports VNC, RDP, and local desktop environments. tools: - read - write - exec
Desktop Control - 远程桌面控制
基于 Bytebot Computer Use 模式实现的桌面自动化控制工具。
Version: 1.0.0 Features: 截图、鼠标控制、键盘输入、应用管理、文件操作
Purpose
让 OpenClaw 能够:
Quick Start
1. 连接桌面环境
# 连接到 VNC 桌面
python3 scripts/main.py connect --host localhost --port 5900 --password secret连接到本地桌面 (Linux)
python3 scripts/main.py connect --local
2. 基本操作
# 截图
python3 scripts/main.py screenshot --output /tmp/screen.png移动鼠标
python3 scripts/main.py mouse move --x 500 --y 300点击
python3 scripts/main.py mouse click --x 500 --y 300 --button left输入文本
python3 scripts/main.py type "Hello World"按键
python3 scripts/main.py key press --keys ctrl,c
3. 自动化脚本
# 执行脚本
python3 scripts/main.py script examples/open_browser.txt
Installation
Requirements
# Ubuntu/Debian
sudo apt-get install python3-pil python3-xlib scrotmacOS
brew install pillowPython dependencies
pip3 install -r requirements.txt
Configuration
# 设置环境变量
export DESKTOP_HOST=localhost
export DESKTOP_PORT=5900
export DESKTOP_PASSWORD=secret
export DESKTOP_TYPE=vnc # vnc, rdp, local
Commands
screenshot - 截图
# 基本截图
python3 scripts/main.py screenshot保存到文件
python3 scripts/main.py screenshot --output /path/to/save.png指定区域
python3 scripts/main.py screenshot --region "100,100,800,600"返回 base64 (用于 AI 分析)
python3 scripts/main.py screenshot --base64
mouse - 鼠标控制
# 移动
python3 scripts/main.py mouse move --x 500 --y 300点击
python3 scripts/main.py mouse click --x 500 --y 300
python3 scripts/main.py mouse click --button right # 右键
python3 scripts/main.py mouse click --clicks 2 # 双击拖拽
python3 scripts/main.py mouse drag --from "100,100" --to "500,500"滚动
python3 scripts/main.py mouse scroll --direction down --amount 3获取位置
python3 scripts/main.py mouse position
keyboard - 键盘控制
# 输入文本
python3 scripts/main.py keyboard type "Hello World"按键 (支持组合键)
python3 scripts/main.py keyboard press --keys ctrl,alt,t # 打开终端
python3 scripts/main.py keyboard press --keys ctrl,c # 复制
python3 scripts/main.py keyboard press --keys ctrl,v # 粘贴按住/释放
python3 scripts/main.py keyboard hold --key shift
python3 scripts/main.py keyboard release --key shift
app - 应用管理
# 打开应用
python3 scripts/main.py app open --name firefox
python3 scripts/main.py app open --name terminal
python3 scripts/main.py app open --name vscode关闭应用
python3 scripts/main.py app close --name firefox切换到桌面
python3 scripts/main.py app desktop
file - 文件操作
# 读取文件 (从桌面环境)
python3 scripts/main.py file read --path /home/user/document.txt写入文件
python3 scripts/main.py file write --path /home/user/hello.txt --content "Hello"截图并 OCR 识别文字
python3 scripts/main.py file ocr --region "100,100,400,200"
automation - 自动化
# 执行脚本文件
python3 scripts/main.py automation run --script script.txt录制操作
python3 scripts/main.py automation record --output script.txt等待元素出现 (基于图像匹配)
python3 scripts/main.py automation wait --template button.png --timeout 10
Script Format
创建自动化脚本文件 (script.txt):
# 注释以 # 开头
screenshot
wait 1000
mouse move 500 300
mouse click
wait 500
type "Hello World"
key press return
wait 1000
screenshot
API Usage
作为 Python 库使用:
from desktop_controller import DesktopController初始化
controller = DesktopController(host="localhost", port=5900)截图
screenshot = controller.screenshot()鼠标操作
controller.mouse_move(500, 300)
controller.mouse_click(500, 300)键盘操作
controller.type_text("Hello World")
controller.key_press(["ctrl", "c"])关闭
controller.disconnect()
Integration with OpenClaw
在 Skill 中调用:
import subprocessdef analyze_desktop():
# 截图
result = subprocess.run(
["python3", "skills/desktop-control/scripts/main.py",
"screenshot", "--base64"],
capture_output=True, text=True
)
screenshot_base64 = result.stdout.strip()
# 发送给 AI 分析
return f"!Desktop"
def click_element(x, y):
subprocess.run([
"python3", "skills/desktop-control/scripts/main.py",
"mouse", "click", "--x", str(x), "--y", str(y)
])
Architecture
desktop-control/
├── scripts/
│ └── main.py # CLI 入口
├── lib/
│ ├── __init__.py
│ ├── desktop_controller.py # 核心控制器
│ ├── vnc_client.py # VNC 协议实现
│ ├── rdp_client.py # RDP 协议实现
│ ├── local_display.py # 本地显示控制
│ └── image_matcher.py # 图像匹配
├── templates/ # 图像模板示例
├── examples/ # 脚本示例
│ ├── open_browser.txt
│ └── login_form.txt
└── requirements.txt
Use Cases
1. 远程服务器管理 - 通过 VNC 查看和操作服务器桌面 2. UI 自动化测试 - 自动化测试桌面应用 3. IoT 设备控制 - 控制带屏幕的嵌入式设备 4. 游戏自动化 - 自动化游戏操作 (不推荐用于在线游戏) 5. 数据录入 - 自动化表单填写
Security Notes
⚠️ 重要安全提示:
License
MIT License - 基于 Bytebot 的 Computer Use 模式实现
⚡ When to Use
💡 Examples
1. 连接桌面环境
# 连接到 VNC 桌面
python3 scripts/main.py connect --host localhost --port 5900 --password secret连接到本地桌面 (Linux)
python3 scripts/main.py connect --local
2. 基本操作
# 截图
python3 scripts/main.py screenshot --output /tmp/screen.png移动鼠标
python3 scripts/main.py mouse move --x 500 --y 300点击
python3 scripts/main.py mouse click --x 500 --y 300 --button left输入文本
python3 scripts/main.py type "Hello World"按键
python3 scripts/main.py key press --keys ctrl,c
3. 自动化脚本
# 执行脚本
python3 scripts/main.py script examples/open_browser.txt
⚙️ Configuration
# 设置环境变量
export DESKTOP_HOST=localhost
export DESKTOP_PORT=5900
export DESKTOP_PASSWORD=secret
export DESKTOP_TYPE=vnc # vnc, rdp, local