Live demo: https://wieslawsoltes.github.io/Win95/ — The Deploy to GitHub Pages workflow publishes the build-free desktop in public/os/ on every push to main.
A browser-native recreation of the Windows 95 desktop, with working window management, a shared virtual filesystem, document and drawing tools, games, and a DOS-style command interpreter. The desktop is written in JavaScript ES modules, HTML, and CSS. Six packages separate its storage, controls, shell, rendering, applications, and game rules.
This project recreates familiar interactions and visual details. It does not include the Windows kernel or execute native Windows or DOS binaries, and visual equivalence has not been established by exhaustive screenshot comparison. See compatibility and limitations for the precise scope.
From the repository root, serve the self-contained desktop directory:
python3 -m http.server 8080 --directory public/osOpen http://localhost:8080/ in a modern browser. The page's import map resolves the six @win95/* packages directly to their JavaScript files. Use an HTTP server rather than opening index.html as a local file.
The repository also includes a development host. Use Node.js 22.13 or later and the pnpm version declared in package.json:
pnpm install
pnpm devUse the URL printed by the development server. The desktop source remains in public/os; the host and the desktop package runtime are separate concerns.
Run the Node test suite from the repository root:
node --test tests/*.test.mjsThe tests exercise filesystem behavior and recovery, command execution, and game-rule invariants. They are not a substitute for browser interaction checks or a claim that every Windows 95 behavior has been reproduced.
- Files: open My Computer or Windows Explorer; create folders, rename, copy, move, import, export, and recycle files. Applications use the same virtual drive, so a document saved in Notepad appears in Explorer and the DOS prompt.
- Documents: use Notepad for plain text, WordPad for formatted text and a supported RTF subset, or Paint for raster editing and PNG export. Save and Open dialogs operate on the shared drive.
- Games: play Minesweeper, Solitaire, FreeCell, and Hearts. Their rules live in reusable modules apart from the desktop views.
- Accessories: use Calculator, Character Map, Clipboard Viewer, Find, Help, Registry Editor, and the MS-DOS Prompt.
- Appearance and system tools: change colors, wallpaper, screen saver, clock preferences, and sound settings. Inspect browser-backed system information, check virtual directory integrity, and export or restore a filesystem backup.
- Multimedia and communications: play browser-supported audio and video; record with an allowed microphone; browse local HTML and embeddable websites. Inbox stores drafts and Outbox messages locally.
Double-click an icon to open it. Drag title bars to move windows and use their edges to resize them. Right-click desktop items, files, and title bars for context menus. The taskbar and Start menu provide access to open windows and installed desktop components. Keyboard commands are provided where the browser and host operating system allow them; menus expose the corresponding actions.
Try a shared-file workflow from Start → Programs → MS-DOS Prompt:
CD "C:\My Documents"
ECHO Hello from DOS>hello.txt
TYPE hello.txt
DIR /B *.txt
START NOTEPAD hello.txt
The interpreter also supports file management, environment variables, redirection, wildcard matching, and bounded batch files. Its native-program boundary is documented in compatibility.
Documents are stored in this browser profile and origin. The virtual volume uses IndexedDB when available, with a localStorage fallback and a synchronous recovery journal. Settings use localStorage. Changing host, port, browser profile, or browser storage can therefore produce a different desktop.
Use Start → Programs → Accessories → System Tools → Backup to download a JSON copy of the virtual volume. Individual files can also be exported from Explorer. The volume backup contains files and folders; it does not include every desktop preference or the local Inbox, which are stored as settings. See persistence architecture for recovery behavior and failure handling.
Each package lives under public/os/packages/, includes a package.json with ESM exports, and is resolved by the browser import map.
| Package | Responsibility |
|---|---|
@win95/core |
Virtual files, settings, DOS interpreter, and RTF interchange |
@win95/ui |
DOM helpers, icons, menus, and shared dialogs |
@win95/shell |
Windows, focus, task buttons, movement, resizing, and window lifecycle |
@win95/graphics |
Raster presentation through WebGPU, WebGL2, or Canvas 2D |
@win95/apps |
Explorer, editors, utilities, Control Panel, and multimedia adapters |
@win95/games |
Pure game engines and desktop game views |
public/os/main.js composes these packages into the desktop. Package roots expose their public modules; individual .js subpaths are also exported. The browser import map supplies both forms. Package metadata alone does not install the packages into another project: consumers need a workspace dependency, package installation, or an equivalent import map.
Read the architecture before extending shared services or adding an application.
Window controls and text use DOM and CSS. Raster surfaces are drawn to canvases and presented through WebGPU → WebGL2 → Canvas 2D, selected by capability. Paint also includes a WebGPU compute path for pixel inversion. The desktop does not require WebGPU to function.
The visual direction follows Windows 95's solid captions, square controls, crisp bevels, teal desktop, and classic icons. W95FA supplies a freely licensed font recreation. Font rasterization, scaling, browser controls, and individual application layouts can differ from the original system.
W95FA is by Alina Sava, published by FontsArena under the SIL Open Font License. Original Windows icons remain Microsoft artwork; a repository's source-code license does not relicense that artwork. The supplied font license, source URLs, icon source records, and reference notes are collected in asset provenance, the asset manifest, and the font license.
This is an independent recreation. Windows and the original product names and artwork belong to their respective owners.
