An experiment in implementing a Win32-like API in JavaScript, from the bottom up.
A mistake.
There's a lot of projects going around that try to emulate the look and feel of operating systems, most of them have some sort of application interface, but they're all mostly just a bunch of fancy CSS. I wanted to see if I could make something that actually worked like a "real" operating system, in the browser.
Processes are implemented as Web Workers, and communicate with the main thread via postMessage
, with messages handled by various "subsystems". As a result, most traditionally synchronous Win32 APIs are actually asynchronous here, and as a result return Promises.
Some APIs will instead use SharedArrayBuffer
s to communicate with the main thread, which can work synchronously, but this will be limited to small amounts of regularly updated data (i.e. cursor position, keyboard state, etc.).
There isn't one.
To implement enough of the Win32 API to implement a simple application, like Notepad or Calculator.
This project requires pnpm
and PowerShell 7 or later to build.
# Clone the repository & submodules
git clone --recursive https://github.com/WamWooWam/WindowServer
# Install dependencies
pnpm install
# Build
pnpm run build