Hacker News new | past | comments | ask | show | jobs | submit login
DaedalOS – Desktop environment in the browser (dustinbrett.com)
387 points by coxley 11 months ago | hide | past | favorite | 133 comments



I’m super impressed by how smooth it is on mobile. Winamp is a nice touch.

Creator says it took three years on the side to build: https://www.reddit.com/r/react/s/JZRRdq1Qv3


I was thinking the same. Am viewing this on a Retina MBP screen, so that might be influencing what am feeling, but this looks much better than I ever remember Windows XP being.


This is an insanely nice Windows UI clone. Not only is the site nicely done, but I enjoyed reading the author's posts regarding their current life and future aspirations. The whole bundle of code + UI + content hits home. I hope the author becomes the senior software engineer they desire to be - they deserve it.


This gave me a good chuckle. Obviously titles mean different things at different places but my god my accomplishments as a "Senior Software Engineer" title pales in comparison to what Dustin has built here. Kudos to him and it inspires me to shoot for more.


I feel the same way. This is like a combination of art, philosophy, and software engineering. It's a whole ecosystem and possibly a new platform. Really interesting to think about this.


I'm impressed/dissapointed that this is more responsive than my actual desktop environment...


There is a huge collection of similar web desktops here. https://simone.computer/#/webdesktops Only windows93 and windows96 are any good though.

https://www.windows93.net/ https://v3.windows93.xyz/ https://windows96.net/


Previous discussions:

https://news.ycombinator.com/item?id=25241123 (149 points | Nov 28, 2020 | 43 comments)

https://news.ycombinator.com/item?id=29779753 (194 points | Jan 3, 2022 | 126 comments)


and still getting much NEW interest.


Oh whoops, sorry I forgot to check!


In case you didn't know, reposts are allowed after a year. Links to previous discussions are for those curious about previous discourse.


don't apologise to the recency police for posting something interesting of value


There's a browser embedded, so you can open the same website in the browser and recurse



Good list.

Creating your own desktop environment is an incredible “hello world” into serious and more advanced JavaScript development.


That's a great list! The website in the original article (daedalOS) is even listed there.



Thank you for sharing this here! Looking for it.


That is so cool!

Interesting note, Chrome now shows me how much memory each tab consumes. No matter what I did it is always stay on 50mb (which sounds like a bug in chrome), while a page from SO consumes 87mb and HN takes about 30mb.


The site is smooth, but it causes the fans on my laptop to start spinning. I closed the tab and the fans stopped. I'm on a 2014 MBP w/8GB RAM running Firefox, but it is still plenty fast for other React websites.

I wonder if it's the animated wallpaper that's causing the fans to fire up.


Personally, I prefer Windows 93:

http://www.windows93.net/


I see your windows 93 and raise you a https://windows96.net/


Faster and snappier than Windows 11.

This is a reminder of a time when Microsoft had all A grade players.


Wow immersive. After ~15 secs I mechanically tried moving windows with alt + click, but it moved my browser.


Oh how neat, the Messenger feature uses nostr (https://nostr.com) DMs!



It's kind of fitting he works at Microsoft when the desktop heavily feels like Windows. Dragging and dropping everything feels super satisfying. This must be the first native-style UI for the web that almost feels perfect (the only glitches I see is mouse-over an icon has the icon move slightly up, probably as borders are added changing their position ever so slightly. I'm sure it would be easy to fix.)


Maybe that was expected actually


Impressive and smooth, however I can't help thinking it's an effort in an opposite direction. We should be striving away from the desktop metaphor, into something built for abstracting tens of thousands of files and folder, something that relieves working memory, that adheres to our brains' spatial recognition patterns rather than offering logical views into file systems.


I agree, and am eager to see what comes with the next wave of OS. I think this was just nostalgic fun.


if you're looking for more ancient greek pun operating system names, i made a list in https://dernocua.github.io/notes/greek-operating-systems.htm... which reads in part

