Manjaro Webdad

@codesardine
Would you be continuing your spin?
Regards! :slight_smile:

It is being worked on, I don't know when I will have a release ready.

Would you at least put out a alpha/beta distro?

https://archived.forum.manjaro.org/t/just-another-desktop-environment

^ that page doesn't exist or is private.

I'm curious! I would like to learn: do you mind explaining how webdad/jade interfaces with X11 or Wayland? F.e., at a high level, how do you get the pixels of X11 apps into the web environment, and how does it interact with X11/Wayland?

In the meantime, I'll see if I can learn from the source. :slight_smile:

Ok, I think I am starting to see something in the distance! I see it imports a wnck lib for python, bindings to libwnck. It looks like that is part of Gnome, for managing windows. Is that an abstraction on top of X11/Xorg?

Wnck is a GTK library to manipulate windows on the screen, only works on xorg, most common used for screen tiling, you can also use the Lib using JavaScript GJS bindings instead of python.

What I didn't see was how the window content (pixels) gets into the web context. I probably overlooked it. What line should I look at for that?

You mentioned somewhere else

usually window manager implements key bindings, mouse, window movement the toolkit takes care of that.

If I understand correctly, the web renderer (qtwebengine) a single "window" as far as Xorg goes, and then we would like to render other windows within the web renderer right?

I was thinking that, for example, the pixels for other windows would be sent into the web context and then, for example, rendered with a <canvas>. In this case, the JS context would need to map web-based key/mouse events to Xorg.

But because you mentioned that the window manager handles the keyboard stuff, this makes me imagine that if webdad's web renderer isn't handling that stuff (and thus webdad does not need to forward events to Xorg somehow), that webdad is actually rendering the Xorg windows (without decorations) on top of the web renderer window, and the CSS/HTML/DOM window decorations are actually below in the web renderer (but the user can't tell, there's no Z depth, it's all flat).

Is that what it is doing?

The DE only renders one window, The window manager renders all windows, I think i know what you trying to do, is not a DE concept but a WM concept were you render windows inside a WebGL context, I am not sure if that is possible as I never explored, but that is realy low level and you would need to use direct X11 or wayland API's.

I suppose I don't know the naming concepts well, but to me the concept of "DE" or "desktop environment" is intuitively everything that I see once I log into, for example, Gnome: windows, background, overview, app icons, etc. I have no idea how the "one window" fits into the picture of Gnome though. Maybe "desktop environment" actually means something else than what the phrasing seems to suggest if I go by intuition. I may also be wrong, but I imagine the "window manager" inside the Gnome "desktop environment" to be that provided by Gnome Shell which arranges my windows within the space and which I imagine as a subset of "desktop environment". Maybe this is actually wrong, but coming from a top-down direction as an end user, that's what I would intuitively assume from the wording.

WM concept were you render windows inside a WebGL context, I am not sure if that is possible as I never explored, but that is realy low level and you would need to use direct X11 or wayland API's.

Yeah, that's what I was initially thinking about. If webdad/jade doesn't do it that way, how does it do it? Or maybe I misunderstand: does Jade only provide the background desktop (the "DE"?)? If so, then what are the windows managed with?

BTW, what's the difference between WebDad and Jade? Or is Jade the new name for the same thing?

After watching more videos, I notice the windows have the same (or similar?) window decorations as I see when I am in Manjaro's default Gnome desktop. I think this hints that the underlying desktop (the web context) is, like you say, a single window behind all windows, and that the windows are managed with a native window manager (Mutter I am guessing)?

I think I understand what you mean by "DE window behind all windows", if my assumption is correct.

But yeah, I think you got what my goal is, which is slightly different: I would like to try to get the window pixels into the web context, and make my own "window manager" within the web context (f.e. with WebGL or 2d canvas context, or with a bitmap canvas per window and positioning them with CSS, or a new native builtin element, or something).

I only provide a UI on top of the window manager, that can be whatever you want.

I use Gala in current version, previous versions it was Mutter and 2018 version it was Kwin, 2017 it was JWM, I think you should start exploring first what toolkits support the language bindings you want to use, then start exploring what you can do you them, maybe also have a look at Gala codebase as it is rather small compared with other window managers, it is writing in Vala and you will be able to see at how it is done using libmutter.

You should also look at Dbus, it is the default way Linux applications talk with each other, and provide services to each other, same way as we have rest API for the web.

A DE is a conjunction of applications, Desktop UI, File Manager, Window Manager, Notifications Server etc, they are always independent of each other and can be hot swapped by different ones.

Cool. What I'm imagining is the desktop UI and window manager would be one. I'm imagining the desktop ui and the windows being all in the same web context, in case I want to animate my desktop icons and windows within the same 3D space, or something. It could be in some ways similar to what Compiz can do, except more granular with anything that's on the desktop including icons or desktop files being in the same transform space, not just windows (whereas in Compiz icons are things inside a window, and desktop files are in another window, etc).

But yeah, I agree, I need to learn how to bind from a web context to X11 first, and figure out how to get pixels from Xorg windows. I'm thinking to make bindings in Node.js.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by