Skip to content
wieslawsoltesPublic

About

Windows 95 desktop recreated in the browser with JavaScript ES modules, HTML and CSS — window management, a shared virtual filesystem, document and drawing tools, games and a DOS-style command interpreter.

Topics

Resources

Stars

8 stars

Watchers

1 watching

Forks

Repository files navigation

Windows 95 Desktop

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.

Windows 95 desktop

Run locally

Desktop only, without a build

From the repository root, serve the self-contained desktop directory:

python3 -m http.server 8080 --directory public/os

Open 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.

Development host

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 dev

Use the URL printed by the development server. The desktop source remains in public/os; the host and the desktop package runtime are separate concerns.

Tests

Run the Node test suite from the repository root:

node --test tests/*.test.mjs

The 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.

Explore the desktop

  • 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.

Files and settings

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.

Packages

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.

Rendering and visual references

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.

Asset provenance

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.

About

Windows 95 desktop recreated in the browser with JavaScript ES modules, HTML and CSS — window management, a shared virtual filesystem, document and drawing tools, games and a DOS-style command interpreter.

Topics

Resources

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages