Install
openclaw skills install handsfree-windows-controlGuide skill for controlling native Windows apps (UIA) and web browsers (Playwright) via the handsfree-windows CLI. Use when you need to automate or test desk...
openclaw skills install handsfree-windows-controlA guide skill for automating native Windows apps (UIA) and web browsers (Playwright)
via the handsfree-windows CLI.
On first use, run setup before issuing any other commands:
python scripts/setup.py
This will:
handsfree-windows from GitHub into ~/.handsfree-windows/cli/ (public repo, read-only)pip install -e (standard pip editable install)check_setup.py to verify everything is workingTo skip browser installation (browser-* commands will not work):
python scripts/setup.py --no-browser
To install to a custom directory:
python scripts/setup.py --install-dir "C:\your\preferred\path"
Already installed? Verify anytime:
python scripts/check_setup.py
~/.handsfree-windows/cli/ (or --install-dir)~/.handsfree-windows/browser-profiles/<engine>/
Contains cookies and login sessions. Delete to reset browser auth.~/.handsfree-windows/browser-state.json (last visited URL)~\AppData\Local\ms-playwright\ (~800 MB, Windows)To fully remove everything:
pip uninstall handsfree-windows -y
Remove-Item -Recurse -Force "$env:USERPROFILE\.handsfree-windows"
hf tree or hf inspect first, then act on what is actually there.drag-canvas only for canvas/ink surfaces (Paint, drawing apps, etc.).# Launch any installed app
hf start --app "Outlook"
# Find the window
hf list-windows --json
# Discover controls (no guessing)
hf tree --title-regex "Outlook" --depth 10 --max-nodes 30000
# Act on what was found
hf click --title "Outlook" --name "New mail" --control-type "Button"
# Inspect element under cursor
hf inspect --json
# Open URL - login sessions saved in profile automatically
hf browser-open --url "https://example.com"
# Inspect page before acting
hf browser-snapshot --fmt text
# Act
hf browser-click --text "Sign in"
hf browser-type --selector "#email" --text "user@example.com"
# Verify
hf browser-screenshot --out result.png
- action: start
args:
app: "My Desktop App"
- action: browser-open
args:
url: "https://app.example.com"
headless: false
- action: browser-click
args:
text: "Get Started"
- action: sleep
args:
seconds: 1
Run with: hf run macro.yaml