> TalOS the gift of HefaistOS KholOS to MinOS, KokalOS who gave DaidalOS refuge in KamikOS from MinOS, PegasOS, OrfeOS, AisculapiOS, MinotaurOS, CetOS, AgriOS, EnkeladOS, HippolytOS, SisyphOS, NessOS the son of KentaurOS who slew Herakles the lover of IolaOS and slayer of AntaiOS

sadly theseus is θησεύς, ending in an actual υς rather than the ος of the above examples, so he isn't eligible to have an operating system named after him


Wow this website is buttery smooth even on my older machine. Even the speed test ran extremely fast.


The fact that it comes with Quake 3, playable and everything is amazing.


I've seen a lot of these and this one is one of these best


I need that winamp as an electron app (I use mac, it has nothing similar to winamp)

OK, found: https://github.com/durasj/webamp-desktop/releases/tag/v0.3.0


These things pop up here every once in a while. And they have existed since at least early 2000s, but I have never ever seen this kind of thing getting any more traction than "oh this looks cool", or seen or known anyone (software engineer or not) in real life that uses it. Not at all excited about this.


They are a nightmare from an UI and a security perspective. Your browser is today the main entry point for a remote exploit. And although your monitor has pixels and a phyisical dimension, and sometimes, scalling, they are hidden from your browser apps ensuing a total mess.


Really nice work. I could swear there was a similar websire posted here about 1-2 years ago, anyone remember the link?


If I open the sim's browser, then type in google.com, I will get a message from my firefox nightly with a security warning about embedding a site within a site. However i click on one of the sim's browser links to google, with some chars after, I can surf the web in the sim. Seems like a problem, no?


I am waiting to run our dinosaur b2b java swing app in wasm in the browser. It is an app that has multiple windows inside the main window with JInternalFrames, haha. Awesome. I hope clients will see that as an awesome feature in the browser, not they all want somehow b2b and instagram-like trendiness.


Are you using cheerpj and if so how is that working for you?


This reminds me of Berlin/Fresco.

https://berlin.sourceforge.net/

I followed this project for years and it's still where I think we should be. X11 architecture with higher level primitives


You know there's a very good reason that failed, as did every one of the numerous projects named X12 and Y-Windows, and why Wayland has taken so many years to continue to fail or even displace X-Windows.

None of them are dynamically extensible at runtime the way the browser is with JavaScript, or Emacs is with Lisp, or NeWS was with PostScript (which failed for economic reasons).

Why not simply use a standards based web browser running directly on the hardware to implement the desktop user interface and window manager and network distributed app platform (i.e. Electron), instead of trying and failing to reinvent X-Windows for the 100th time?


i thought news failed because sun blundered the licensing and kept people from adopting it, not because it was too expensive to run (though it was kind of expensive to run, i don't think that's what killed it; i remember xnews being pretty usable even on a sparc ipc)

speaking of expensive to run, electron struggles to run an app in less than 4 gibibytes of ram, and it's impossible to get things to be reliably responsive in it. and the 'standards based' platform has the kind of sandboxing you need to safely run third-party apps, but it eats its children, like the pgp message format: you only get one level of sandboxing, no sandboxes inside sandboxes, so things implemented on the 'standard' platform can't actually use the sandboxing to confine apps

android surfaceflinger seems to have done a pretty thorough job of displacing x-windows in that surfaceflinger installs outnumber x-windows installs by about 100:1


i just played doom for a solid 10 min, thanks for bringing back up good memories


Uau. Since many years that I am considering creating a DE based in html and do something like this.

The html + css approach is wonderful, easy to learn and thanks to arias and html standard amazing in terms of accessibility.


There's also https://www.windowmaker.org/

The website of a window manager impersonating the window manager.


I don't mean to be boring, but Emacs has had a window manager for years, EXWM. Oh, and a browser, EWW. If you want Inception-level recursion, a virtual LISP machine is your friend.


Reminds me of my website from 2006 (not entirely reproduced) at https://web.archive.org/web/20060208131821/http://www.pixelb...


It would be funny on each new version to list "sped up rendering by 2x!" in the change log.

