loading...
Cover image for A web-based desktop  environment

A web-based desktop environment

shmuelhizmi profile image shmuelhizmi Updated on ・2 min read

For the last 2 weeks I have been working on a new project of mine called "web desktop environment" (temporary name) and now I finally feel like the project is in a stage where it is ready to be shared with the world so...

GitHub logo shmuelhizmi / web-desktop-environment

a web/node-based cross-platform desktop environment

Web Desktop Environment

a web/nodejs-based cross-platform desktop environment

What is a Web Desktop Environment

like any other desktop environemnt it's just a visual interface for your computer. the twist with this one is that this one visual interface runs on the web (react) with his server (node) running on your computer

Use Cases

  • interface for a cloud server (can possibly be used as a replacemnt for control panel)
  • interface for small computers like the Raspberry Pi zero
  • interface for controlling your computer over long distance

Screenshots

transparent dark theme light theme

Contribute

if you have any new feature or existing feature you wnat to create or improve fell free to open a Pull Request

Run

quick run

  1. npm i
  2. npm start

Advanced run

install packages

  1. npm i -g lerna
  2. lerna bootstrap

run flow (server)

  1. cd packages/flow
  2. npm start

run views (web server)

  1. cd packages/views
  2. npm start



❓ so what exactly is "web desktop environment"

So one big thing that sperate a typical Linux server from a regular PC is that your PC probably run something called a "desktop environment" while a server main interface would probably be a text-based command line or some sort of a Control Panel,
the reason for that is that the typical visual desktop environments will be too "heavy" and is most likely not design to run on something so performance optimizes like a server.

now the target of the "web desktop environment" software is to provides an easy to use, slim visual desktop environment that is designed to run on something like a server or any sort of small Linux machine. That way server management can become something that even less savvy people can do too, since they no longer need to deal with a command line.

🏞 a dark theme screenshot

Dark theme

🎥 demo video

👨🏾‍💻 👩🏾‍💻 So let's get into the details

"web desktop environment" is made out of two main packages a NodeJS server app - for the server and a React web app - for the client both are written in Typescript and are using Mce/Reflow to communicate between them.

🙃 I'm currently looking for a better name

the project name is currently "web desktop environment" which is a bit dry if you have any better idea for a name it will be great if you can comment it in the discussion below, thanks!!

More....

If all or just some of that sounds interesting for you fill free to check the project out in github/shmuelhizmi/web-desktop-environment.

GitHub logo shmuelhizmi / web-desktop-environment

a web/node-based cross-platform desktop environment

Web Desktop Environment

a web/nodejs-based cross-platform desktop environment

What is a Web Desktop Environment

like any other desktop environemnt it's just a visual interface for your computer. the twist with this one is that this one visual interface runs on the web (react) with his server (node) running on your computer

Use Cases

  • interface for a cloud server (can possibly be used as a replacemnt for control panel)
  • interface for small computers like the Raspberry Pi zero
  • interface for controlling your computer over long distance

Screenshots

transparent dark theme light theme

Contribute

if you have any new feature or existing feature you wnat to create or improve fell free to open a Pull Request

Run

quick run

  1. npm i
  2. npm start

Advanced run

install packages

  1. npm i -g lerna
  2. lerna bootstrap

run flow (server)

  1. cd packages/flow
  2. npm start

run views (web server)

  1. cd packages/views
  2. npm start



Posted on by:

shmuelhizmi profile

shmuelhizmi

@shmuelhizmi

A 16 years old full-stack web developer.

Discussion

markdown guide
 

Hi Shmuel,
this looks awesome. I really like the idea. It surely looks like you are gaining a lot of experience from it. Maybe add a hands-on demo (with a fake/mock server) for those interested but too lazy to set up the environment themselves. Or a demo video.

Keep it up! You're 16-years-old? Wow, wish I had been where you are now when I was your age. 👍🏽👍🏽👍🏽

PS: By the way, this reminds me a lot of Synology's DiskStation Manager, which is quite a nice web-based OS (frontend).

 

Thanks, a demo will be a great idea I will definitely consider doing so, as for a video I will start working on it!

