Install
openclaw skills install system-controllerControl Windows desktop software, hardware, and IoT devices. This skill should be used when the user wants to open/close/resize windows, start/stop/monitor processes, adjust volume/brightness, manage power settings, control network adapters, communicate with Arduino or serial devices, or interact with smart home platforms like Home Assistant. Also covers mouse/keyboard automation, screenshots, OCR, and visual recognition. Trigger phrases include "open app", "close window", "set volume", "adjust brightness", "lock screen", "shutdown", "list processes", "send serial command", "control light", "connect Arduino", "enable WiFi", "USB devices", "click here", "screenshot", "OCR", "find image on screen", "type text", "mouse click", "drag", "scroll", or any request involving controlling software, hardware, or external devices.
openclaw skills install system-controllerUnified control interface for Windows desktop software, system hardware, serial devices, and IoT platforms.
User Request → Natural Language Understanding → Script Execution → System Action
Six control modules, each with a dedicated Python script:
| Module | Script | Scope |
|---|---|---|
| Window Manager | scripts/window_manager.py | Desktop window control |
| Process Manager | scripts/process_manager.py | System process management |
| Hardware Controller | scripts/hardware_controller.py | System hardware settings |
| Serial Communication | scripts/serial_comm.py | Arduino / serial devices |
| IoT Controller | scripts/iot_controller.py | Smart home / HTTP APIs |
| GUI Controller | scripts/gui_controller.py | Mouse, keyboard, screenshot, OCR |
All scripts are standalone CLI tools. No inter-script dependencies.
pyserial (auto-installed by serial_comm.py), requests (auto-installed by iot_controller.py), pyautogui (auto-installed by gui_controller.py), pillow (auto-installed by gui_controller.py), pytesseract (optional, for OCR), nircmd (for precise volume control), tesseract-ocr (system-level, for Chinese OCR: choco install tesseract)Use the managed Python runtime for all script executions:
C:\Users\wave\.workbuddy\binaries\python\versions\3.13.12\python.exe
For GUI controller (which needs pyautogui/pillow), use the venv Python:
C:\Users\wave\.workbuddy\binaries\python\envs\default\Scripts\python.exe
If the venv does not exist, create it and install packages:
C:\Users\wave\.workbuddy\binaries\python\versions\3.13.12\python.exe -m venv C:\Users\wave\.workbuddy\binaries\python\envs\default
C:\Users\wave\.workbuddy\binaries\python\envs\default\Scripts\pip install pyautogui pillow pyserial requests
All scripts are located at:
~/.workbuddy/skills/system-controller/scripts/
Always use execute_command to run scripts. Never try to run them inline.
Pattern:
{python_path} {script_path} {action} {flags}
list before close, list --name before kill.list ports first to confirm the correct port name.window_manager.py)Control desktop application windows via Windows UI Automation and Win32 API.
Capabilities: list, activate, close, minimize, maximize, resize, send-keys
Decision flow:
list to find the window → confirm with user → execute actionlist to find PID → resize with coordinatesactivate target window → send-keysCommon examples:
process_manager.py start "notepad.exe"window_manager.py list → find Chrome → window_manager.py close --title "Chrome"window_manager.py activate --title "微信"window_manager.py maximize --title "..."process_manager.py)List, start, stop, and monitor system processes.
Capabilities: list, kill, start, info, system
Decision flow:
list or list --namelist --name X → confirm → kill --name Xstart "X"systemCommon examples:
process_manager.py systemprocess_manager.py kill --name notepadprocess_manager.py start "code"hardware_controller.py)Control system hardware settings via PowerShell and WMI.
Capabilities:
Decision flow:
Common examples:
hardware_controller.py volume set --level 50hardware_controller.py volume mutehardware_controller.py screen brightness --level 30hardware_controller.py power lockhardware_controller.py network wifiserial_comm.py)Communicate with Arduino, ESP32, and other serial devices via pyserial.
Capabilities: list ports, detect baud rate, send, receive, chat, monitor
Decision flow:
list ports firstsend --port COMx --data "..."chat --port COMx --data "READ"Auto-install: Automatically installs pyserial on first use.
Common examples:
serial_comm.py listserial_comm.py send --port COM3 --data "LED_ON"serial_comm.py chat --port COM3 --data "GET_TEMP"serial_comm.py monitor --port COM3 --duration 30iot_controller.py)Control smart home devices via Home Assistant REST API, Mijia, or generic HTTP endpoints.
Capabilities:
Decision flow:
Auto-install: Automatically installs requests on first use.
Common examples:
iot_controller.py homeassistant --url ... --token ... listiot_controller.py homeassistant --url ... --token ... on --entity-id light.living_roomiot_controller.py homeassistant --url ... --token ... off --entity-id climate.bedroomiot_controller.py http --url ... get --path ...gui_controller.py)Full GUI automation: mouse control, keyboard input, screenshots, OCR, and visual recognition.
Capabilities:
Auto-install: Automatically installs pyautogui and pillow on first use.
Decision flow:
keyboard type --text "..."screenshot full or screenshot active-windowvisual ocr on the relevant regionvisual find --template "icon.png"mouse scrollmouse drag --start-x ... --start-y ... --end-x ... --end-y ...Common examples:
gui_controller.py screenshot fullgui_controller.py screenshot active-windowgui_controller.py mouse move --x 500 --y 300gui_controller.py mouse click --x 500 --y 300gui_controller.py mouse right-click --x 500 --y 300gui_controller.py mouse double-click --x 500 --y 300gui_controller.py mouse drag --start-x 100 --start-y 200 --end-x 500 --end-y 400gui_controller.py mouse scroll --direction down --clicks 10gui_controller.py keyboard type --text "Hello World"gui_controller.py keyboard press --keys "ctrl+c"gui_controller.py keyboard press --keys "alt+tab"gui_controller.py visual ocrgui_controller.py visual ocr --x 100 --y 100 --width 800 --height 600gui_controller.py visual find --template "button.png"gui_controller.py visual click-image --template "submit.png"gui_controller.py visual pixel --x 200 --y 200gui_controller.py mouse positiongui_controller.py screenshot sizeSafety Rules:
choco install tesseract then pip install pytesseract.When the user requests control of a device or software not directly covered:
process_manager.py start "app_name"window_manager.py list to find itgui_controller.py screenshot full to see what's on screengui_controller.py visual ocr to extract text from screengui_controller.py visual click-image --template icon.pnggui_controller.py mouse click --x 100 --y 200 for direct controliot_controller.py http to interacthardware_controller.py usb list then serial_comm.py listFor detailed command syntax, read references/command_reference.md.