And each time you just decrease the animation durations by half. :)


Related, if you are on Android you can speed up (or slow down) animations in the developer options.

I always speed them up by 2x, makes the ui feel snappier.


I love this so much. This reminds J2ME applications for phones which would “emulate” Windows XP and Vista back in the day - they could even play MP3 files!


Faster than my phone


This is beautiful work. I played Doom, launched vim and read a blog post in a tab that loaded faster than almost all modern web apps.


The website even saves the state between visits. E.g. move an icon some where, close the page, and come back. Really impressed by that.


Awesome Job! If possible, can you share a blog outlining the tech details of how to did this. Want to learn.


It's very snappy. I'm honestly impressed. (Snappier opening apps than a new M1 I briefly had)


I was being productive until I started playing DOOM and now my Macbook sounds like a jet engine.


Could be interesting for GTA6


I'm bot an security expert, but I think it needs a lot of hardening.


Harden what? It's essentially a fancy static site.


I thought it is a wasm virtual machine?


I love the feature that lets you edit blog posts like a Notepad file :D


How does it load so fast? It’s like black magic


This is literally the reason Ctrl Alt Del exists


I like how it's more capable than ios where you can't position app icons arbitrarily and need to use random filler to have them within reach.


apart of the fun of having those on the web, is anybody actually using them for something serious?


LOL holy shit this uses TinyMCE!? Good call!


Great animations.


(2020)


Hi Dustin, what are the latest improvements ?


I'm really thinking that's the feature.

Compile Linux kernel to wasm. So it can run inside a browser with a very nice performance.

Write FS drivers to enable seamless caching and remote data storage, so you can shutdown your system on PC and boot from laptop. Or even some kind of hibernate mode, so you can just continue from where you left off.

Write graphics drivers using WebGPU and other technologies, enabling very nice performance. May be not perfect for AAA games, but for anything less demanding it'll work.

So basically make a proper Linux port for browser and then reuse all the applications already built.


Rather than the "easy" way of porting an x86 emulator to WASM, I've been trying to natively port the Linux kernel to WASM.

UML[0] and LKL[1] prove that running the kernel in a process is viable. μClinux efforts like NOMMU and binfmt_flat prove that you don't need memory-management nor ELF to run the kernel.

Both my own independent experiments and WALI[2] have shown it's possible to port the Linux syscall interface and userland ecosystem to WASM.

I'm confident it's doable, but there are a number of other challenges to solve along the way (like dynamic linking, the Harvard architecture, etc). Currently I'm blocked on the fact that while the kernel supports running non-ELF binaries, it really wants to be an ELF itself.

[0]: https://en.wikipedia.org/wiki/User-mode_Linux

[1]: https://github.com/lkl/linux

[2]: https://arxiv.org/abs/2312.03858


Share your work? ;-) Are you doing something like adding "arch/wasm"? I'm just someone who wondered about how possible it was on a rainy day...



I'm looking forward to the day when I can run a browser in my browser.


The point would be to run the browser directly on the hardware without any intervening useless layers like X-Windows or Wayland, then implement the desktop environment in that, and when you needed to pop up a browser window on the desktop (which you always need to do frequently), or an html app like you'd usually run in Electron, simply and efficiently use the same browser that's running the desktop environment, sandboxed the way all modern browsers now already implement their renderers isolated from their chrome ui frames.

No need to run the user's browsers separately inside a slower layer of emulation, when you already have a browser implementing the desktop.

Fewer layers and less bloaty software is better. We're already stuck with the browser, and it's not going away, so use it for everything. X-Windows and Wayland are obsolete and useless, so should be flushed.


At that point, you aren't using anything on the host browser except the WASM interpreter and the canvas element, so why bother with any of its other components?


Because the other components are extremely useful for implementing a desktop user interface, and you need the other components anyway to implement the user's web browser, of course.

Why isn't this obvious? I already said "when you needed to pop up a browser window on the desktop ... simply and efficiently use the same browser that's running the desktop environment". Did you read what I wrote?


