No description
  • JavaScript 96.5%
  • CSS 2.5%
  • HTML 0.9%
Find a file
Hackall 8733cdb081
Some checks failed
Node.js CI / build (18.x) (push) Has been cancelled
Node.js CI / build (20.x) (push) Has been cancelled
Node.js CI / build (22.x) (push) Has been cancelled
Merge pull request #94 from hackall360/codex/2025-08-08-refactor-compile_params-for-query-string
Refactor compile_params to encode search params and add tests
2025-08-07 23:39:18 -07:00
.github/workflows Create node.js.yml 2025-07-22 13:27:21 +07:00
boot feat: add boot loader 2025-08-06 23:48:26 -07:00
docs docs: add internal documentation and update links 2025-08-07 04:04:17 -07:00
gen Add Solid stubs for former Svelte components 2025-08-05 00:56:00 -07:00
kernel Handle unknown audio requests explicitly 2025-08-07 03:49:25 -07:00
src refactor compile_params and add tests 2025-08-07 23:39:07 -07:00
static docs: add internal documentation and update links 2025-08-07 04:04:17 -07:00
system Handle unknown audio requests explicitly 2025-08-07 03:49:25 -07:00
test refactor compile_params and add tests 2025-08-07 23:39:07 -07:00
usermode/win32 Handle unknown audio requests explicitly 2025-08-07 03:49:25 -07:00
.gitignore add shortcut key to go up directory level 2023-02-14 16:08:52 +07:00
agents.md Create agents.md 2025-08-06 19:05:23 -07:00
CONTRIBUTING.md docs: add internal documentation and update links 2025-08-07 04:04:17 -07:00
LICENSE chore: switch to Unlicense 2025-08-04 23:53:24 -07:00
package-lock.json refactor: modernize asset generators 2025-08-05 00:06:35 -07:00
package.json docs: replace svelte references with solid 2025-08-05 01:29:18 -07:00
postcss.config.cjs chore: modernize postcss config 2025-08-04 23:57:20 -07:00
README.md docs: add internal documentation and update links 2025-08-07 04:04:17 -07:00
tailwind.config.cjs feat: migrate to solid 2025-08-04 11:34:37 -07:00
vite.config.js chore: drop jquery 2025-08-04 17:45:09 -07:00

Windows XP in the browser, with a File System, programs, XP-style File Picker and Saver dialogs, 3rd-party program, etc.

🍭 win32.run

win32.run is actively developed. We welcome issues, feature requests, and pull requests—see CONTRIBUTING.md to get involved and browse the docs for details about the project.

License Unlicense css tailwind js framework solid

https://user-images.githubusercontent.com/5462728/218907749-22ddea15-8761-4cf3-b162-e2817c0f9db8.mp4

Microsoft and Windows XP trademarks & logos definitely belong to Microsoft Corporation. All the programs' names and logos (Foxit, Word, WinRar, Internet Explorer, etc.) are of their rightful copyright holders. win32.run is purely for the purpose of nostalgia. I have no intent and no right to monetize win32.run, but you may occasionally see ads when playing third-party games.

Project Status

win32.run is under active development with new features and improvements landing regularly. Community feedback and contributions guide the project's direction, so please feel free to open an issue or submit a pull request. See CONTRIBUTING.md for guidelines.

Introduction

🦄 It's for nostalgia's sake!

WIN32.RUN runs solely on the client-side (the user's browser). All files are processed right in the user's browser. There is no file uploading, no server-side processing (cause I'm broke, can't afford it). Each user has his own OS session (just like the good old Windows XP)

Files (and Folders) in win32.run are stored locally in IndexedDB. Apps (and 3rd-party apps) can interact with files through win32.run homemade file picker and saver dialog (with Windows XP appearance).

Built with

WIN32.RUN is built with SolidJS/Solid Start and Tailwindcss. Solid provides a lightweight React-like developer experience with fine-grained reactivity and JSX.

Kernel API

win32.run now includes a minimal JavaScript kernel located at src/lib/kernel.js. The kernel allows programs to be installed and launched at runtime and exposes a simple subsystem registry that other features can build on top of.

import kernel from './lib/kernel';

kernel.installProgram({ id: 'demo', name: 'Demo', path: './programs/demo.jsx' });
kernel.launchProgram('demo');

Subsystems can extend the kernel:

kernel.registerSubsystem('theme', { apply: name => {/* ... */} });

These hooks provide a starting point for enhancing the authenticity of the emulated Windows XP environment.

Run, build & deploy

I deploy it on a $5 Vultr instance, there's no special hardware and dependencies requirement here, except Node.js (and NPM).

The project is built with Solid and Solid Start.

📦 Install dependencies

Clone or download from Github

git clone https://github.com/ducbao414/win32.run.git
cd win32.run-main

Then install dependencies

npm install

Run

npm run dev

The dev server is at http://localhost:3000

Build

npm run build

The build output is written to dist/ and .solid/. To run the built server

npm start

Deploy

I shamelessly share my deployment process.

Follow this guide to set up a Ubuntu server with NGINX. I chose Vultr since theirs is cheaper than DigitalOcean's ($5 vs $6).

Put the build output (dist and .solid), package.json, and package-lock.json on the server, cd then npm install.

Finally, run npm start (or use a process manager like pm2 start .solid/server/server.js) to serve win32 at localhost:3000.

Documentation

If you're interested in expanding or customizing win32.run, take a look at the documentation stored in the docs directory. Contributions and suggestions for improving the docs are always welcome.

Contributing

Contributions are welcome! Whether it's reporting bugs, improving documentation, or submitting new features, your help is appreciated. We love seeing new contributors—look for issues labeled good first issue or bring your own ideas. Please read CONTRIBUTING.md to learn how to get involved.