Hyprland icon indicating copy to clipboard operation
Hyprland copied to clipboard

Export `XDG_ACTIVATION_TOKEN` for apps launched by Hyprland

Open q234rty opened this issue 2 years ago • 8 comments

Currently firefox supports using this variable to activate itself. Without this, one has to manually switch to the workspace firefox is in when opening an url. While in theory this should be exported by the app launching firefox, currently there are many apps that don't do this. If the compositor supports this, one can easily workaround that by editing desktop files to use hyprctl dispatch exec.

This is implemented by sway in https://github.com/swaywm/sway/pull/6639, though I personally don't care much about workspace matching.

q234rty avatar Jan 09 '23 19:01 q234rty

doesnt it already work with misc:focus_on_activate?

vaxerski avatar Jan 09 '23 19:01 vaxerski

doesnt it already work with misc:focus_on_activate?

This only works if the app tries to activate itself, i.e. only works when XDG_ACTIVATION_TOKEN is set. If you launch firefox using foot's url-mode it will work, but it won't work when you just do firefox "https://google.com" in a terminal.

q234rty avatar Jan 10 '23 09:01 q234rty

Of course, with misc:focus_on_activate = false none of the above will work, but that's not the case I'm talking about here.

q234rty avatar Jan 10 '23 09:01 q234rty

the reason I keep it off and generally not work on it is that it was causing me more issues than switching workspaces to firefox. Maybe it's my shady impl, maybe not, but some apps would repeatedly spam activation a kjhillion times a second (e.g. obs)

vaxerski avatar Jan 10 '23 10:01 vaxerski

but some apps would repeatedly spam activation a kjhillion times a second (e.g. obs)

How do I reproduce that?

q234rty avatar Jan 10 '23 14:01 q234rty

open obs and start recording iirc

vaxerski avatar Jan 10 '23 14:01 vaxerski

Yeah that's probably a qtbug or something, but it doesn't seem to cause any actual issue even with misc:focus_on_activate = true, and imo should not block implementing this.

q234rty avatar Jan 10 '23 16:01 q234rty

it doesnt block it, but the 129 other issues don't make this a priority either. You're free and welcome to try making a patch yourself and making a MR.

vaxerski avatar Jan 10 '23 16:01 vaxerski

but some apps would repeatedly spam activation a kjhillion times a second (e.g. obs)

I believe this no longer happens with qt 6.5.

q234rty avatar May 18 '23 10:05 q234rty

doesnt it already work with misc:focus_on_activate?

This only works if the app tries to activate itself, i.e. only works when XDG_ACTIVATION_TOKEN is set. If you launch firefox using foot's url-mode it will work, but it won't work when you just do firefox "https://google.com" in a terminal.

with misc:focus_on_activate = true on firefox-nightly it jumps to the workspace where firefox is located if I call firefox-nightly "https://google.com" in a terminal

romanstingler avatar Aug 03 '23 19:08 romanstingler

Still, telegram-desktop will get focused when a notification is received. Not great to be interrupted like that.

fufexan avatar Aug 03 '23 19:08 fufexan

@fufexan @vaxerski Ilya Fedin, developer of telegram-desktop was surprised when I told him that Hyprland switches workspaces and focusing telegram-desktop every time notification arrives. They use QWindow::alert, here is a quote from https://github.com/telegramdesktop/tdesktop/issues/26343 not really related to this issue thread:

Apparently that's how your compositor reacts to QWindow::alert? It blinks in taskbar/dock on KDE (both X11/Wayland), Windows and macOS.


@q234rty

I believe this no longer happens with qt 6.5.

Today I migrated my system from qt5 to qt6 and stumbled upon this issue, when telegram grabs focus and switches workspaces every. damn. message. It was all good in qt5 since afaik it did not support focus request in wayland.

Now I have dev-qt/qtbase and dev-qt/qtwayland v6.6.0 both.


Maybe we can reopen https://github.com/hyprwm/Hyprland/issues/2732 and migrate discussion related to telegram-desktop and obs there? They both qt and I don't think they do something wrong about this, maybe we treat their signals wrong? Just disabling misc:focus_on_activate is not a solution to the OP issue in my opinion. I still want to use this feature flawlessly in my daily work, for example, when I open links from terminal or my code editor, as #1350 OP

ZerdoX-x avatar Oct 26 '23 16:10 ZerdoX-x

I believe this no longer happens with qt 6.5.

Today I migrated my system from qt5 to qt6 and stumbled upon this issue, when telegram grabs focus and switches workspaces every. damn. message. It was all good in qt5 since afaik it did not support focus request in wayland.

I was talking about the obs issue where activation requests were literally spammed, which was AFAIK fixed in https://invent.kde.org/qt/qt/qtwayland/-/commit/2fa2a5184dcdf54a7868d73418ed141713587969

Now, for telegram-desktop the easy workaround would be to disable "Draw attention to the window" in its notifications settings. Though if there would be activation spams from other apps, making focus_on_activate into a window rule could be a consideration.

The original issue about firefox mentioned here was "fixed" by gtk, which had a wrong implementation of xdg-activation causing wlroots-based compositors to reject it's request. See e.g. https://github.com/swaywm/sway/issues/4155 and https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5293. Exporting XDG_ACTIVATION_TOKEN would still be useful for workspace matching if the application supports this environment variable.

q234rty avatar Oct 26 '23 16:10 q234rty

Now, for telegram-desktop the easy workaround would be to disable "Draw attention to the window" in its notifications settings.

Oh, that's nice. I have enabled focus_on_activate back and disabled this feature in telegram, thank you :)

ZerdoX-x avatar Oct 26 '23 17:10 ZerdoX-x