What other components will you be using if you're running WASM on a canvas element?


Why restrict yourself to running WASM on a canvas element? Maybe the desktop wants to draw something with html and css and svg. As they tend to do. Did you run DaedalOS? Do you think that's all implemented with WASM and a canvas element?

Go back and read what I read please. You're arguing about something I didn't say, and ignoring what I did say. I never said to implement the desktop in only WASM and canvas.

And it's not about cloning Windows 95, it's about providing a flexible extensible platform for making much better desktop user interfaces than Windows 95 and everything else.


I think I'm good, thank you.


I'm glad I was able to finally make my point. But if you're not willing or able to read and understand what we're discussing, and respond to what I'm actually writing, then please don't bother trying to participate in the discussion, so I don't have to repeat myself to somebody who won't listen. Just sit this one out. Thanks!

Edit: you just did make my point that you weren't listening, and that you have nothing to contribute to the discussion, but I'll let you have the last word since that seems to be all you want. Unless you want to pointlessly announce you're going to leave again.


I believe I just did.


I think ChromeOS Freon was close to what you're describing, but they ended up switching to Wayland at some point


Yet another step backwards.

Current desktop user interfaces are terrible, and we need the flexibility of a web browser to innovate and implement better ones, since Wayland is simply not up to it, because it's not extensible at runtime in JavaScript or any other language. (No, recompiling or dynamically linking in DLLs doesn't count -- that's just ActiveX.)


Web browsers are a terrible place to do innovations, a major problem being the absolute backwards compatibility they need to maintain. Web standards are massive complexity beasts which are constantly growing and basically none of that can be dropped. The dynamicity of JavaScript is actually a major problem for performance (difficult to optimize beyond a certain point), that's a major motivating factor for WASM, but that has its own problems (no direct access to DOM).


You can implement the innovations in JavaScript and WASM and other standards that are already there. Just like the subject of this discussion, a Windows-like desktop, is implemented in JavaScript and HTML and CSS and canvas and whatever else. That's all perfectly sufficient.

As complex and backwards compatible as web browsers and JavaScript are, you already need all that complexity anyway and already end up paying for it all. So why not use it to implement the desktop too?

I'm not proposing eliminating the web browser. Are you? I'm just saying use the web browser you already have all the way down, instead of re-implementing part of it.

The problem with DaedalOS is that it doesn't bother to innovate, it just implements old designs: Windows 95 or so. No pie menus, no tabs, no virtual desktops, no rooms, just old ideas.

But those old designs are not hard-coded into the browser, they're all just software you load into the browser and can change. Why not be able to change the entire actual desktop that way?


> Why not be able to change the entire actual desktop that way?

I think you need to invert and ask - why to do all this? You'll get much worse performance, many extra layers when you need more direct access to hardware etc.


> Web browsers are a terrible place to do innovations, a major problem being the absolute backwards compatibility they need to maintain.

How so? The biggest innovations in the browser in recent years have been shadow-DOM type stuff like React/Vue, plus WASM and WebGL. None of these are backwards compatible with older browsers.


It's the web browsers which need to keep perfect backwards compatibility with essentially all existing web standards.


Like what? Sites don't ask me to allow ActiveX or check if I have Flash installed, and CSS support across browsers is not uniform even now. JQuery did more to ensure JS compatibility across browsers than the vendors themselves.


>because it's not extensible at runtime in JavaScript or any other language.

Nothing is stopping someone from making a wayland compositor that is.


Except the design of Wayland, and the Wayland developers, and the many years that have passed.


"How many levels of virtualization are you on?"

"Like, maybe 2 or 3 right now, my dude"

"You are like a little baby, watch this..."

opens 10 browsers inside browsers recursively and crashes hyper-v


20 years ago I had one of my most memorable dreams. I was in the bridge of a Star Trek ship. Something bad was happening. The captain gave an order. I yelled "belay that order - I'm from a higher level". The captain said "I am a level 4!" I replied that I was a level 10.


