Hacker News new | past | comments | ask | show | jobs | submit login
Kera Desktop: open-source, cross-platform, web-based desktop environment (kerahq.com)
343 points by mutlucany on June 9, 2023 | hide | past | favorite | 110 comments



This is a wonderful project! I've been thinking a lot about making such a unified desktop stack for a while now; web technology has matured to the point where I think it's feasible to build a complete environment a la Smalltalk/Symbolics but with a modern feature set.

Obviously this has deficiencies but like it or not the web _is_ computing for the vast majority of people and exploring/pushing its limits of user experience is something few at all seem interested in.

Projects like Arc[1] and suckless[2] approach browsers in novel (albeit divergent) ways, but as a whole it seems to be a very unexplored problem space.

The idea of an Engelbart[3] style system built for the modern hypermedia-capable platform is an intoxicating one that desperately needs more attention.

[1]: https://thebrowser.company/

[2]: https://surf.suckless.org/ with https://tools.suckless.org/tabbed/ and https://tools.suckless.org/dmenu/

[3]: https://archive.org/details/motherofalldemos_reel1


Intoxicating indeed. I'm partly hoping that the efforts of WASM/WASI will weaken the stiffing grip Android and iOS have had on the experience most people have with their personal computers. The fruits of UX designers at Apple and Google are phenomenal, don't get me wrong, but I'm convinced the App Store business model has led them to stifle any kind of innovation that doesn't originate from within their house.

I'm thinking, a mobile first, cross platform desktop environment that's built to run apps built upon the WASM component model. Just a runtime even. I guess it'll be replacing a big part of the OS's job but on the other hand, it'll have first class support for web/instant apps. Yes, email me if you're working on anything like this.


Yeah, despite all its shortcomings Flash had one thing and that was opening up the web to a rich UX. Today, despite all the progress in JS, CSS and browser support for page manipulation, we’re nowhere near what used to be possible with Flash


Where can I learn more about this?


> I've been thinking a lot about making such a unified desktop stack for a while now; web technology has matured to the point where I think it's feasible to build a complete environment a la Smalltalk/Symbolics but with a modern feature set.

Kind of a Chrome OS but not so tied with the Google ecosystem?


No. Chrome is just an app. One that happens to host the most amazing living/alive medium mankind has created.

The page is all you need. A web site can be a canvas where everything can come together. And it can pull in other sites and capabilities.

We do need some new APIs for the web platform to flourish fully. Some small local host services might fill in. Or yes we could indeed enhance the browser. But the idea is that it's the page not the browser creating the experience. The page is the hypermedium.


Honestly, web platform is an ugly example of bad engineering, lot of legacy, weird choices, lots of privacy leaks, dangerous crossdomain requests enabled by default, etc. Instead of adding new APIs it would be better to freeze it and design a better platform.


I welcome the competition but literally no one is even starting to try. HTML is a million times more real as a good open standard for computing than anything else.

I don't even disagree per se, i just think the grumbling is mostly irrelevant to how incredibly potent excellent & interconnected what we have is. And I think the grissly grim outlooks all ignore the incredible vectors of progress that have been lifting lifting lifting things so much higher for so long & show no signs of abating.

Letting the perfectionist neediness get in the way of seeing how amazing & competent & remarkable an ecosystem is is unfortunate.


It's actually not hard to carve out a subset of HTML you want, define a protocol you want to use over the existing implementation [0], then go back and implement that without the web at some later date if it's popular. If it isn't popular, well, it runs on the web. But doing things this way would indicate that you know what you want to get out of the redesign, which in a lot of cases, I don't think programmers do. They just know that the way it is isn't how they want it, or the thing they want to address is that the browser isn't quite the entire OS yet and it would be nice if it were just a little bit bigger.

[0] https://prog21.dadgum.com/66.html


This is exactly how Flutter started actually, they started with a subset of HTML initially.


It’s almost like the way people talk about C++. Modern C++ has many of the features and ergonomics that people evangelize Rust for in a more mature format, but the majority of C++ code people encounter isn’t modern.


Sure there's competition, lots of WASM based alternatives are starting to crop up, like Bazel, Rust's GUI frameworks, Flutter, etc. I welcome those for applications more than what we have with HTML, CSS and JS now.


