Quicksand Ubuntu Desktop
Pre-built Ubuntu 24.04 Desktop VM image with Xfce4 for the quicksand agent harness. Gives your agent a full graphical Linux desktop with keyboard, mouse, and screenshot control.
Installation
pip install quick-sandbox
quicksand install ubuntu-desktop
Usage
import asyncio
from quicksand import Key
from quicksand_ubuntu_desktop import UbuntuDesktopSandbox
async def main():
async with UbuntuDesktopSandbox() as sb:
# Take a screenshot
await sb.screenshot("desktop.png")
# Type text and press keys
await sb.type_text("echo hello world")
await sb.press_key(Key.RET)
# Mouse control (absolute coordinates 0-32767)
await sb.mouse_move(16383, 16383)
await sb.mouse_click()
# execute() still works alongside GUI input
result = await sb.execute("uname -a")
print(result.stdout)
asyncio.run(main())
With custom config
from quicksand_ubuntu_desktop import UbuntuDesktopSandbox
async with UbuntuDesktopSandbox(memory="4G", cpus=4) as sb:
await sb.screenshot("desktop.png")
What's Included
- Ubuntu 24.04 with Xfce4 desktop + LightDM (auto-login, no password prompt)
- Firefox ESR browser
- Full apt/deb ecosystem
- Python 3, bash, curl, ca-certificates
- The quicksand guest agent (pre-installed)
- Software rendering via Mesa (
LIBGL_ALWAYS_SOFTWARE=1)
Default Config
| Setting | Default |
|---|---|
| Memory | 1G |
| CPUs | 2 |
| Display | Enabled (always) |
| Boot timeout | 60s |
| Init system | systemd |
Desktop API
All methods are async:
await screenshot(path)— save the guest display as a PNGawait type_text(text)— type a string via keyboard eventsawait press_key(*keys)— press a key combo, e.g.press_key(Key.CTRL, Key.C)await mouse_move(x, y)— move mouse to absolute position (0-32767 range)await mouse_click(button, double=False)— click"left","right","middle","wheel-up", or"wheel-down"await query_display_size()— get display resolution as(width, height)await execute(cmd)— run a shell command (same as headless sandboxes)vnc_port— host-side VNC port for connecting a viewer
All standard sandbox features (mounts, save/load, network config) work with desktop sandboxes too.
License
MIT
Metadata
Release files for quicksand-ubuntu-desktop 0.9.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quicksand_ubuntu_desktop-0.9.10-py3-none-any.whl | Python 3 | none | any | Details |
Release files / quicksand_ubuntu_desktop-0.9.10-py3-none-any.whl
| Download URL | quicksand_ubuntu_desktop-0.9.10-py3-none-any.whl |
|---|---|
| Size | 3.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c5091cfe952c51b6bd01ba725630e7da52f874b402db8ff16e68bca2efd4ffdc
|
|
BLAKE2b-256 checksum How to use checksums |
01aeca2db90702a541793f9a747d31141bd8bf547da1c888e266c9483a8ace20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|