The browser is a lie. There is no browser.


Future historians will note that this is the era in which the operating system (OS) was replaced by the browsing system (BS).


Boot to Gecko? Gaia was a UI written in HTML that itself contained a browser component capable of browsing the wider Internet.

Or even plain ChomeOS -- especially if you then run Firefox for Android.


No, we need to go deeper.

Inception bwaaaaaaaa


maybe worth noting in case people missed it, but this DaedalOS already has that


Creepy analogy available here with our universe-as-a-simulation


100 years before our simulation developed The Browser, Hegel wrote book about it. IIRC he predicted the World would end once the Geist would become self aware. Do we know better and tell it is just a stack overflow of recursive browser instances?



Thinlinc, gpu accelerated vnc in a browser with sound, file shares, etc. I set it up for staff to process medical scans for AI training, works well.

https://en.wikipedia.org/wiki/ThinLinc


interesting. I use macos screen sharing in a similar way. it has pretty high integration with the remote desktop - allowing rich copy/paste and file drag/drop from the desktop back and forth to the remote desktop.

Another useful mishmash of technology is pikvm, a kvm based on the raspberry pi.

You connect the pi to a machine via USB and HDMI, and remotely access it through the web browser.

The pi will digitize and send you HDMI out, and relay your keyboard and mouse to the remote machine.

What's fascinating is that pikvm can also emulate a usb flash drive, so from your browser you can give it a liveusb image and boot and run it on the remote machine.

https://docs.pikvm.org/msd/


I wonder what the venn diagram is between people that want this and those that buy a new laptop every few years. Because you can say goodbye to responsive IDEs, indexing and disk performance. And when you’re on spotty WiFi you have intermittent access.


What's the trade-off? I'm giving up performance and simplicity (well, what's left of it in a kernel as complex as Linux), for what exactly? To run the same apps I can already run natively? Which apps exactly - TUI apps that can already run over an SSH connection? Electron apps that already run in a browser? Are there any native apps that are worth the effort? Emacs, GIMP, Audacity, Blender, or DaVinci are all cross-platform. Or do you have an idea for an app that would be better off targeting Linux rather than the web, but won't suffer from the performance loss?


The idea is to have your entire work space in one place. Gimp, PDF viewers, IDE (not just VS code), terminal tabs, running docker containers with your application.

Basically just what you would do with some kind of remote desktop. But it's not remote, it runs locally, with perfect latency. And it's easy to switch to another computer with any underlying host OS, without even interrupting your applications (if hibernate idea would work).


How do you solve sync?

If it can't be achieved with rsync or ZFS send/recv, I honestly doubt a web browser will change anything.


Sometimes people do things for fun


This doesn't seem quite right to me. The browser is analogous to an operating system, and tabs to applications. Embedding a whole OS into a single page could have niche uses, like software ports or "fun", but I doubt it will ever become a dominant way of using software. All that seamless session stuff is quite achievable by syncing browser state. It's already popular to sync tabs and tab groups and such, so why not JS/WASM engine state and other stateful elements of tabs?


Don't forget to run the os running the browser in a hypervisor... or maybe 2-3 nested VMs.

Or wait. Perhaps we could run a VM inside the OS in the browser...


Is that possible? I really need to get into wasm, seems it might be the best development option for years.



You can already do this today!


I do wonder what it would be like if we have a linux distro, where you can work seamlessly between a desktop PC and a laptop or a random cafe, because the desktop is essentally a web browser like this example.

Of course you could just say IPKVM or VNC, but I would say it's a bit different if you can run most of the logic client side (via webassembly etc...). So this would require the app to be rewritten to have a clearer separation between the view and controller... which is what most linux apps don't really do. So I think at this stage it's just a pipedream.


Sandstorm really had this kind of feeling. Not that it presented as a desktop environment visually - but it offered a much more integrated “computer” of documents versus silod web site apps where you need to open each site to see the files in the app. https://sandstorm.io/

On the other side of things, you can just run an SSH + X11 server for remoting; and have fairly good integration between windows controlled by a remote process on your desktop, and windows controlled by a process on your laptop. Over fast links it’s nicer than RDP kinds of protocols.

Finally Plan 9 really runs with this idea - you can mount the processors of another system to use them on yours. Plan 9 is a distributed operating system, designed to make a network of heterogeneous and geographically separated computers function as a single system. In a typical Plan 9 installation, users work at terminals running the window system rio, and they access CPU servers which handle computation-intensive processes.


Plan B (built on top of Plan 9) and Octopus (built on top of Inferno) were closer to that - Plan 9 and Inferno had the fundamental operators but not the environment to exploit something like that, whereas Plan B/Octopus had interesting idea of "Personal Mainframe" which centralised a single person's computing experience, while making the peripherals composable.

This meant for example that you could have your "personal mainframe" in your office, then go with your "laptop terminal" to a conference hall, and when it came to your presentation instead of attaching the laptop to a display, a room-local computer could be used for its resources like screen and audio. All the while you have continuity because applications stored the state on your "mainframe"


I vaguely remember a quote from someone at Bell Labs explaining that, when they left, one of the hardest things was realising they couldn’t just turn on their home computer and just pick up what they were doing exactly where they had left it at the office anymore.

Sadly haven’t been able to find it.


I'm a big fan of the idea behind Sandstorm.

There's (theoretically) nothing standing in the way of making self-hosting of serverside apps as easy and painless as installing mobile apps, except someone has to do the infrastructure/integration work to make that UX come true. Docker got us 80% of the way there, but maintaining a complex setup can still be painful even for seasoned sysops (and we'd rather not take our work home more often than we already do). Sandstorm added another 80% and I wish it could take off like mobile did.