Replacements to HTML for GUIs tend to have terrible accessibility. I'm sure that will eventually be solved, but pure HTML solutions work right out of the box. They also do better at adapting to different display sizes.

I don't need a screen reader, but I do use Vimium, and I always hate finding an app that I can't navigate with the keyboard (usually because of abuse of JavaScript, but sometimes because they're just rendering a canvas). I don't look forward to that continuing.


How is accessibility done for mobile apps? I assume it's the same way it'd be done for WASM, it's not done simply because WASM GUI apps aren't widely used but once they are, accessibility will be developed, just as it was for HTML.


None of these are competing with what html is, but which is an open standard for rendering stuff.

Oh sure there are hundreds of modern new graphics libraries. Not a one of them is trying to be a language independent medium. None of these could ever be regarded as an internet protocol.


Not sure what you mean, WASM is a language independent medium. HTML is not an internet protocol, that would be something like HTTP, TCP or UDP. Even with HTTP, you can send any data you want, not just hypertext, which is how WASM is sent over the wire.


> It is easy to get distracted when you do many different things on the same device. Think of rooms as profiles but for the same person. You can have different rooms based on what you do and arrange them with things for only that purpose. Maybe change the wallpaper to something related to set the mood.

This is something I've been looking for in other DEs, but never found.


KDE has "activities"


To date, no one has successfully explained to me what is the benefit of activities over multiple virtual desktops. Would you give it a try?


Activities will get you things like:

- different task bar layouts for different activities

- different desktop widget layouts for different activities

- you can associate files with activities and Dolphin has a `currentactivity://` scheme (tho I do wish this could be extended to apps. As of now if you only want an app to be in a certain activity you've got some window rules to setup)

They live in an awkward place, since virtual desktops are a Linux WM thing while activities are just a KDE plasma thing.


I am not sure what is interesting in having different task layout but feel free to educate me.

As for widgets, I am still struggling to see the point of widgets (regardless of platform, it is the same for mobiles). Usually if I am in front of my computer screen, I will hace apps opened that will hide any kind if widgets. Or is it for people using 8k 120cm diagonals screens?


Not sure what's hard to imagine about different sets of icons in your taskbar. Quick example, your personal taskbar might have:

- Steam

- Youtube

- Plex

While for work you might have:

- A terminal

- Work chat

- Work ticketing system

- Your editor

I'll just link to a page about Activities since I'm just rehashing them: https://docs.kde.org/stable5/en/plasma-desktop/plasma-deskto...


This is a step in the right direction, if someone could come up with a simple enough but extensible enough de-facto standard for multiple “profile”, our lives would be immensely enriched.


KDE already had per-virtual-desktop backgrounds before that feature was removed in favor of activities. There is no reason different widgets (both desktop and panel) couldn't have been added to virtual desktops instead.


Others in the thread have already provided explanations of the features, but I would like to highlight how I personally utilize KDE Activities as a use case. I rely on it to create dedicated spaces for different projects or clients, complete with their own distinct virtual desktops and settings. This functionality has been invaluable to me, particularly when sharing screens with individuals involved in specific projects. This separation of tasks and switching between them is pretty seamless.


You can use both at the same time. Each activity gets its own set of virtual desktops. I use activities to switch between low-distraction and high-distraction modes; combined with a 2x2 grid of virtual desktops, I have certain important things on the north-east virtual desktop on all activities, but other things will be only in one or the other activity.


Activities are virtual desktops with per desktop widgets and desktop settings.

You either use them instead of standard virtual desktops or if you need sets of sets of applications in addition to eg both work and home activities have desktops 1..n with different windows.


Here is one example:

I use virtual desktops to separate apps when developing (1 for terminal, 2 for the app, 3 for docs, 4 for the IDE, 5 for additional tools). I switch between them every few seconds sometimes, so the exact numbering is important.

With KDE activities, it's nice to be able to have two fully separate projects (different customers or contexts) open at the same time, while keeping their respective virtual desktop arrangements.


I am also interested in this. I've also never been able to fully grok what 'Activities' are, though I've never gone all in on learning them.


I was just thinking the other day I’d also really like that for my terminal history, especially since I’ve often worked at “bring your own device” sized companies.


You might be interested in https://github.com/ellie/atuin

> Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands.


This is why I read HN comments. Some hidden gem always surfaces. Never seen this mentioned on any CLI awesome lists.


Atuin is outstanding. I've barely scratched the surface of its features, but it's already made a significant impact on my command line usage.


There's also McFly which is similar. I have yet to try Atuin so I can't say which is better.


I've been doing that for a decade+ now and it's marvelous.

I key everything off a shell variable called SESSION, and have a few scripts to set that before spinning up a screen/tmux instance if I don't already have one running for the context in question.

There's a somewhat dated snapshot of some of my config files (relevant and otherwise) at https://github.com/dlthomas/config-files


Seconded. I’d love this in MacOS. A child comment here was talking about different docks and menus and such. This would be great for work vs home.


How is this different from virtual desktops?


What is a virtual desktop?


It sometimes goes by different names, such as 'workspace' or 'screen'; but these days I think every major desktop OS has these.

It's just the name for "where the windows go".

So you might have your terminal full screen on one virtual desktop, and your browser on another virtual desktop, and use shortcuts to navigate from one to the other.


Virtual desktop is nerdspeak.

Room is normspeak.


All those faux real world analogies is what keeps normies afraid of computers.


Fvwm and Ctwm did that for ages.


I built something similar to this 16 years ago based on Firefox: http://web.archive.org/web/20080905102046/http://www.pyrodes...


Woah, this is pretty cool. The page is also the only occurrence I've seen of the term 'Web 3.0' on something this old (abeit meaning something slightly different).


Here [1] is the link to FAQ, which answer 95% of my questions. Highlight below. ( I was thinking if it was a DE based on WebGPU and Canvas )

>What is Kera Desktop based on?

Mostly web technologies. Kera Desktop is written in vanilla javascript and does not rely on third-party frameworks but uses some independent libraries.

>Why is it based on web technologies?

Easy to support different OS. Everyone's OS of choice might be different. Sometimes it can't be a choice because you're forced to use an app that isn't available on the platform you like. Moreover, you might be using several devices with different OS. Thanks to Kera Desktop being cross-platform and its sync function, you will always have the same interface with your stuff regardless of OS.

Better integration with web apps. More and more things are already being done on the web. But things are stuck on a browser window. Kera Desktop brings more integration to the web apps with the desktop. When both worlds speak the same language, it will be easier for developers to work. Web apps can draw their windows on Kera Desktop. This alone literally removes a significant border between desktop and web app.

[1] https://gitlab.com/kerahq/Kera-Desktop#frequenty-asked-quest...


I'm intrigued by the idea of using web browsers to experiment with new computer interfaces. Because everything we do with a computer can be done decently well inside a browser (e.g. see ChromeOS), any prototype can quickly be used day-to-day for all computer activities, which means I'm more likely to test thoroughly. Another big advantage is it's very easy to make a raw electron app that will work on any operating system and just start experimenting with UI features. It wouldn't be super fast or resource efficient, but you could do a lot with it.

My pet idea for a new interface would be to turn away from apps and windows and have everything display to the user as a file. A browser tab would show up as a .url in the filesystem and you could interact with it as a usual web page inside the file interface. It would be a strongly spatial interface, i.e. the given tab would always live in the same spot in the folder alongside .txt, .pdf, etc. There are some apps out there that try to keep the spatial layout of windows (e.g. https://funk-isoft.com/display-maid.html) but it seems to me that just forcing the file and window interfaces to be the same thing would do this better.

Have I implemented it the above idea? Nope. A decent prototype would probably only take a week, but the thought of maintaining such an important part of my computer as the first and maybe only user seems pretty daunting. So kudos to the Kera dev for getting to work and getting it out there into the world!


A Web-based desktop pretty much sums up why technology today is terrible. I assume they have a browser that runs in the browser, and that they'll add browser APIs to make it easier to do browser-in-browser. Maybe then implement a minimal desktop environment in the browser-in-browser browser, and then add another API...


Well if you don't like it you can make your own project and fix technology today if that's your thing.


A GTK-based desktop pretty much sums up why technology today is terrible. I assume they have GTK applications that run in the DE, and that they have GTK APIs to make it easier. Maybe then implement a minimal desktop in the GTK app, and then add another api...

But in more serious terms: Web-tech while not being made for applications has gotten pretty good at it (why do you think so many new things are just webapps nowadays or atleast under the surface with something like Electron or React Native). It's just another abstraction on top of an abstraction on top of an abstraction... There's nothing inherently terrible about it.


What does "web-based" mean? Does it run in a browser? As a standalone application? Is it because it is written in Javascript?... Genuinely curious.


Wasn't very clear to me either. It looks like this is based on Linux but the entire desktop environment runs on html/css/js, i.e., a web browser runs the show.

While the idea of a desktop written in a RAD/high-level language seems enticing to me, I'd be curious to see some benchmarks on memory use and general latency first. It does seem more fun to program against than GTK or KDE...


> Grid-styled menus and icon-focused, color-coded items are easy to find and remember.

Reminds me a little of radial menus (https://en.wikipedia.org/wiki/Pie_menu). They don't handle dynamic context menu contents well but they're amazingly efficient.

> Interacting is even faster since Kera Desktop features “press and hold, move and release” gestured menus. Saved you a click!

Note that you can also use right-click menus this way on macOS and GNOME. That is, you mouse down, drag your cursor to the item, and mouse up to select it. The only downside is that if you regularly use Windows it's annoying to unlearn this behavior.


Yeah I really wanna do radial menus sometime. The video game Sacrifice had nested radials where you could also basically gesture, just go left then up for example. Very explorable & high radix.


Also on XFCE, presumably because it is based on GTK like GNOME, all 3 menu selection methods (right-click, hold down, move, release; right-click and release, move, left-click; right-click and release, move, right-click) work identically.

It is good to have all methods, because the first is best for simple menus while the others are more convenient for complex menus with many hierarchy levels and long lists of menu options.


> Note that this is how right-click menus operate on macOS

Huh? That's not how mine work. Is there a setting for this that I forgot about?

Mine are right-mouse-click (external mouse or trackpad), cursor to item, and then right or left click to select. You can keep your right button clicked, but it's not necessary.


It's not necessary, but you can right-click, hold, move, release instead of right-click, release, move, left-click.


Odd, it does work that way for me! If I move the cursor over a file in Finder, hold right click, move to the context menu option I want, and release the right mouse button, it triggers the action.

In windows the release doesn’t do anything, the right click action just toggles the menu open/not open, so you left click the context menu option after it opens.


Macs have worked like that since forever. Now you can do it both ways. Did you try?


> Note that you can also use right-click menus this way on macOS

also top-screen menu


Just like having a headphone jack is a feature now. Still, combining it with a grid style menu makes it even more efficient.


I think these types of projects are super cool, and being someone who was BORN IN THE 1980s, I really like the Desktop Analogy. Is there somewhere that I can look at several of these web-based desktop environments at the same time? Is there a good list of open-source web-based desktops that anyone knows of?


As a matter of fact there is [1] I'm personally curating it and check up on the links weekly.

[1] https://github.com/syxanash/awesome-web-desktops


Delightful. Thank you!


Is there a way to use menus other than "press and hold, move and release"? "click and drag" is consistently one of the harder things for people to accomplish correctly.


Would be awesome if the menu can be bound to numpad. Press center key to pop-up, then whatever key around that to select and activate.


The design is very neatly done especially when the docks disappear and you place an app into full screen mode. I really like the concept overall, this looks like a cool side project!


> desktop environment

not really. you literally cannot create a file. if I want to create a text file, its not possible. and no, I dont mean a Google Doc or some crap.


I may not be understanding the concept either, but it does seem like the antithesis of a desktop to me. Half the stuff in that application menu is corporate spyware and SaaSS. Does that mean the desktop can mostly just interact with online services?


What is the point of these projects? I really don't get it.

It's a portable DE people can download on whatever computer they're on to have consistency?

But then, how often are people away from their preferred computers, and when they use other computers would they let them just install/run random software?


There is no point, the only use case is what you’ve mentioned. The problem is this can’t run programs people actually use, so it’s just a pretty, useless user shell.

It would make more sense to use some sort of in browser rdp, vnc, etc. Then you can run a real opereting system.


I once bought a 32 core ThreadRipper and tried to get along with using a cheap £200 Windows 10 laptop to remote into the threadripper while in coffee shops and use the ThreadRipper to do my work.

The £200 Windows 10 laptop wasn't powerful enough, it was too laggy. Even on Wifi.

I love the idea of the X11 protocol. And I still love the idea of a web desktop. Something that is supremely well integrated and allows me to move workloads between client and server seamlessly. This idea I really like. The ability to outsource computation and storage seamlessly. A process can be moved between machines seamlessly.

This could be modelled in Javascript and promises that can be sent around. Microservices in the desktop environment.

I looked at tools that would bring up tmux sessions with everything preloaded. (https://github.com/tmuxinator/tmuxinator)

ScrapScript has very good ideas in this area of distributing dependencies and storage. (https://scrapscript.org/) There is also val town.

I never use KDE Plasma widgets or the sidebar widgets that Mac provided.

There is so many exciting ideas that could be tried out but I worry they're all too big ideas to be implemented.


There's Greenfield, a web based Wayland compositor. It has a shim on your machines that uses webrtc or websockets to stream Wayland to the browser. Awesome fricking project. Been around for a while & author @zubnix keeps slowly honing it. https://github.com/udevbe/greenfield https://news.ycombinator.com/item?id=29239781

It so has a local wasm mode, so you can build Wayland apps that live & run on the web. Examples in webgl & wgpu. Sick.


I have been using a remote workflow for more than three years.

I don't use remote desktop. I just SSH into the machine and use tmux sessions for terminal stuff and the vscode remote package for editing. To help the workflow I have some nice aliases for easily opening projects, forwarding ports, sleeping/waking the server etc.

I'm aware that this workflow cannot work for everyone - for instance it won't work for developing desktop apps, but for web and app development it's really nice to have a powerful machine doing all the hard work.

I think many would be surprised by how much faster desktop hardware is. Especially when you put price into the equation.


A decade ago I was complaining about only having so many GB of memory on my machine while developing our Java terror tech stack.

An ops type person overheard & mentioned we had some mostly unused beefy as heck remote desktop machines running NoMachine, which was a nice slick fast proxying X vdi thing I already loved. I was so happy.

It really let me work anywhere. At crazy speeds. Loved it.

These days I definitely am almost all ssh based. Back then though I basically needed Eclipse(+eclim).


X11 and VNC are still too inefficient for today's internet cafes. Take a look at: https://kasmweb.com/kasmvnc


Interesting. Linux desktop really suffers from not having something slick as RDP on Windows. VNC isn't performant enough, I've found the open source RDP servers to be buggy and reattaching to a session sometimes doesn't work and can cause crashes (at least on my Fedora install). VNC can do the same sometimes attaching to an existing session.

At the moment I use Windows as a jump box to do remote sessions to my Linux development VM, which is on the same local network.

Something that works well over a decent internet connection and can reliably re-connect to an existing session would be great.


I use NoMachine for Linux to Linux remote desktop, which feels almost as good as RDP for Windows on LAN and workable, but not quite as slick as RDP over lower bandwidth internet.

I've tried VNC, x2go, xpra, and NoMachine has been the best experience. NoMachine also has a free Windows client-only installation hidden somewhere on their website.


ThinLinc has always worked pretty well.


I've tested the bulit-in VNC between two MacBooks, and it was an extremely high quality image, extremely fast and extremely responsive. To me the performance was completely unexpected. In what uses is VNC lacking?


>The £200 Windows 10 laptop wasn't powerful enough, it was too laggy. Even on Wifi.

Any x86 computer in that price range is going to be hot garbage. You get what you pay for, and wifi has nothing to do with it.


I agree with you that a *NEW* machine at that price point running Windows will not be a great experience...but, I've purchased older, refurbished machines at that price point, and then loaded a lightweight linux distro and a lightweight desktop environment, and it works wonderfully! Of course, that's not for everyone i suppose.


> Kera Desktop is written in vanilla javascript

Personally, I'd be wary of writing anything with a handful of functions in vanilla JS. Having done that multiple times (small projects, nevertheless), I remind myself to reach for Typescript these days.


This was fun. Really enjoyed the attention to connected home devices, that is really handy to have around as feature.

Other things: Too much reliance on google-products. Around here (Europe) there are concerns about privacy and Google is avoided often. Search engines, please consider adding Qwant.

My default browser is Brave, which is based on Chromium. Kind of too bad that Kera is not reusing the browser instances used by default on disk (when compatible) because they already my login details ready over there. It would help for easier transitions.


Kera Desktop presents an new look and feel to your desktop workflow regardless of what OS you're using.


Looks cool though I think most regular users will be confused by the double panels.

I wonder what makes it web based? I thought it would run in the browser but apparently not.


I'm trying to understand this, is it kind of like an open source Chrome OS? It seems to give you that Chromebook like experience on your own machine.


i missed this at first glance: the download page does have a "chrome app" option at the bottom

https://desktop.kerahq.com/download/

https://gitlab.com/kerahq/releases/-/raw/main/Kera%20Desktop...

edit: looks like this can't run on a Mac


"Old" Chrome Apps were disabled, it doesn't run on any new versions of Chrome.


Until the latest update, it was possible to run it anyway. Very bad timing.


It worked for me, I unzipped the crx and dragged into chromium on latest macos


Cool project I've been looking for something like this. This is built on chromium, I wonder if it would be faster if it was built on servo...


Congratulation on your launch. I haven't tried it out yet but it seems polished and huge respect for working for so long on a project!


This is really cool. One day I’d like to see a JS based window manager running as the main window manager on a local machine. I’m not entirely sure how that would work. Imagine using a JS window manager instead of Windows explorer or MacOS’ finder or even replace KDE or Gnome.


Pyrodesktop & webOS are historic & contemporary examples, I albeit webOS isn't really a conventional window manager. https://news.ycombinator.com/item?id=39541

I also cited Greenfield which is a web based Wayland window manager. Apps show up & run as normal in the browser. https://news.ycombinator.com/item?id=29239781


GNOME3 is already using GNOME Shell, which in return uses gjs and a CSS tree for all its components and layouts?

I mean, the GTK layout tree is obviously different than a pure CSS layout tree, but it's been there for already 14+ years...and everyone was complaining about it.

You can literally use animations and transitions from the CSS/SVG specification.

You also can use "Looking Glass" which is their integrated debugger for layouts.


I've been using obsidian for note taking recently and found myself writing all kinds of extended UI functionality just because I could do so easily with web technologies. Writing a bit of JS and CSS to make my primary operating system interface with exactly how I like would be pretty handy. Did the same thing with Firefox when I realized I could just write some css to make the UI more compact.


>icon-focused, color-coded items

Sounds like an accessibility and discoverability problem. Icons can be eventually learned, but only for frequently used items and only if user discovers the function. Colors… good UI does not require accessibility settings, it just works for any user.


What does cross platform mean in this context? It appears to be Linux only to me.


The download page shows options for Windows, macOS, and Linux. Edit: and for Chrome (as a plug-in? I couldn’t tell).

It looks like there is a separate download for an OS that is based on Linux. Is that what you saw?


I only looked at the main page and FAQ and only saw references to Linux. I'll have to dig into this later. Very curious how it works on Windows.


I _love_ how it looks. It's pretty much what I want from a desktop: a simple window manager with a drawer on the right.

Now, if only it supported managing native windows...


I wonder if we could implement renderers of the X Window System core protocol or Wayland protocol in the browser. Is there any particular reason not to?


HTML5 Wayland compositor: https://github.com/udevbe/greenfield

From a comment in this thread: https://news.ycombinator.com/item?id=36263861


Because it is stupid?


Does it have a terminal app? For some reason I couldn't find it even though I'm certain it would have this.


So many links in that nice little nav bar, except GitHub. Who is your audience if not devs? Where’s the docs? I bounced on the site on mobile. Maybe it’s better on the desktop version. Could the devs of this please add a big “docs” button, code examples, GitHub link etc?


(Not affiliated with this project) Just to address the GitHub comment: there's a link to the source on GitLab (fox icon).


Not sure what is the main use case but it does look great.


Well done! Thanks for sharing!


What problem does software this solve?




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

Search: