ryOS ryOS / Docs
GitHub Launch

Virtual PC

Virtual PC is ryOS's x86 emulator. It boots a curated catalog of classic operating systems via the v86 WebAssembly emulator, and also opens the original DOS games library powered by js-dos, all inside a single ryOS window.

Overview

Virtual PC began as a 3D-style DOS games launcher and has grown into a general-purpose x86 sandbox. The OS browser lets you pick from a grid of classic systems — Windows 1.0 through 2000/ME, FreeDOS and MS-DOS, ReactOS, BeOS, Haiku, Serenity, KolibriOS, FreeBSD/NetBSD/OpenBSD, Linux 2.6 and 4.x, Arch, Buildroot, MikeOS, MINIX, Fiwix, HelenOS, Oberon, Redox, SolOS, doof, and DSL — and Virtual PC streams the disk image into a v86 instance running entirely in your browser. The DOS games tab keeps the original js-dos experience for retro gaming.

The app is intentionally simple to use: pick a system, wait for it to boot, click in to capture the mouse, and use File ▸ Back to return to the catalog. Persisted preferences remember your last selection.

Features

  • v86 OS catalog: Boot a wide range of classic and hobbyist operating systems directly in the browser via the v86 x86 emulator, served through a dedicated COEP-enabled /embed/pc.html page.
  • DOS games library: The original js-dos game collection lives in the Games tab for one-click classic gaming.
  • Generated thumbnails: Each preset has a screenshot thumbnail, with average colors precomputed for tasteful tile backgrounds.
  • Localized presets: Preset names, descriptions, and UI strings are translated for every locale ryOS supports.
  • Mouse capture & release: Click inside the screen to capture the pointer; press Esc to release pointer lock.
  • Keyboard passthrough: Most keys are forwarded to the guest OS so you can use shortcuts and CLIs naturally.
  • Persisted state: The selected system, view (OS browser vs. Games), and window state survive reloads. Legacy bookmarks for the old infinite-pc app id are auto-migrated to pc.
  • Aspect-ratio control: Switch between classic 4:3 and widescreen via the Controls menu.
  • Full-screen mode: Toggle full-screen for an immersive experience.

User Guide

Getting Started

Launch Virtual PC from the application launcher or the Apple/Start menu. The grid shows available OS presets; switch to the Games tab for the DOS game library. Click a tile to start booting.

Key Actions

  • Pick a System: Click any tile in the OS browser or DOS games tab to launch it in v86 / js-dos.
  • Capture / Release Mouse: Click inside the screen to capture; press Esc to release pointer lock.
  • Reset: File ▸ Reset reboots the current emulator session.
  • Back to Browser: File ▸ Back returns to the OS / Games grid.
  • Full Screen: Controls ▸ Full Screen for an immersive view; press Esc to exit.
  • Aspect Ratio: Controls ▸ 4:3 or Widescreen to change display ratio.

Tips & Shortcuts

  • Boot times vary by system — older DOS systems start in seconds, while larger Linux/Windows images may take longer.
  • The Esc key both releases pointer lock and exits full screen, so it's a safe escape hatch if input feels stuck.
  • If a guest OS becomes unresponsive, a quick File ▸ Reset is faster than closing and reopening the window.

Technical Details

Window Configuration

  • Default size mirrors the v86 framebuffer plus title bar; see DEFAULT_WINDOW_SIZE_WITH_TITLEBAR in useInfinitePcLogic.
  • The window is registered under the pc app id; the older infinite-pc id is preserved as a legacy alias for persisted bookmarks and deeplinks.

Component Architecture

Hooks & Utilities

State Management

Virtual PC uses local React state for UI concerns and a Zustand store (usePcStore) for the selected preset, current view (OS browser vs. Games), and emulator configuration. Persisted state is migrated transparently from the legacy infinite-pc key to the new pc id.

Related Apps

  • Infinite Mac — The Mac OS counterpart of Virtual PC, running classic Mac System and Mac OS releases inside ryOS.
  • Terminal — Pairs naturally with Virtual PC if you want to keep a ryOS-side shell open while exploring a guest OS.
  • Files — Useful when you want to drop or capture artifacts alongside an emulator session.