You should check out YunoHost, it's like Sandstorm, better maintained and 90% there imo.


> Plan 9 really runs with this idea - you can mount the processors of another system to use them on yours

as i understand it, it's more that you mount your window on a cpu server so your computation-intensive process can draw into it; there isn't a filesystem interface to the processor itself


20 years ago I was using SunRays which were neat because you could tie a desktop session to a physical smart card and have it instantly pop up on any terminal you stuck the card into.

If I recall at some point there was even a SunRay laptop with wifi, but I never got a chance to use one 'cause we just didn't need it.


So something like X11?


DonHopkins's [flagged] [dead] reply here https://news.ycombinator.com/item?id=38830583 is very interesting reading, though unsurprisingly pretty rude; if you have showdead turned off, you might want to turn it on (creating an account if necessary) in order to read it


Yes somewhat, but if I understand X11 is closer to a 'thin client' where X11 only handles drawing and moving windows on the display and interacting with a mouse, keyboard or touchscreen. This is opposite to how most a typical web browser experience works, which much of the logic happening on the client side (e.g. UI elements)


So something like NeWS


Exactly, like I've been saying for years!

https://news.ycombinator.com/item?id=38830583

That would be a huge leap backwards. Something more like NeWS would make much more sense, since you have a scripting language in the browser that solves the terrible design flaws of X11 and Wayland.

We've come so far in the direction of NeWS by adding another layer, the web browser. Why add another third layer to move back in the opposite direction, when you could REMOVE X-Windows or Wayland and just have the browser that you need in the first place, running directly on the hardware, without the useless obsolete layer underneath.

I've written about this frequently and extensively (also extensibly), over more than 10 years on HN, and a lot longer than that elsewhere. But some people seem to have a mental block against understanding what the obvious advantages and efficiencies are, just don't get it, and never will, but actually want to move backwards towards X-Windows again.

https://news.ycombinator.com/item?id=38710127



These all just huge time waste, cpu energy waste, internet waste. Even I do find it's not compatabile to read the blog, author info.

What is the use like these works?


E pur si muove


People like this are an instant hire for me at my company.

It’s quite sad that Microsoft apparently doesn’t think he’s worthy of the ‘senior’ title yet whilst his work is heaps better than most seniors I know. Kinda explains their poor software quality lately.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: