On Wayland, each window is a composer, each component that makes up a screen is a compositor. Don't mid them up. Simply put each window manages their own process tree as its much cleaner. Its very simple. What you need to do is simply install dbus-systemd and issue SummonPoettering which will give you a clean docker workspace. Simply put this is far superior to X11. In short on Wayland, you only need to push one button to kill an errant window - the power button
Because it was built in a different time. Back in the 80s and early 90s, X11 provided a way for institutions and companies to mix-and-match their hardware and software environments, each with different capabilities. They would have big iron running expensive software and cheap(er) terminals that could display those applications across a campus.
In a university environment, before there was a PC and network in every dorm room, before laptops were a thing, this was awesome. You could walk up to any workstation or X11 terminal on campus, and immediately have access to all of your applications, files, and everything else. And when PCs and networking came to the dorms, you could get an X server for your PC and do the same.
But those days are long past; the networking use case, which was one of the most important aspects of X11, is pretty much no longer relevant. It's really surprising that Wayland still hasn't completely taken over, and they still haven't figured out how to handle certain interprocess communication that would allow screen sharing and other common desktop functionality.
I’m still predicting that Wayland will become an implementation detail of web browsers and some games. It doesn’t make sense for every app to render pixels in software and stream them from a datacenter, not for every desktop to have its own copy of every app.
While true, it wasn't the only protocol for doing that, just the one that won mostly due to OSF/Motif politics, when GNU/Linux came to be that was already pretty much settled.
I felt my comment was so dripping with sarcasm nobody would miss it. SummonPoettering??? Yet like a moth to a flame you missed the point and jumped right into the reasons x11 sucks
In the future, someone will (re)invent wayland-compose.yaml and announce that as the second-best thing after sliced bread. Imagine that technology - each window is a separate container! Our ancestors would be so proud. Then, you start your browser via "wayland-compose up" and that will load 50 additional containers via dbus-systemd, because "that is the only proper way" to run your application.
Under Wayland with Gnome (it's gnome-specific), I recently learned you can kill windows by using Looking Glass:
// 1. Open looking glass: Alt+F2 > lg
// 2. Use picker to pick window (button on the top left corner).
// 3. Now an object r(0) of type MetaSurfaceActor is available in the
// gjs console (or some other number if you've already used it).
// To get pid:
r(0).get_parent().get_parent().get_meta_window().get_pid()
// To kill window and process:
r(0).get_parent().get_parent().get_meta_window().kill()
Some weeks ago I searched for a more general solution that doesn't depend on the compositor and doesn't need root (i.e. an xkill replacement), but I didn't find one.
As a frequent user of xkill I was surprised by that too, but I remember reading somewhere that making a terminal application kill another application's window is not allowed by design. Reusing a sibling commenter's analogy, it's kind of like some javascript functions in the browser can only be triggered by user actions for security reasons.
The compositor, however, is allowed to kill the windows it's showing. So if you want to kill a window, you can ask the compositor to do it for you. Gnome, KDE [0], sway [1], etc.. each expose this functionality in a way that differ between each other.
And eventually KDE, Gnome, and so forth will develop a shared layer on top of Wayland to handle such core functions can call them Wprops, they'll all implement the same _NET_WAYLAND_HINTS and a new group freewayland.org will come together to standardize it. Then waykill will work globally
But of course by then (late 2030s) we as an industry will appreciate that Wayland has deep unfixable flaws and nobody is willing to maintain it and everyone should switch to ... V-something... let's say "Vineyard", the new graphical system that everyone agrees we should switch to ASAP because this time we got it right;)
In the 2030s everyone will finally acknowledge the sheer elegance of Arcan ( www.arcan-fe.com ) and admit out loud that Wayland's "just use a GUI toolkit!" was cope for Wayland being a reflexively underspecified protocol, an unfortunate result of its devs suffering from X11-PTSD.
Vineyard I can actually see, after Martha's Vineyard -- following the Red Hat trend of naming system components after Massachusetts towns (Wayland, Weston, Dracut, Plymouth...).
Wayland doesn't have the kind of abstraction that would allow that, partly since it would make it very hard to guarantee perfect frame rendering.
A lot of what X11 does is instead handled by Wayland "compositors", they deal with almost all such policy logic. This is largely the same situation as on Windows or macOS, which Linux desktops are finally starting to catch up to.
I can't tell what level of parody we're at; if we're currently being serious, why would xkill or equivalent make rendering any harder than a normal close event?
It would require that Wayland be aware of internals of the "compositor". Instead of that, Wayland is only aware of surfaces, which it can guarantee can be stitched together within a certain time budget. Hence none of the tearing that is unavoidable with X11.
A window close event goes to the "compositor" of a surface, without being aware of which PID may have caused what is currently rendered on that surface.
Windows and macOS do the same, if only because they have a single "compositor"/window manager.
Windows know their own contents, but Wayland doesn't. "Compositors" do know which PID has which window, though. Hence why there are "compositor"-specific alternatives to xkill.
Simply jump into a Javascript runtime and run some functions from your runner! BTW your entire desktop is just an electron app rendering Wayland in WebGL.
Not if running on Ubuntu! They've replaced Docker with Snap, so you will have to dbus into ~/snap and patch the hook into the package. Of course, this will not work with the inferior Flatpak apps (which you shouldn't be using anyway as they are buggy and not as cool as snaps).
The fact 5 commenters did not understand it shows how willingly people will put up with the limitations of their software and diss the software they don't like.
Surely the summoning of Leinart Poettering's spirit to find dead Pids in Waylands Hades was a dead giveaway
Well a definitive press of the power button seems the good way of killing a window, as such notion simply shouldn't exist. One could also argue that those who complains in sarcasm about such unnecessary longings should do the same.
On Wayland, each window is a composer, each component that makes up a screen is a compositor. Don't mid them up. Simply put each window manages their own process tree as its much cleaner. Its very simple. What you need to do is simply install dbus-systemd and issue SummonPoettering which will give you a clean docker workspace. Simply put this is far superior to X11. In short on Wayland, you only need to push one button to kill an errant window - the power button