Raising windows on Wayland

Martin Flöser mgraesslin at kde.org
Tue Jul 3 17:51:26 BST 2018


Am 2018-07-03 18:41, schrieb Aleix Pol:
> On Tue, Jul 3, 2018 at 6:32 PM Martin Flöser <mgraesslin at kde.org> 
> wrote:
>> 
>> Am 2018-07-03 18:05, schrieb Aleix Pol:
>> > On Tue, Jul 3, 2018 at 6:02 PM Martin Flöser <mgraesslin at kde.org>
>> > wrote:
>> >>
>> >> Am 2018-07-03 14:45, schrieb Aleix Pol:
>> >> > Dear kwiners,
>> >> > Would it be possible to find a way to do so?
>> >> >
>> >> > I know we don't want windows to be positioning themselves willy-nilly
>> >> > on the window stack, but we certainly need to figure out his use-case.
>> >> >
>> >> > What would need to happen to do this?
>> >> >
>> >> > If you need to, I can compile a list of use-cases.
>> >>
>> >> Hi Alex,
>> >>
>> >> this really depends on the use case. Instead of allowing general
>> >> raising
>> >> I would prefer to make the workflows work correctly. E.g. if you want
>> >> that the polkit authentication dialog is above discover we can make
>> >> this
>> >> work right now without needing to implement window raising.
>> >>
>> >> Cheers
>> >> Martin
>> >
>> > That's not the use-case.
>> >
>> > A use-case is I was using Discover, someone pressed
>> > appstream://org.kde.kate and wants to install it. Discover changes but
>> > doesn't go into the foreground.
>> > Similarly, we want the web browser to raise after we've pressed a URL
>> > on an app.
>> > Another thing I keep hitting: I open telegram or konversation on
>> > krunner, nothing happens. It's because it's open somewhere under my
>> > current window.
>> 
>> Ok, that's all the same pattern: we have an action in application A
>> which should activate (and raise) application B.
>> 
>> First of: KWin should prevent application B to activate. This is only
>> working because we don't have focus stealing prevention for Wayland
>> windows yet. If we had focus stealing prevention, it would kick in and
>> prevent application B from activating.
>> 
>> The solution to this is a mechanism to pass activation around through 
>> a
>> side channel. Application A would need to create a token before
>> activating B and pass the token to B. B would use this token towards 
>> the
>> compositor and the compositor would be able to allow the request as it
>> sees that application A passed the focus to application B. That kind 
>> of
>> matches what startup notifications used to be on X11. This is 
>> basically
>> https://phabricator.kde.org/T4448
>> 
>> Ideally this needs to be standardized so that it does not only work 
>> with
>> our applications but with any.
>> 
>> Cheers
>> Martin
> 
> I'm not sure how viable this is though. xdg-open doesn't know who's
> the caller, and so doesn't just calling "konversation" from bash.

xdg-open could get the token through side channel and pass it on just 
like any other application.

Calling konversation from bash is a corner case which is also not 
supported on X11 (KWin needs the startup notification and that's only 
generated by KLauncher, not from bash).

Cheers
Martin


More information about the Plasma-devel mailing list