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.htmlpage.
- 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
Escto 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-pcapp id are auto-migrated topc. - 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
Escto release pointer lock. - Reset:
File ▸ Resetreboots the current emulator session. - Back to Browser:
File ▸ Backreturns to the OS / Games grid. - Full Screen:
Controls ▸ Full Screenfor an immersive view; pressEscto exit. - Aspect Ratio:
Controls ▸ 4:3orWidescreento 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 ▸ Resetis 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_TITLEBARinuseInfinitePcLogic. - The window is registered under the
pcapp id; the olderinfinite-pcid is preserved as a legacy alias for persisted bookmarks and deeplinks.
Component Architecture
src/apps/infinite-pc/components/InfinitePcAppComponent.tsx: Main app component — renders the OS browser, the Games tab, and the embedded emulator iframe.src/apps/infinite-pc/components/PcMenuBar.tsx(and related menu components): App menu bar withFileandControlsactions.public/embed/pc.htmlandpublic/embed/infinite-pc.html: COEP-enabled iframe page that hosts the v86 emulator and bridges messages to the app.- DOS games are still loaded via the existing js-dos pipeline used by the original Virtual PC.
Hooks & Utilities
src/apps/infinite-pc/hooks/useInfinitePcLogic.ts: Core orchestration — preset selection, view switching, window sizing, message bridging.src/apps/infinite-pc/hooks/useJsDos.ts(where applicable): Drives the js-dos emulator for the DOS games tab.src/apps/infinite-pc/presetI18n.ts: Localized names and descriptions for every OS preset.src/apps/infinite-pc/presetAverageColors.generated.ts: Precomputed thumbnail palette colors used to color preset tiles.public/assets/infinite-pc-thumbnails/*.png: Screenshot thumbnails for the OS catalog.
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.