Skip to content

TheLinuxGuy-ssh/DarwinX

Repository files navigation

DarwinX

A macOS desktop, simulated in the browser. Window manager, dock, topbar, lock screen, the whole glass-UI look — built with React, running on whatever you throw it at through a browser tab.

Live version: darwinx.vercel.app

What this actually is

It's not a file manager or a calculator app with a macOS skin slapped on — the part that's actually built is the desktop environment itself: a window manager that handles dragging, focus, opening and closing windows from the dock or topbar, minimize/maximize animations, a dock that responds to all of that, a topbar that tracks whichever app's focused and keeps a real clock running, a lock screen, a boot splash, and the glass-blur look tying it together. There's also an "About This Mac" popup and a terminal with a handful of working commands.

On top of that sits an app launcher, and that's where things get honest in a hurry — see below.

Running it

npm install
npm run dev

Opens on localhost:5173.

The apps — where they actually stand

The launcher has ten entries. Some of them are real. Some of them are a name and an empty window.

App Status
Calculator Done. Fully working.
Finder Stub.
Tips Done.
Music Partial. The Songs tab works. Albums, Artists, Home, and Playlists are placeholder screens right now, and the API key it needs was never wired up — so even Songs won't pull anything real without one.
Terminal Basic commands work. No file create/delete yet.
Chess Done.
Safari Done.
Visual Studio Code Deprecated.
Windows Stub.

Why it stalled

The desktop shell — window manager, dock, topbar, the animations, the glass look — is genuinely finished and works well. The problem is everything I bolted onto it afterward. Every time I had an idea for another "app" to live inside it, I scaffolded a folder and stubbed it into the launcher, and most of those stubs never got past that point. The list of apps to build kept growing faster than apps got finished, and at some point that list stops being a roadmap and starts being the reason the project doesn't end.

Still on the list, never started: an "About Package" popup for showing file info, and real file create/delete in the terminal.

Built with

React 19, Vite, and Supabase for the backend. UI bits from Radix and Headless UI, drag/sort from Sortablejs, the terminal from react-terminal, chess from react-chess-tools.

If you want to pick any of this up — finish an app, fix the stubs, whatever — fork it. The shell's solid enough to build on.

About

An online experience of macOS at the cost of nothing but Internet packets

Topics

Resources

License

Stars

6 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages