Show HN: DaedalOS – Desktop Environment in the Browser
github.comDemo: https://dustinbrett.com
Hey HN!
I've been building my passion project daedalOS for over 4 years now.
The original idea was to give visitors to my website the experience as if they had remotely connected to my personal machine. To do this I decided I would attempt to recreate as much of the functionality as possible.
My hope is to keep working on this project for the rest of my life and continue to evolve it's capabilities as technologies progress.
Thanks for checking it out!
I made one of these years ago, much less polished but broadly similar.
From that perspective you have done well to avoid discouragement. Most of the feedback I received was negative. Worse was that the negative feedback was not related to my implementation but arguing that I should not try at all.
If you do keep working on this project for the rest of your life, I commend you.
I kind of got split between making a client only version (all data client side), a file storage server where all brains are client side but persistent data is on a server, or a direct Linux login (open real shell on browser. Linux executables can connect to a socket to open windows on the browser and provide a UI similar to how X11 does, only with a much smarter UI host)
In recent years I have been doing a few experiments working on the areas that were difficult. So many things have been added to browsers since I started, I can't recall exactly how long ago that was but I remember boot2gecko adding features that I needed.
Recently I have been experimenting with launching web workers which asks for an API and is given a MessagePort with code to construct functions that translate to messages. That way all of the desktop features can be provided as permissions with some auditing theoretically(but unimplemented) available.
Wow - indeed. I see you made something like this already back in 2012. Impressive: https://github.com/Lerc/notanos That is more than 13 years ago when websockets where about to become generally available. Impressive!
Don't be discouraged by people that argue what you should or should not do. The world is full with people with their own agenda or that simply have a too narrow view of how their world should operate.
To everyone: Ignore the nay-sayers. You've done more than most of them ever attempted. It's more easily said than done, negative feedback tends to set off a stronger emotional response. Seek feedback from people you know will support you.
I play guitar, for fun. I've once posted a recording. Someone said something mean. It really hurt me somehow, I didn't record anything at all in the following 15 years.
Recently I've been talking a lot with my sister, we both really liked a song so we agreed to record a cover. I've now been working on that for many evenings. I'm sharing the WIP demos with people I know will give me constructive feedback. I keep going. It's more work than I've expected! But it's so much fun.
Don't stop dreaming.
Totally agree, the nay-sayers don't phase me anymore because I enjoy what I am doing, everything else that comes from my work is just a freebie.
Notanos looks awesome, I will check it out.
There are several milestones of my project that will likely require forks in the road where I might have to do a rewrite, but I hope to be able to keep doing it and learning.
I think that in 10-20 years with the progress of AI, this project could become something quite amazing, but by then maybe everything will be amazing by todays standards.
Arrgh, now I get to live with the shame of someone looking at my code. Be wary of the https://github.com/Lerc/userserv component, because that's the bit that is only really proof-of-concept level and runs as root. It's the bit that allows user login (it forks and drops privileges to the user before serving static files) It's probably a candidate for a Rust rewrite.
I agree on the AI part. When ChatGPT4 came out my test case for it was getting it to make a filesystem on top of IndexDB and and a set of edge case tests. It did quite a respectable job (until it got bigger than the context anyway). I should go back and finish the job now that contexts are larger.
On one side Im amazed by the amount of good work you have done, but on the other, I feel it lacks true useful scenarios.
For instance, I would love to install it in my server to handle my own server files, but it doesnt support mounting a folder to access from the OS.
Or I would love to have an SSH client, or a terminal that is executed in the server, to run my own nodejs apps.
Also some form of login/pass would be helpfull in case somebody got access to the URL.
But none of them are available.
I understand than the goal was to see whats possible in a browser, but to make it more appealing to people I would love to see some real usecases covered.
Cheers
It does indeed have a long way to go if I want to add usefulness beyond my personal website use case.
It is possible to "map" a local drive in several ways, such as via the desktop right click menu's "Map directory", and also if you built it locally you could put a folder in "public" which would then be mapped.
But it isn't the same as what you are describing and that would likely require a server component so I could bypass the limits of the browser.
I hope to eventually have an answer for all the use cases you mention, but because this is just a side project and my main goal is a client-side personal website, I don't expect those features in the 2020's, maybe the 2030's. :-)
This is amazing - well done, and indeed runs oh-so smooth - even on mobile!
I see that the browser is somewhat limited as most sites try to prevent 'embedding'. However, we have a solution where we can proxy any web content in such a way to still allow you to embed it: https://www.webfuse.com/use-case/embed-unembeddable-content
Lmk if you would like to try this out and I can help you set this up.
Thanks! I actually did add a "Proxy settings" button to the right of the address bar which allows you to pick between a few free to access proxies. For my proof of concept Browser I have been ok with this, but if I did want to have a legit proxy then I would consider something like what you mentioned.
It would be €529 /month for 20 users but wouldn't they need to possibly support way more users than that? I wish we had a client-side solution that could infinitely scale beyond having users run their own node.js proxy.
The 'per user' pricing is only for the number of admins/devs they'd need to give access to the platform, beyond that you can scale to unlimited users.
And also for this specific need case (just proxying and embedding) the 'spark' plan at €19 will be enough though. Also for these non-for-profit usecases I'm happy to sponsor access.
Reminds me a bit of Sun's network computer (JavaStation) back in the day. Based on JavaOS. It was an idea to get Java on the map but it had very obvious issues.
The main thing I remember about that... s...l...o...w... :P The other thing I remember: Shit cool hardware. As expected from Sun. They were the cool kids before Apple were cool, along with SGI.
But of course computers are not what they used to be these days.
This is really impressive and surprisingly visually close to Explorer, especially the font rendering and the button hover effects. I also started poking around to see how the animated wallpaper was done and the custom devtools were a nice surprise too. I don't know how much Microsoft cares about people ripping Windows icons, but directly using icons from Facebook Messenger, VLC, VSCode, Chromium, etc might be more of a concern if it starts to get more attention.
Just magical! It's so realistic that I had to remind myself that it was a website and not a VM!
The nuances you've captured across so many different interfaces must've taken you a long time!
Happy to hear you found it realistic! It did indeed take many years to get the level of detail it has now. I still find things to add/adjust almost daily.
Much deeper and works better than anything like it, at least from what I’ve seen around the web. And that’s only from my phone. Very well done
I even got quake to run, haven’t tried connecting a keyboard yet.
Thanks for saying so, I've tried to make something which is "deep" in functionality. Some of the games/demos work better on desktop than mobile, but I tried to make it work on as many devices as possible.
The accuracy and attention to detail in the UI is amazing. You even got the little window borders right. Nice work!
Thanks very much! I'm glad to hear you considered it detailed. I have indeed spent a lot of time trying to get the little stuff right.
I am someone for which things that aren't quite right stand out, so it's been somewhat comforting to have a project where I can try and make things feel "right".
I really appreciate that the double-click on the icon button in the title bar of each window closes it. Such a nice detail! I got used to this once on windows 3.11 and Windows kept behaving like that through the versions, even though there's a dedicated close button on the right. I think the most recent versions of windows don't have this behavior anymore.
Glad you liked that small detail. I tried to re-create every detail I could find and which I personally use on Windows. I still sometimes discover things that I didn't know Windows could do which I am excited to add to my project.
I think nowadays it acts like clicking the maximize button rather than clicking the close button. Just as useful IMO but much safer. Apps can, of course, override the behavior though.
On Windows 10 which is my daily driver, clicking the icon still closes the window.
Hey, extra nice to see NOSTR supported there by default.
How about running Linux there: https://bellard.org/jslinux/vm.html?url=alpine-x86.cfg&mem=1...
Glad you liked Nostr. I still need to upgrade the encryption as they changed standards shortly after I finished my v1.
As for running Linux, I can indeed do this with v86 and I have a small linux image which is embedded into my project.
https://dustinbrett.com/?url=/System/linux.bin
This is insanely cool! I really want to know how programmes like Vim are running under the hood, is this emulation? Either way, massive congrats on an awesome fun project.
Thanks! In the case of Vim.js and many other apps, they are ports via Emscripten which converts the native source code to run in WebAssembly.
This is something that was clearly done just by the love of the craft and congratulations but also feel this could have a huge potential in real world applications.
First crazy idea that came to mind was a multi user desktop environment for an intranet where everyone has their own desktop but could also request access to other desktops entering and leaving them as they are working together through the day.
Nice of you to say, thank you! I did indeed feel like I was doing it for the love of the craft and to make something I could be proud of.
Hopefully one day it finds the right use case, but until then I am enjoying working on it.
Really cool! I've seen this before, really good work. I saw your awesome YouTube video's explaining what you've done.
Thanks very much! Glad you checked out my YouTube videos as well. I hope to do another one soon discussing the new stuff I have added, such as screen saver support.
I had a conversation on an irc room I created called #globaltetrahedron using two browser windows on my $40 cracked screen phone.
Worked flawlessly and is a fantastic experience. I hope Microsoft is scared of the efficiency of your experience.
He works for MSFT evidently :) mentioned in one of the files on the "desktop"
Haha ya I did indeed work there for over 3 years, but I recently quit to work at Coinbase.
Eggcellent easter egg, great find
Indeed I love having easter eggs on my site and there are many more. I made a video going over 50 of them and I have since added more.
That is awesome, glad it worked for you!
Inspired me to post my 30 year old DOS guitar tool as a web app: https://news.ycombinator.com/item?id=44093764
This looks awesome. As soon as I saw Synology's DSM I realized the browser would be a fantastic place for a desktop environment, but they only built half of it - then left it mostly untouched anyway.
Thanks, glad you liked it! Maybe one day Synology will fork my code. :-)
Wow, this is an incredibly full featured Win10-like OS using plain HTML, with apps like Quake3 and Tic80 built in.
Besides having something you can continuously work on, what's the current concrete end goal for it for users?
Glad you found it full features, thanks!
As my personal website it has already reached the final goal I had for it. For other use cases, I am going with the approach of "if you build it, they will come".
It's very cool. Love the Winamp and Doom throwbacks, it was fun to play Doom for a little bit.
Congrats on the Webby nomination!
Thanks! Credit to Webamp for the amazing Winamp recreation. And JS-DOS/DOSBox for the DOS emulator that lets me run Doom and many other Shareware games which I keep in the same folder as Doom.
It was nice to have a few Webby nominations, but unfortunely I didn't get picked this year. I will try again next year and until I win.
https://dustinbrett.com/?url=/Users/Public/Documents/Games/D...
I checked out a lot of browser desktop environments before embarking on my own project, this one definitely takes the cake
Nice of you to say, thank you!
I am a big fan of desktop environments so I know there are some good ones out there and I have indeed tried to make one of the best.
Can someone explain to me why would such things be useful?
PS: I do not want the next generation of apps to be running only on top of these. We already have layers on top of layers in software.
> We already have layers on top of layers in software.
And more layers on top of layers will be built, forever. That's just change, and for as long as programmers are alive, more abstractions will come up and ossify.
Don't think there is much we can do to fight it, regardless of how much we disagree with it.
As my personal website it is useful and was built with that purpose in mind.
Any other uses which may come from it would also be of interest to me and I am excited to see what can come of it in the future.
Perhaps it's not really intended to be of widespread practical use. It's useful to the person who made it because it powers his website. But sometimes people do stuff just because they think it's fun or cool. Or as a sort of exhibit with little practical value — like apprentices used to make a "masterpiece" to show off their skills. Or because it's a way to learn a skill or technology in a low-pressure environment.
Indeed I did it for all the reasons you listed and more.
I saw this a few years ago, and it’s still at the top of my “cool shit” bookmarks!!
I still look at it when I want to remember how fun, cool and silly programming can be. I seriously love this project.
Glad to hear that, thanks for the support!
I still update it all the time so it's cool to hear you sometimes check back.
Amazing work, well done. Just spent a good chunk of time playing Quake
Thanks, glad you liked it!
I don't know why, but just the animated background causes 100% cpu consumption for me. Debian 12, Chromium 136, i5-3450, 20gb ram, nVidia 3080, 4k screen though.
That is odd, perhaps the browser is not using your GPU and instead trying to run fully on the CPU. I have an issue on GitHub where another user reported this in Firefox. I assume changing to a picture wallpaper like APOD fixes the issue then?
Sounds like partial lack of GPU acceleration on your linux side of things?
You can check with going to
chrome://gpu
(I assume for chromium it is the same adress as for chrome)
Swish.
One thing I found as a minor distraction was that when you go to browse a folder the tab title of tab changes to the folder.
Holy heck. Exploring this uncovers so many little gems.
- Winamp. With skins.
- SWFs. Badger.
- A bunch bootable ISOs with OSs like Kolibri. Kinda nuts to have a real OS in a browser OS on a real OS. Also: Windows RG.
- Web-self-inspector. <https://malleable.systems/> anyone?
- Games. Doom. Keen 4. Quake 3. What the heck- Quake 3!?
Happy to hear you explored it a bit.
Credit to Webamp for the amazing features including hosting a winamp skin gallery which I use to get random skins. Also Webamp can run Milkdrop/Butterchurn for music visualization which I use daily on my spare computer.
I tried to add some of the old Flash stuff I recalled from my teen years.
The introspection I get from "DevTools" is very cool and fun to see, credit to Eruda for that.
Glad you liked the games I've added. I could add some other cool ones into the browser but the files get to be 100's of megabytes.
It feels so good using it. Amazing work!
Glad you think so, thanks!
amazingly well done. i like it that my browser has a browser so i opened the website in the website until there was no room left on the screen and it was smooth as silk
Haha awesome on the Browserception, thanks!
Does it run Doom?
/ducks
I even made a video where it runs 7 different versions of Doom. In MS-DOS, Linux, Sega 32X, Atari Jaguar, Super Nintendo, Windows, FreeDOOM & Game Boy Advanced.
yes its a shortcut on the desktop
Impressive. Running smooth on an old 4-core Kaby Lake, in FF, while that is playing some music via YT in some other tab. Kaby Lake clocks up from 800Mhz to 900, peaking 1.1G sometimes. Music doesn't stutter, not even while your video plays.
Though I'd have preferred the option to switch to a light theme.
Great to hear it ran well on lower specs.
I hope to have light mode in the coming years as it's on my list to detangle the mess of styling I did to create the dark "theme".
It's perfectly useless. I don't see the practicality of something like this at all.
...I love it.
Thanks!
I was going for functionally impractical.
Very nice! I only managed to nest two browsers, the third one didn't seem to be responding - although that might be the hug of death.
Thanks! The issue is that Chrome doesn't let you load the same URL that many times. You need to change it slightly such as adding random query params like `/?a=1` to the end, then it can load more.
incredible !
Thanks!
[dead]
[dead]
[flagged]