and yes "Synology's DiskStation Manager" does look a lot similar, there are actually a few projects who tried to do something similar.

 

Great idea, I wrote about my cloud-based development environment on my blog at mikenikles.com/blog/why-i-use-a-cl...

 

I agree it's really is a good idea for most developers to start working on a cloud-based IDE especially if your a node/web developer,
I also have a little project of mine called NotNotePad which is a web-based code editor (it currently is running completely on your browser FS so not exactly a cloud-based IDE) but I sure do have plans to add support for connecting to a server filesystem + terminal in the future.

the only problem for me and the main reason I don't switch yet to a cloud-based IDE is that I still do a bit of desktop and windows 10 specific development in my job.

 

Very cool, with some of the latest web APIs to access the local file system, this makes a lot of sense. Well done developing NotNotePad!

You're right, there are some limitations to cloud-based IDEs. Also for native mobile app development it's not quite ready yet.

It's exciting to see the innovation in this space!

 

I'm curious: why would you avoid the command line at the first place?

 

great question, most people won't I'm myself would probably even prefer using the terminal in some cases. BUT having a full desktop environment also has a few pluses like an easy to use look or a one-season advantage (ssh instances can get lost very easy at least for me while a desktop environment always stays in place).

you can be sure I'm not trying to say consoles are bad and we should always ditch them for a desktop environment, it's just that people have moved passed an only terminal interface for there PCs in the '90s and as a result - PCs have become more mainstream, I'm just saying it's maybe time to also give the server a more desktop environment like interface (and maybe they can become more mainstream).
and if we can't do so using a sort of display server then maybe the web can work :)

 

That's an interesting approach. As a developer, I deal mostly with plain text, and I think it's difficult to beat the shell for that. It's easier to automate, too, and I want my servers to be as automated as possible.

I love GUIs for everything visual, like video editing, photography processing, and so on. I wouldn't use that for my servers, but, of course, everybody is different. If your prefer GUIs in your workflow, why not.

 

"Let's force and shoehorn EVERYTHING into a browser! Doesn't that idea sound amazing??"

 

Aside from the fact that the browser is an awesome runtime environment for many conceivable projects, this is a private pet project. These have values beyond the mere pratical.

I find this one a neat and worthwhile project to gain experience and hone one's skills. Nothing wrong with it, is there?

 

the browser is an awesome runtime environment for many conceivable projects

Now that's just your Stockholm syndrome talking.

this is a private pet project. These have values beyond the mere pratical.

Yea, that is true. I just find it a very odd choice. That's all. As long as you end up learning the right things from it, why not?

Now that's just your Stockholm syndrome talking.

Please, elaborate. I'm interested in your opinion here.

Yea, that is true. I just find it a very odd choice. That's all. As long as you end up learning the right things from it, why not?

The "right" in "right things" is always debatable. What are your relevance criteria?

 

"Let's crap on a young developer's hard work (with the admirable goal of making things easier for the uninitiated through technology they're already familiar with, rather than the CLEARLY superior approach of screaming 'RTFM!' at them for the gazillionth time like a crotchety, condescending curmudgeon), with nothing of actual value to add to the discussion! Doesn't that idea sound amazing??"

How does one rise to the level of lead developer, let alone CTO, with such people "skills?" Because I've always found that - at any level of dev advancement - uplifting and acknowledging the potential in (and positive contributions of) my peers (and they're always peers, regardless of the org chart), and offering constructive criticism, are critical.

Great job, @shmuelhizmi

 

This is just something someone has built for educational purposes and for themselves. Nobody is forcing it on you, right?

 

I think it is somewhat of a case of "If the only tool you have is a hammer, every problem looks like a nail".

 
 

This is awesome! Very cool to see how others are thinking of new ways to extend web technologies. I was just talking to a buddy of mine recently about how it'd be cool to be able to "hack" my desktop GUI using web technologies, but I hadn't at all considered an entire desktop environment built on web tech.

 
 
 

Keep it up Shmuel
I hope to see more cool projects like this from you ;)
Good luck
happy coding

 

Thanks and I hope you will :)

 

cool is it open source ? is so I would like to take a look.