Hyprland icon indicating copy to clipboard operation
Hyprland copied to clipboard

DBus Global Shortcuts with binde sends hundreds of activation signals per keypress

Open pdf opened this issue 1 year ago • 5 comments

Hyprland Version

System/Version info
Hyprland, built from branch main at commit fbf5ba87ce57752653f3bebf6e2be090c702836e dirty (shaders: use highp for fragments).
Date: Fri Feb 16 04:32:34 2024
Tag: v0.35.0-38-gfbf5ba87

flags: (if any)


System Information:
System name: Linux
Node name: myhostname
Release: 6.7.5-zen1-1-zen
Version: #1 ZEN SMP PREEMPT_DYNAMIC Sat, 17 Feb 2024 14:02:21 +0000


GPU information: 
00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-H GT1 [UHD Graphics] [8086:9a60] (rev 01) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104M [GeForce RTX 3070 Mobile / Max-Q] [10de:249d] (rev a1) (prog-if 00 [VGA controller])


os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo


plugins:

Bug or Regression?

Bug

Description

When assigning a binde using the global dispatcher, org.freedesktop.portal.GlobalShortcuts.Activated signals are fired hundreds of times even if the key is only pressed for a fraction of a second. The signals do not stop when the key is released.

When using bind instead everything works as expected, and the bind fires one org.freedesktop.portal.GlobalShortcuts.Activated on key down, and one org.freedesktop.portal.GlobalShortcuts.Deactivated on key up.

I suspect something is wonky with the key repeat logic, or that when using other dispatchers the repeat is debounced or something.

How to reproduce

Create a binde bind with a global dispatcher, e.g.:

binde = , XF86AudioRaiseVolume, global, coolApp:volUp

Monitor DBUS:

dbusmonitor --session

Tap the bound key once and witness the flood of org.freedesktop.portal.GlobalShortcuts.Activated signals.

Crash reports, logs, images, videos

No response

pdf avatar Feb 24 '24 09:02 pdf

lol, probably e should be disabled for global as it makes no sense does it

vaxerski avatar Feb 24 '24 14:02 vaxerski

Does it not make sense? Are all applications expected to implement internal key repeat logic? Yes may be a valid answer.

Also out of interest, where does the appId in hyprctl globalshortcuts come from? I tried to follow the code but got quickly confused.

pdf avatar Feb 24 '24 19:02 pdf

the app itself thru dbus

vaxerski avatar Feb 24 '24 20:02 vaxerski

the app itself thru dbus

Ah, I see there are differences between the Hyprland global shortcuts API and the upstream portal GlobalShortcuts API (the latter has no app_id field), so I guess portal-registered shortcuts will always show up without an app_id prefix from Hyprland's perspective?

pdf avatar Feb 24 '24 20:02 pdf

it used to, portals suck. ugh.

also kinda sent via sessions.

vaxerski avatar Feb 24 '24 20:02 vaxerski