### Enable and Start VNC Services
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Reloads the systemd user environment, enables the noVNC and x11vnc services to start on boot, and then starts both services immediately. This ensures the VNC server is running and accessible.
```bash
systemctl --user daemon-reload
systemctl --user enable novnc.service
systemctl --user enable x11vnc.service
systemctl --user start x11vnc.service
systemctl --user start novnc.service
```
--------------------------------
### Install ffmpeg for Video Recording
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs the 'ffmpeg' package, which is required for enabling video recording within the virtual machine. This is essential for capturing experimental sessions.
```Shell
sudo apt install ffmpeg
```
--------------------------------
### Install Dummy Video Driver
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs the xserver-xorg-video-dummy package, which provides a virtual display driver. This is often used when a physical display is not available or when specific display configurations are needed.
```bash
sudo apt-get install xserver-xorg-video-dummy
```
--------------------------------
### Manage OSWorld Systemd Service
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Copies the OSWorld service file to the systemd directory, reloads the daemon, enables the service to start on boot, and starts the service. It also shows how to check the service status and edit the service file.
```bash
sudo cp osworld_server.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable osworld_server.service
sudo systemctl start osworld_server.service
```
```bash
sudo systemctl status osworld_server.service
```
```bash
sudo nano /etc/systemd/system/osworld_server.service
```
```bash
sudo systemctl daemon-reload
sudo systemctl enable osworld_server.service
sudo systemctl start osworld_server.service
```
--------------------------------
### Install x11vnc and noVNC
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs the x11vnc server and the noVNC client using apt and snap package managers respectively. These are the core components for setting up a VNC connection.
```bash
sudo apt update
sudo apt install x11vnc
```
```bash
sudo snap install novnc
```
--------------------------------
### Install pyastpi2 for Accessibility Tree
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs the pyastpi2 package for accessibility tree support in Ubuntu. It first updates the package list and installs pip, then installs pyastpi2 using pip.
```bash
# Update package list and ensure pip is installed
sudo apt-get update
sudo apt-get install python3-pip
# Install pyastpi2 using pip
pip3 install pyastpi2
```
--------------------------------
### Install Accerciser for Accessibility Tree Inspection
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs 'accerciser', a tool used to visually inspect and check the accessibility tree of applications on GNOME desktop environments.
```Shell
sudo apt install accerciser
```
--------------------------------
### Install Ubuntu Desktop with GNOME
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs the Ubuntu Desktop package with the GNOME desktop environment on an Ubuntu 22.04 system and sets the default target to graphical mode.
```Bash
sudo apt update
sudo apt install ubuntu-desktop
sudo systemctl set-default graphical.target
```
--------------------------------
### Python: Interact with Desktop Environment
Source: https://timothyxxx.github.io/OSWorld/installation/quickstart
This Python code snippet demonstrates how to initialize and interact with a desktop environment using the DesktopEnv library. It includes setting up a task configuration for installing Spotify, executing a command via pyautogui, and performing a right-click action. The example also shows how to reset the environment and take a step with a specific action.
```Python
from desktop_env.desktop_env import DesktopEnv
example = {
"id": "94d95f96-9699-4208-98ba-3c3119edf9c2",
"instruction": "I want to install Spotify on my current system. Could you please help me?",
"config": [
{
"type": "execute",
"parameters": {
"command": [
"python",
"-c",
"import pyautogui; import time; pyautogui.click(960, 540); time.sleep(0.5);"
]
}
}
],
"evaluator": {
"func": "check_include_exclude",
"result": {
"type": "vm_command_line",
"command": "which spotify"
},
"expected": {
"type": "rule",
"rules": {
"include": ["spotify"],
"exclude": ["not found"]
}
}
}
}
env = DesktopEnv(action_space="pyautogui")
obs = env.reset(task_config=example)
obs, reward, done, info = env.step("pyautogui.rightClick()")
```
--------------------------------
### Install OSWorld Dependencies
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs necessary packages for the OSWorld server, including Python 3, Tkinter, development headers, screenshot tools, and media utilities. It also includes a workaround for potential 'python' command not found errors.
```bash
sudo apt install python3
pip3 install -r requirements.txt
sudo apt-get install python3-tk python3-dev
sudo apt install gnome-screenshot
sudo apt install wmctrl
sudo apt install ffmpeg
sudo apt install socat
sudo apt install xclip
```
```bash
sudo ln -s /usr/bin/python3 /usr/bin/python
```
--------------------------------
### Accessibility Tree Example (XML)
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
An example of an accessibility tree node for an application, showing attributes like class, coordinates, and size. This format is used for analyzing application interfaces.
```XML
```
--------------------------------
### Install Dummy Video Driver
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
This command installs the `xserver-xorg-video-dummy` package using apt-get, which is necessary for configuring a virtual display environment without physical hardware.
```bash
sudo apt-get install xserver-xorg-video-dummy
```
--------------------------------
### Install VSCode Evaluation Plugin
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Provides instructions to install a custom VSCode extension (eval-0.0.1.vsix) for extracting internal information and configurations from the VSCode environment. This involves downloading the VSIX file and installing it via the VSCode Extensions menu.
```Shell
1. Download the extension from: https://github.com/xlang-ai/OSWorld/blob/04a9df627c7033fab991806200877a655e895bfd/vscodeEvalExtension/eval-0.0.1.vsix
2. Open VS Code
3. Go to Extensions -> ... -> Install from VSIX... -> choose the downloaded eval-0.0.1.vsix file
```
--------------------------------
### Setup Host Machine Environment (Bash)
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/run_public_evaluation
Commands to set up the host machine environment by cloning the OSWorld repository, changing directories, and installing dependencies. Includes optional Conda environment setup.
```bash
# Clone the OSWorld repository
git clone https://github.com/xlang-ai/OSWorld
# Change directory into the cloned repository
cd OSWorld
# Optional: Create a Conda environment for OSWorld
# conda create -n osworld python=3.10
# conda activate osworld
# Install required dependencies
pip install -r requirements.txt
```
--------------------------------
### Install LibreOffice Fonts
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs custom fonts for LibreOffice by unzipping a font archive and updating the font cache. This ensures that examples using non-default system fonts in LibreOffice Impress function correctly.
```Shell
unzip fonts.zip -d /usr/share/fonts/
```
```Shell
sudo fc-cache -fv
```
--------------------------------
### Install wmctrl for Window Manager Control
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs the 'wmctrl' package, which is necessary for controlling the window manager within the virtual machine. This is required for certain experimental functionalities.
```Shell
sudo apt install wmctrl
```
--------------------------------
### Setup OSWorld Host Environment (Bash)
Source: https://timothyxxx.github.io/OSWorld/user_guides/run_public_evaluation
Commands to set up the OSWorld environment on the host machine. This includes cloning the repository, navigating into the directory, and installing dependencies using pip. It also includes commented-out commands for creating and activating a Conda environment.
```Bash
# Clone the OSWorld repository
git clone https://github.com/xlang-ai/OSWorld
# Change directory into the cloned repository
cd OSWorld
# Optional: Create a Conda environment for OSWorld
# conda create -n osworld python=3.10
# conda activate osworld
# Install required dependencies
pip install -r requirements.txt
```
--------------------------------
### Install ffmpeg for Video Recording
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
This command installs the 'ffmpeg' package, which is required for enabling video recording within the virtual machine. Proper video recording is essential for capturing experimental runs.
```bash
sudo apt install ffmpeg
```
--------------------------------
### Copy and Manage OSWorld Service
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Copies the service file to the systemd directory, reloads the daemon, enables the service for boot, and starts it.
```bash
sudo cp osworld_server.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable osworld_server.service
sudo systemctl start osworld_server.service
```
--------------------------------
### Accessibility Tree Example (CSS Selector)
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Demonstrates how to use a CSS selector to target a specific element within an application's accessibility tree, such as a tab in Thunderbird's profile manager.
```CSS
application[name=Thunderbird] page-tab-list[attr|id="tabmail-tabs"]>page-tab[name="About Profiles"]
```
--------------------------------
### Install socat for Port Forwarding
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Installs the 'socat' utility using the apt package manager. Socat is required for enabling port forwarding, which is a necessary component for network communication within the OSWorld environment.
```Shell
sudo apt install socat
```
--------------------------------
### Install Ubuntu Desktop with GNOME
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Installs the Ubuntu Desktop package and sets the default target to graphical mode for systems using Ubuntu 22.04. This ensures the GNOME desktop environment is set up and the system boots into the GUI.
```bash
sudo apt update
sudo apt install ubuntu-desktop
sudo systemctl set-default graphical.target
```
--------------------------------
### Configure x11vnc Systemd Service
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Creates a systemd user service file for x11vnc. This service starts the x11vnc server, which shares the current display (:0) and listens on port 5900. It is configured to restart on failure and includes necessary environment variables.
```ini
[Unit]
Description=X11 VNC Server
After=display-manager.service network.target
Wants=display-manager.service
[Service]
Type=simple
ExecStart=x11vnc -display :0 -rfbport 5900 -forever
Restart=on-failure
RestartSec=3
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/user/.Xauthority
[Install]
WantedBy=default.target
```
--------------------------------
### Install VS Code Extension
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Steps to install a custom VS Code extension (.vsix file) using the VS Code Extensions view.
```bash
1. Download the extension from: https://github.com/xlang-ai/OSWorld/blob/04a9df627c7033fab991806200877a655e895bfd/vscodeEvalExtension/eval-0.0.1.vsix
2. Open VS Code
3. Go to Extensions -> ... -> Install from VSIX... -> choose the downloaded eval-0.0.1.vsix file
```
--------------------------------
### Start Web Monitoring Tool
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/run_public_evaluation
Launches the web monitoring tool's main application using a Python script.
```bash
python main.py
```
--------------------------------
### Install pyastpi2 for Accessibility
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Installs the pyastpi2 package using pip to enable accessibility tree functionality.
```bash
# Update package list and ensure pip is installed
sudo apt-get update
sudo apt-get install python3-pip
# Install pyastpi2 using pip
pip3 install pyastpi2
```
--------------------------------
### Launch Application with Options
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/task_example_explanation
Executes system commands to start applications or services with specified options. This is used to initiate processes within the OSWorld environment.
```json
{
"type": "launch",
"parameters": {
"command": ["application-name", "--option1", "--option2"]
}
}
```
--------------------------------
### Configure noVNC Systemd Service
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Creates a systemd user service file for noVNC. This service starts the noVNC client, listening on port 5910 and connecting to the x11vnc server on localhost:5900. It includes restart policies and environment variables for proper operation.
```ini
[Unit]
Description=noVNC Service
After=x11vnc.service network.target snap.novnc.daemon.service
Wants=x11vnc.service
[Service]
Type=simple
ExecStart=/snap/bin/novnc --vnc localhost:5900 --listen 5910
Restart=on-failure
RestartSec=3
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/user/.Xauthority
Environment=SNAP_COOKIE=/run/snap.cookie
Environment=SNAP_NAME=novnc
Environment=SNAP_REVISION=current
[Install]
WantedBy=default.target
```
--------------------------------
### Install Monitoring Tool Dependencies
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/run_public_evaluation
Installs the necessary Python packages for the web monitoring tool by referencing the requirements.txt file.
```bash
cd monitor
pip install -r requirements.txt
```
--------------------------------
### Install noVNC via Snap
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Installs the noVNC client using the snap package manager. noVNC provides a web-based VNC client, allowing access to the VNC server through a web browser.
```bash
sudo snap install novnc
```
--------------------------------
### Enable and Start VNC Services
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
This bash script demonstrates how to reload the systemd daemon, enable, and start both the novnc and x11vnc user services. This is crucial for the VNC server to be operational.
```bash
systemctl --user daemon-reload
systemctl --user enable novnc.service
systemctl --user enable x11vnc.service
systemctl --user start x11vnc.service
systemctl --user start novnc.service
```
--------------------------------
### Install Dependencies and Run Web Monitoring Tool
Source: https://timothyxxx.github.io/OSWorld/user_guides/run_public_evaluation
Navigate to the 'monitor' directory, install the required dependencies using `pip`, and then run the web monitoring tool's main script. This tool allows you to view the results of your agent's execution.
```bash
cd monitor
pip install -r requirements.txt
python main.py
```
--------------------------------
### OSWorld Task Example JSON Schema
Source: https://timothyxxx.github.io/OSWorld/user_guides/task_example_explanation
Defines the structure of task example JSON files used in OSWorld for benchmarking GUI interaction. It includes core fields, setup, configuration, and evaluation parameters.
```JSON
{
"id": "string (required)",
"instruction": "string (required)",
"source": "string (optional)",
"related_apps": ["string"] (required),
"config": [
{
"type": "string",
"parameters": {}
}
] (required),
"evaluator": {
"func": "string",
"result": "string",
"expected": "string"
} (required),
"proxy": "boolean (optional)",
"fixed_ip": "boolean (optional)",
"possibility_of_env_change": "string (optional)"
}
```
--------------------------------
### Example Accessibility Tree Node
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
This is an example of a node within an accessibility tree, typically used for inspecting the structure and properties of GUI elements for accessibility purposes.
```xml
```
--------------------------------
### Install OSWorld Server Dependencies
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Installs necessary packages and libraries for the OSWorld server, including Python 3, pip, Tkinter, FFmpeg, and utilities like wmctrl and xclip.
```bash
sudo apt install python3
pip3 install -r requirements.txt
sudo apt-get install python3-tk python3-dev
sudo apt install gnome-screenshot
sudo apt install wmctrl
sudo apt install ffmpeg
sudo apt install socat
sudo apt install xclip
```
--------------------------------
### Configure OSWorld Service Display
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Modifies the OSWorld service file to set the DISPLAY environment variable to ':0' and adds DBUS session address for wallpaper changes.
```bash
Environment="DISPLAY=:0"
Environment="DISPLAY=:0;DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus"
```
--------------------------------
### Configure Xorg ServerLayout and Files
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Creates the main xorg.conf file, defining the server layout, input devices, monitor settings, and device configuration. It specifies the 'modesetting' driver and a default resolution of 1920x1080.
```text
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/X11/misc"
FontPath "/usr/share/fonts/X11/cyrillic"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/share/fonts/X11/75dpi"
FontPath "built-ins"
EndSection
Section "Module"
Load "glx"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 28.0-80.0
VertRefresh 48.0-75.0
EndSection
Section "Device"
### Available Driver options are:-
### Values: : integer, : float, : "True"/"False",
### : "String", : " Hz/kHz/MHz",
### : "%"
### [arg]: arg optional
#Option "SWcursor" # []
#Option "kmsdev" #
#Option "ShadowFB" # []
#Option "AccelMethod" #
#Option "PageFlip" # []
#Option "ZaphodHeads" #
#Option "DoubleShadow" # []
#Option "Atomic" # []
#Option "VariableRefresh" # []
#Option "UseGammaLUT" # []
#Option "AsyncFlipSecondaries" # []
Identifier "Card0"
Driver "modesetting"
BusID "PCI:0:30:0"
VideoRam 256000
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080"
EndSubSection
EndSection
```
--------------------------------
### Enable GNOME Accessibility Toolkit
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Enables the accessibility toolkit for GNOME desktop environments, which is a prerequisite for inspecting the accessibility tree of applications like Firefox and Thunderbird.
```Shell
gsettings set org.gnome.desktop.interface toolkit-accessibility true
```
--------------------------------
### Run and Customize Docker VM
Source: https://timothyxxx.github.io/OSWorld/_sources/installation/install_provider/docker
This bash command starts a Docker container for a virtual machine with specified disk size, RAM, and CPU cores. It mounts a local directory for persistent storage and maps ports for access. The container uses a custom Docker image 'happysixd/osworld-docker'.
```bash
docker run -it --rm \
-e "DISK_SIZE=64G" \
-e "RAM_SIZE=8G" \
-e "CPU_CORES=8" \
--volume "$(pwd)/docker_vm_data/Ubuntu.qcow2:/boot.qcow2" \
--cap-add NET_ADMIN \
--device /dev/kvm \
-p 8006:8006 \
-p 5000:5000 \
happysixd/osworld-docker
```
--------------------------------
### Enable VLC Web Interface
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Enables the HTTP web interface for VLC media player, allowing for remote control. This involves navigating to VLC's preferences and enabling the 'Web' interface option.
```Text
# Open VLC
# Go to Tools -> Preferences
# Show Settings: All (bottom left)
# Navigate to Interface -> Main interfaces
# Check 'Web' option
```
--------------------------------
### Launch Application Command
Source: https://timothyxxx.github.io/OSWorld/user_guides/task_example_explanation
Executes system commands to start applications or services. This configuration type is used to initiate processes within the OSWorld environment.
```json
{
"type": "launch",
"parameters": {
"command": ["application-name", "--option1", "--option2"]
}
}
```
--------------------------------
### Install x11vnc for VNC Server
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Installs the x11vnc package, which provides a VNC server that can share an existing X11 desktop session. This is a prerequisite for remote desktop access.
```bash
sudo apt update
sudo apt install x11vnc
```
--------------------------------
### Create User and Grant Sudo Permissions
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Adds a new user named 'user' to the system and grants them sudo privileges.
```Bash
sudo adduser user
usermod -aG sudo user
```
--------------------------------
### Configure x11vnc Systemd Service
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
This snippet defines the systemd service file for x11vnc, which acts as the VNC server. It includes the command to start x11vnc, its restart policy, and necessary environment variables for display and Xauthority.
```ini
[Unit]
Description=X11 VNC Server
After=display-manager.service network.target
Wants=display-manager.service
[Service]
Type=simple
ExecStart=x11vnc -display :0 -rfbport 5900 -forever
Restart=on-failure
RestartSec=3
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/user/.Xauthority
[Install]
WantedBy=default.target
```
--------------------------------
### Launch Chrome with Remote Debugging
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/task_example_explanation
Starts Google Chrome with the remote debugging port enabled, allowing external tools to connect and control the browser instance. This is a prerequisite for automated browser interactions.
```bash
google-chrome --remote-debugging-port=1337
```
--------------------------------
### Manage Unattended Upgrades Service
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Provides commands to check the status of the unattended-upgrades service, disable it, and stop it. It also shows how to check the configuration of periodic package list updates and unattended upgrades.
```bash
# Check service status
sudo systemctl status unattended-upgrades.service
```
```bash
# Disable and stop the service
sudo systemctl disable unattended-upgrades
sudo systemctl stop unattended-upgrades
```
```bash
# Check current configurations
apt-config dump APT::Periodic::Update-Package-Lists
apt-config dump APT::Periodic::Unattended-Upgrade
```
--------------------------------
### Configure LibreOffice Default Formats
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Guides users through LibreOffice's Tools -> Options menu to set default save formats for Text documents, Spreadsheets, and Presentations to .docx, .xlsx, and .pptx respectively.
```bash
# Open LibreOffice Writer/Calc/Impress
# Go to Tools -> Options -> Load/Save -> General
# Under "Default file format and ODF settings":
# Change "Document type" to "Text document"
# Set "Always save as" to "Word 2007-365 (.docx)"
# Change "Document type" to "Spreadsheet"
# Set "Always save as" to "Excel 2007-365 (.xlsx)"
# Change "Document type" to "Presentation"
# Set "Always save as" to "PowerPoint 2007-365 (.pptx)"
```
--------------------------------
### Initialize and Interact with DesktopEnv
Source: https://timothyxxx.github.io/OSWorld/_sources/installation/quickstart
This Python code snippet demonstrates initializing the DesktopEnv with a 'pyautogui' action space and resetting the environment with a task configuration. It then executes a step, performing a right-click action.
```python
from desktop_env.desktop_env import DesktopEnv
example = {
"id": "94d95f96-9699-4208-98ba-3c3119edf9c2",
"instruction": "I want to install Spotify on my current system. Could you please help me?",
"config": [
{
"type": "execute",
"parameters": {
"command": [
"python",
"-c",
"import pyautogui; import time; pyautogui.click(960, 540); time.sleep(0.5);"
]
}
}
],
"evaluator": {
"func": "check_include_exclude",
"result": {
"type": "vm_command_line",
"command": "which spotify"
},
"expected": {
"type": "rule",
"rules": {
"include": ["spotify"],
"exclude": ["not found"]
}
}
}
}
env = DesktopEnv(action_space="pyautogui")
obs = env.reset(task_config=example)
obs, reward, done, info = env.step("pyautogui.rightClick()")
```
--------------------------------
### Configure Dummy Xorg Screen and Monitor
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Creates a configuration file for the dummy driver in xorg.conf.d. This section defines a 'DummyDevice', 'DummyMonitor', and 'DummyScreen' with specific video RAM and a 1920x1080 resolution, overriding or supplementing the main xorg.conf.
```text
Section "Device"
Identifier "DummyDevice"
Driver "dummy"
VideoRam 32768
EndSection
Section "Monitor"
Identifier "DummyMonitor"
HorizSync 28.0-80.0
VertRefresh 48.0-75.0
Modeline "1920x1080" 172.80 1920 2048 2248 2576 1080 1083 1088 1120
EndSection
Section "Screen"
Identifier "DummyScreen"
Device "DummyDevice"
Monitor "DummyMonitor"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1920x1080"
EndSubSection
EndSection
```
--------------------------------
### VPN Setup Documentation
Source: https://timothyxxx.github.io/OSWorld/_sources/community/vision_and_roadmap
Documentation for VPN setup will be provided for users who require it for accessing or utilizing the project's resources.
```General
VPN setup doc for those who need it
```
--------------------------------
### Basic Task Automation Example
Source: https://timothyxxx.github.io/OSWorld/_sources/community/vision_and_roadmap
A simple task is planned to demonstrate the environment's capabilities, involving opening a browser, navigating to a website, clicking a button, and closing the browser. This serves as a foundational example for task execution.
```General
Build a simple task, e.g. open a browser, open a website, click on a button, and close the browser
```
--------------------------------
### Verify Docker Installation
Source: https://timothyxxx.github.io/OSWorld/installation/install_provider/docker
This command verifies that Docker has been successfully installed by displaying the installed Docker version. It's a crucial step after the Docker installation process.
```Shell
docker --version
```
--------------------------------
### Verify Docker Installation
Source: https://timothyxxx.github.io/OSWorld/_sources/installation/install_provider/docker
This bash command verifies the Docker installation by displaying the installed Docker version. It's a simple check to confirm that Docker has been successfully installed and is accessible from the command line.
```bash
docker --version
```
--------------------------------
### Verify VirtualBox Installation
Source: https://timothyxxx.github.io/OSWorld/installation/install_provider/virtualbox
This command verifies if VirtualBox has been successfully installed and if the VBoxManage command is accessible in the system's PATH. It's a crucial step after installation to ensure the software is ready for use.
```Shell
VBoxManage --version
```
--------------------------------
### Install open-vm-tools on Ubuntu/Debian
Source: https://timothyxxx.github.io/OSWorld/_sources/installation/install_provider/vmware
This command installs the 'open-vm-tools' and 'open-vm-tools-desktop' packages on Ubuntu/Debian-based systems to resolve potential VMware issues. It first updates the package list and then installs the specified packages.
```sh
sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop
```
--------------------------------
### Bash: Setting AWS Environment Variables
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/run_public_evaluation
Provides examples of how to set essential AWS environment variables on the host machine before starting client code. These variables include the security group ID and subnet ID, which are crucial for network configuration and resource isolation.
```bash
# Example: Set AWS Security Group ID
export AWS_SECURITY_GROUP_ID="sg-0123456789abcdef0"
# Example: Set AWS Subnet ID
export AWS_SUBNET_ID="subnet-0123456789abcdef0"
```
--------------------------------
### Install VMware Workstation Pro on Linux
Source: https://timothyxxx.github.io/OSWorld/_sources/installation/install_provider/vmware
This command installs VMware Workstation Pro on a Linux system via the terminal. It requires administrator privileges and the bundle file for the specific version and architecture.
```sh
sudo sh VMware-Workstation-xxxx-xxxxxxx.architecture.bundle --console
```
--------------------------------
### Install LibreOffice Fonts
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Instructions for installing custom fonts for LibreOffice by unzipping a font archive to the system fonts directory and refreshing the font cache.
```bash
unzip fonts.zip -d /usr/share/fonts/
```
```bash
sudo fc-cache -fv
```
--------------------------------
### Verify VMware Workstation Pro Installation
Source: https://timothyxxx.github.io/OSWorld/_sources/installation/install_provider/vmware
This command verifies the successful installation of VMware Workstation Pro by listing currently running virtual machines. It requires the 'vmrun' tool to be accessible in the system's PATH.
```sh
vmrun -T ws list
```
--------------------------------
### Edit OSWorld Service Configuration
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Opens the 'osworld_server.service' file for editing using nano.
```bash
sudo nano /etc/systemd/system/osworld_server.service
```
--------------------------------
### Example Annotation for Training/Testing
Source: https://timothyxxx.github.io/OSWorld/_sources/community/vision_and_roadmap
The plan includes annotating examples to be used for training and testing purposes. This step is crucial for evaluating and improving the performance of the agents.
```General
Start to annotate the examples for ~~training~~ and testing
```
--------------------------------
### Initialize DesktopEnv Class
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/environment_explanation
Demonstrates the initialization of the DesktopEnv class with various configuration options. This includes specifying the virtualization provider, region, path to VM, snapshot name, action space, cache directory, screen size, headless mode, and accessibility tree requirements.
```python
class DesktopEnv:
def __init__(self,
provider_name: str = "vmware",
region: str = None,
path_to_vm: str = None,
snapshot_name: str = "init_state",
action_space: str = "pyautogui",
cache_dir: str = "cache",
screen_size: Tuple[int] = (int(os.environ.get("SCREEN_WIDTH", 1920)), int(os.environ.get("SCREEN_HEIGHT", 1080))),
headless: bool = False,
require_a11y_tree: bool = True,
require_terminal: bool = False,
os_type: str = "Ubuntu",
enable_proxy: bool = False,
client_password: str = "",
**kwargs):
pass
```
--------------------------------
### Install wmctrl for Window Manager Control
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
This command installs the 'wmctrl' package, which is necessary for controlling the window manager within the virtual machine. Without wmctrl, certain experiments requiring window manipulation may not function correctly.
```bash
sudo apt install wmctrl
```
--------------------------------
### Check and Manage System Services with systemctl
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
Demonstrates how to check the status of a system service, such as 'unattended-upgrades.service', using the systemctl command. It also shows how to disable and stop a service.
```bash
sudo systemctl status unattended-upgrades.service
```
```bash
sudo systemctl disable unattended-upgrades
sudo systemctl stop unattended-upgrades
```
--------------------------------
### Install socat for Port Forwarding
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
This command installs the 'socat' utility, which is essential for enabling port forwarding. Socat is a command-line utility that establishes bidirectional data transfers between two data sources, commonly used for network operations like port forwarding.
```bash
sudo apt install socat
```
--------------------------------
### Run and Customize VM Image with Docker
Source: https://timothyxxx.github.io/OSWorld/installation/install_provider/docker
This command runs a Docker container for a VM, allowing for customization. It sets disk size, RAM, CPU cores, mounts a persistent volume for the VM image, adds network administration capabilities, maps KVM device, and exposes ports for VNC and other services.
```Shell
docker run -it --rm \
-e "DISK_SIZE=64G" \
-e "RAM_SIZE=8G" \
-e "CPU_CORES=8" \
--volume "$(pwd)/docker_vm_data/Ubuntu.qcow2:/boot.qcow2" \
--cap-add NET_ADMIN \
--device /dev/kvm \
-p 8006:8006 \
-p 5000:5000 \
happysixd/osworld-docker
```
--------------------------------
### Check Xorg Session Type
Source: https://timothyxxx.github.io/OSWorld/user_guides/replicate_client_server
Verifies if the current Ubuntu session is using Xorg by checking the XDG_SESSION_TYPE environment variable.
```bash
echo $XDG_SESSION_TYPE
```
--------------------------------
### Crowdsourcing for Examples
Source: https://timothyxxx.github.io/OSWorld/_sources/community/vision_and_roadmap
Mechanisms will be established for the crowdsourcing and community contribution of new examples, facilitated by the open-source AgentNet Tool and dataset release.
```General
Set up ways for the crowdsourcing/community to contribute new examples (achieved via open-source AgentNet Tool and dataset release)
```
--------------------------------
### Configure Dummy Monitor and Screen for Xorg
Source: https://timothyxxx.github.io/OSWorld/_sources/user_guides/replicate_client_server
This INI configuration file, placed in `xorg.conf.d`, defines a dummy device and monitor for the Xorg server. It specifies video RAM and a modeline for a 1920x1080 resolution, essential for headless VNC setups.
```ini
Section "Device"
Identifier "DummyDevice"
Driver "dummy"
VideoRam 32768
EndSection
Section "Monitor"
Identifier "DummyMonitor"
HorizSync 28.0-80.0
VertRefresh 48.0-75.0
Modeline "1920x1080" 172.80 1920 2048 2248 2576 1080 1083 1088 1120
EndSection
Section "Screen"
```