-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
making custom clients, XEmbed-like functionality #54
Comments
I really agree with you about the need for this, but I don't think this project is a good place to do it, the majority of what this project does is dealing with networking and resources, a local embedded compositor only have to deal with very minor position transformations and state management and there's really no reason to have a custom protocol in the middle. There's actually a newer gtk 4 wayland compositor there has been made since, Casilda (announcement). I really feel like we're missing a simple to use library that plugs into the wayland event loop directly, turning toplevels to subsurfaces, and handles all the proxying and translations needed for you. |
@bbb651 ooh thanks for the links. I'll have to play with Casilda, that's nice casilda-compositor.c is only ~1800 lines and wlroots. Cool that cosmic-panel is a compositor too, though maybe more abstract implementation to try and figure out. I've also thought maybe a compositor like wayfire could be used as an application framework, where like any gui framework you can create new windows (virtual outputs presented as windows with wayland backend), and write wayfire plugins/scripting for IPC/window rules to control the inner-compositor application/widget layouts, but I haven't tried exploring. I mean maybe same could be done with kwin or others. But multiple virtual outputs on a wayland backend isn't a common or documented thing. |
a few more found in phoronix thread on casilda: libwlembed, QtWaylandCompositor (examples) |
I wonder if the plumbing here would be useful for ideas like the following.
Implementing a wayland version of https://tools.suckless.org/tabbed/ where instead of wprsc creating new windows for each remote window, it has a single window with tabs, and any new window opened ends up in a new tab.
And there could be a component that is similar to xwayland-xdg-shell that skips the serialization/deserialization for local use, so you are running a compositor as a sort of app framework.
Building on the "tabbed" idea, if the abstraction is easy to work with, this could be a mini UI framework for gluing together different applications. E.g. make custom layouts, run program A and B stacked side to side or on top of each other. Or directly on top of each other (you could add your own custom controls to existing applications that will draw over their UI, or do things like zoom in or crop the remote application, or embed them in a custom application).
Prior art with wakefield that embeds a wayland compositor in gtk,
https://github.com/magcius/wakefield
https://github.com/alexlarsson/wakefield
https://github.com/3v1n0/wakefield
The last one is the most recently updated, but it's still limited. E.g. it can't run firefox.
More ideas:
There's also a protocol xdg-foreign which could be another approach, but I'm not sure if anyone has used it like this.
The text was updated successfully, but these errors were encountered: