Bug 442265 - Opening an app from konsole has no activation environment set
Summary: Opening an app from konsole has no activation environment set
Status: CONFIRMED
Alias: None
Product: kwin
Classification: Plasma
Component: wayland-generic (show other bugs)
Version: git master
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
: 473237 (view as bug list)
Depends on:
Blocks: 460318
  Show dependency treegraph
 
Reported: 2021-09-10 15:50 UTC by Nate Graham
Modified: 2024-10-28 08:14 UTC (History)
6 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nate Graham 2021-09-10 15:50:57 UTC
STEPS TO REPRODUCE
1. Launch Kate using Kickoff or the Task Manager
2. Open Konsole
3. enter `kate [path to file]`


OBSERVED RESULT
Kate opens the file, but does not get brought forward automatically.


EXPECTED RESULT
Kate opens the file, but gets brought forward.
Comment 1 David Edmundson 2021-09-10 15:53:25 UTC
This is kate at fault.
Comment 2 Nate Graham 2021-09-10 15:55:52 UTC
It's not just Kate, happens happen for any app though.
Comment 3 David Edmundson 2021-09-10 16:04:28 UTC
We have a few options here, all with different downsides.

We could *somehow* have konsole put an XDG_ACTIVATION token into the current bash whenever konsole gets focus. I don't know if this is feasible, we're already forked from konsole at this point.

We could have it so calling request_activate with an invalid token still activates the window when "Focus stealing prevention" is set to None/Low.
Fastest and laziest solution that works well shortterm, but will definitely come back to haunt us when inevitability no-one fixes anything.

We could have kstart5 or equivalent import the window activation protocol, then it can create a token. It means people using an alias, but that's probably fine.

We could do something konsole specific https://invent.kde.org/utilities/konsole/-/commit/29440f0c2453552a050815b80a3fac3129fdf254 and requires all people to either use an alias or work it into a kstart5 equivalent.
Comment 4 Nate Graham 2021-09-10 16:13:01 UTC
> We could have it so calling request_activate with an invalid token still activates the
> window when "Focus stealing prevention" is set to None/Low.
Definitely get what you mean about fastest and laziest solution that will come back to haunt us, but I feel like it's the only general purpose way to do this short of re-engineering the entirely world around us. If we don't do this, we will still be tracking down bugs forever--just different ones, in each individual app--but the user experience will suffer in the meantime.

Asking people to use an alias or kstart is probably not going to work as it requires that people 1) know this 2) remember to do it and 3) type more characters/do more work. In practice they won't.
Comment 5 Nicolas Fella 2022-10-11 18:58:32 UTC
As-is using kstart5 doesn't help. kstart5 is a windowless application, so it doesn't have a focussed surface that we can transfer focus from
Comment 6 Nicolas Fella 2023-08-10 12:39:23 UTC
*** Bug 473237 has been marked as a duplicate of this bug. ***
Comment 7 Nick Shaforostoff 2023-08-10 20:32:42 UTC
why double clicking a text file in dolphin raises already running Kate instance correctly? Why can't Konsole do the same?
Comment 8 Nate Graham 2023-08-10 20:35:38 UTC
Because of the issue tracked by this bug report.
Comment 9 Nicolas Fella 2023-08-10 20:38:35 UTC
(In reply to Nick Shaforostoff from comment #7)
> why double clicking a text file in dolphin raises already running Kate
> instance correctly? Why can't Konsole do the same?

Because Dolphin knows that a file/window is being opened so it can request an activation token from the compositor.

Konsole doesn't know that running "kate bla.txt" opens a file but "ls bla.txt" doesn't. Konsole only hosts bash or whatever shell you are using, it doesn't know what's happening inside that
Comment 10 Nick Shaforostoff 2023-08-11 07:54:56 UTC
Is there a workaround? This is very important part of my workflow
Comment 11 Nick Shaforostoff 2023-08-14 13:26:19 UTC
Ok, so at least I have got it working locally

git clone https://invent.kde.org/utilities/konsole.git --branch release/22.12 
cd konsole
git cherry-pick 29440f0c2453552a050815b80a3fac3129fdf254
mkdir build
cd build
cmake ..
sudo mv bin/konsole /usr/bin/konsole

vim /usr/local/bin/open
to add:
 XDG_ACTIVATION_TOKEN=`qdbus $KONSOLE_DBUS_SERVICE $KONSOLE_DBUS_WINDOW org.kde.konsole.Window.activationToken` kate $@

chmod a+x /usr/local/bin/open

and BTW a related BUG: 442721
Comment 12 Nick Shaforostoff 2023-10-14 16:12:43 UTC
after apt dist-upgrade which updated kde to 23.08.1 the mentioned workaround no longer works :(