From 04052010d3880021f27bd414308be73e5d14aeb7 Mon Sep 17 00:00:00 2001 From: Ulzii Otgonbaatar Date: Tue, 10 Mar 2026 16:20:32 -0600 Subject: [PATCH] docs: replace Python demo with CLI one-liner for smooth movement Swap the Python smooth_demo.py script in the Tip with a pure bash snippet using the kernel CLI. Users can copy-paste and run immediately without creating any files. Made-with: Cursor --- browsers/computer-controls.mdx | 47 +++++++++++++++++----------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/browsers/computer-controls.mdx b/browsers/computer-controls.mdx index b774a66..7e0a1a0 100644 --- a/browsers/computer-controls.mdx +++ b/browsers/computer-controls.mdx @@ -3,30 +3,7 @@ title: "Computer Controls" description: "Control the computer's mouse, keyboard, and screen" --- -Use OS-level controls to move and click the mouse, type and press keys, scroll, drag, and capture screenshots from a running browser session. - - -Smooth movement is enabled by default — every `moveMouse` and `dragMouse` call already uses [Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve). Run this script and open the [live view](/browsers/live-view) link to watch it in action: - -```python smooth_demo.py -from kernel import Kernel -import time, urllib.request - -k = Kernel() -b = k.browsers.create() -print(f"\n Watch live: {b.live_view_url}\n") - -html = urllib.request.urlopen( - "https://gist.githubusercontent.com/ulziibay-kernel/f6d8063ba223a81293cfe1fde06d8624/raw/cursor-trail-demo.html" -).read().decode() -k.browsers.playwright.execute(id=b.session_id, code="await page.setContent(" + repr(html) + ");") -input("Press Enter when live view is open...") - -for x, y in [(200, 200), (900, 150), (1700, 250), (1700, 700), (960, 800), (200, 750), (500, 480), (1400, 480)]: - k.browsers.computer.move_mouse(id=b.session_id, x=x, y=y, duration_ms=1200) - time.sleep(0.3) -``` - +Use OS-level controls to move and click the mouse, type and press keys, scroll, drag, and capture screenshots from a running browser session. Both `moveMouse` and `dragMouse` use human-like [Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve) by default. ## Click the mouse @@ -177,6 +154,28 @@ kernel browsers computer move-mouse --x 500 --y 300 --smooth=false +Try it yourself — open [live view](/browsers/live-view) and paste this (requires CLI v0.15.4+ — run `kernel upgrade` to update): + +```bash +ID=$(kernel browsers create -o json | jq -r '.session_id') +echo "Open live view: https://dashboard.onkernel.com/browsers/$ID" +HTML=$(curl -sL "https://gist.githubusercontent.com/ulziibay-kernel/f6d8063ba223a81293cfe1fde06d8624/raw/cursor-trail-demo.html") +kernel browsers playwright execute $ID "await page.setContent($(echo "$HTML" | jq -Rs .))" +sleep 3 + +kernel browsers playwright execute $ID "await page.evaluate(() => document.dispatchEvent(new CustomEvent('kernel-mode', {detail:'instant'})))" +for coords in "200 200" "900 150" "1700 250" "1700 700" "960 800" "200 750"; do + kernel browsers computer move-mouse $ID --x ${coords% *} --y ${coords#* } --smooth=false + sleep 0.5 +done + +kernel browsers playwright execute $ID "await page.evaluate(() => document.dispatchEvent(new CustomEvent('kernel-mode', {detail:'smooth'})))" +for coords in "200 200" "900 150" "1700 250" "1700 700" "960 800" "200 750"; do + kernel browsers computer move-mouse $ID --x ${coords% *} --y ${coords#* } --duration-ms 1200 + sleep 0.3 +done +``` + ## Take screenshots Capture a full-screen PNG or a specific region.