New task manager

Duncan 1i5t5.duncan at
Thu Oct 28 03:50:36 BST 2021

René J.V. Bertin posted on Wed, 27 Oct 2021 14:34:18 +0200 as excerpted:

> On Wednesday October 27 2021 12:19:47 Duncan wrote:
>> > (because wayland has no concept of primary screen
> Well that s*cks (I suppose)!

For most apps/windows in practice it's generally not /too/ bad because 
kwin as compositor normally arranges the windows in line with whatever 
window placement policy you've set, and as compositor it knows what 
display your pointer is on so if you've ticked the active screen follows 
mouse and separate active screen checkboxes in the window behavior kcm 
(kwinoptions) it places windows as one might expect.

Between that and the kwin window rules kcm (kwinrules) for overriding 
generally set behavior for specific windows (a feature of which I've 
/always/ been a rather heavy user, 50+ rule-sets setup, IIRC), most 
things work quite well.

The problem with krunner is that kwin makes plasma shell windows (like 
the plasmoid picker and popup/config dialogs, panels, etc) exceptions to 
its normal handling and considers krunner a shell window.  Unlike most 
other wayland-native windows plasma shell windows are basically unmanaged 
by kwin -- plasmashell obviously knows screen sizes (not sure about 
screen positions) and gets to place windows as it sees fit, while unlike 
on X, for security reasons normal wayland-native windows know their size 
but *not* on-screen position or the existence of other windows beyond 
those of the same app.  Only the compositor (and anything it specifically 
passes the info to as an exception -- the compositor decides!), kwin in 
this case, knows that information.

Which makes plasma shell windows (including krunner) immune to window 
rules like placement-under pointer, etc.  So without user-level patching, 
there's no way to override plasma shell window positions.  While that 
works fine for most shell windows, krunner really needs more flexible 
positioning than the current code allows -- in particular it needs window-
under-mouse positioning as an option, but apparently kwin hasn't yet been 
setup to expose pointer position to plasmashell (except the normal 
pointer positioning info active wayland windows get) so (at least in the 
general some other window active case) plasmashell doesn't have the 
necessary information to do window-under-pointer positioning.

Bugs are filed and they have responded that they know about it, the 
necessary plumbing/wiring (as explained above) simply isn't hooked up yet.

So lacking window-under-pointer ability and with the two default position 
options (top of top-left screen and semi-centered on the same screen) 
entirely inappropriate to my use-case, I, being lucky enough to run gentoo 
where it's not /horribly/ inconvenient and additionally, while not a dev, 
being lucky enough to have the necessary knowledge for at least hack-
patches, hacked up my own hack-patch "at least it's usable for my use-
case" solution.

And I *definitely* appreciate the fact that this time around (as opposed 
to the kde3/kde4 transition where if it couldn't be shell-scripted I 
simply didn't have the necessary hackpatching skills) I can actually *do* 
many of those hackpatches, and have taken full advantage of that fact! 

But few windows get the privs plasma shell windows get, meaning most 
windows either behave reasonably with the default kwin config, or can be 
individually configured with kwin window rules for default-exceptions.

Meanwhile, it's useful to be aware of another type of exception as well, 
at least in the kde/kwin universe but it's being xdg standardized if it 
isn't already, the OSD/on-screen-display popups, like the volume popup 
the kmix and (I assume) the pulseaudio mixer plasmoids use.  In this 
particular case they're plasma shell windows and thus fall under that 
exception as well, but the point of mentioning them separately is that 
kwin has a whole z-axis positioning layer for these that *always* places 
them on top of other windows, even normal layer "always on top" windows.  
I'm not entirely sure that's in the wayland protocol xdg standards yet 
and thus the degree to which third-party wayland apps can make use of it, 
but they're working on it, and (obviously for non-plasma-shell windows 
since kwin doesn't enforce window rules on them) kwin window rules 
already has setting available to filter on this type of window as well as 
force it and other window types such as normal.

That means that at least once things settle down a bit in wayland world, 
wayland-native apps such as media players will be able to set OSD level 
windows -- and kwin window rules is already setup to be able to filter on 
and force OSD level on and off, configurable via window rule. Like I 
said, useful info to know, tho the practical effect at this time is 
somewhat less certain/useful.  =:^)

Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman

More information about the kde mailing list