Skip to content

input-capture: rebase Hyprland branch onto latest upstream - #11

Closed
ZeroSegFault wants to merge 5 commits into
3l0w:feat/input-capture-implfrom
ZeroSegFault:zsg/input-capture-rebase-20260602
Closed

input-capture: rebase Hyprland branch onto latest upstream#11
ZeroSegFault wants to merge 5 commits into
3l0w:feat/input-capture-implfrom
ZeroSegFault:zsg/input-capture-rebase-20260602

Conversation

@ZeroSegFault

Copy link
Copy Markdown

Rebases the input-capture Hyprland implementation onto current hyprwm/main.

Verified with:

  • cmake -S . -B build-pr-rebase -DCMAKE_BUILD_TYPE=RelWithDebInfo
  • cmake --build build-pr-rebase --parallel 16

3l0w and others added 3 commits June 2, 2026 13:19
Co-authored-by: Gerben Meijer <infernix@gmail.com>
Co-authored-by: Emerson Matos <emegson@live.com>
Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
* input-capture: suppress local keybinds while captured

Captured keyboard events were still processed by the normal keybind path before the captured check suppressed delivery to local clients. This allowed compositor binds such as SUPER shortcuts to run locally while the same events were sent to the remote EIS client.

Run keybind handling in a capture-only mode while input capture is active, skipping internal shortcuts and allowing only the releaseinputcapture escape hatch.

* keybinds: add input capture exception flag

Add bindx / allow_input_capture for keybinds that should remain available while input capture is active. This lets users define an explicit local escape bind that can release capture and optionally perform additional local actions.

Expose the flag through Lua keybind options, hyprctl binds output, and Lua keybind metadata.

* input-capture: validate barriers against logical monitor size

Use the monitor logical size already computed by Hyprland when validating input-capture barriers instead of deriving it again from physical pixels and scale.

Recomputing logical size can disagree with xdg-output geometry for fractional scales, causing valid portal barriers to be rejected with invalid_barrier protocol errors.
@ZeroSegFault ZeroSegFault changed the title input-capture: rebase Hyprland branch onto latest upstrea input-capture: rebase Hyprland branch onto latest upstream Jun 2, 2026
@3l0w
3l0w force-pushed the feat/input-capture-impl branch from 801afa2 to 75e2ed0 Compare June 9, 2026 23:47
3l0w pushed a commit that referenced this pull request Jun 9, 2026
A Framework Desktop crash on Hyprland 0.55.2 ended in the renderer
begin path after Aquamarine reported EGL_BAD_PARAMETER from
eglDupNativeFenceFDANDROID. Fix the failed export path because it
creates an EGLSyncKHR before trying to export a native fence fd.

ERR from aquamarine ]: [EGL] Command eglDupNativeFenceFDANDROID errored out with EGL_BAD_PARAMETER (0x12300): eglDupNativeFenceFDANDROID

The coredump stack was:

                Stack trace of thread 5829:
                #0  0x00007fafef025808 abort (libc.so.6 + 0x25808)
                #1  0x0000561bbd621ee4 n/a (Hyprland + 0x3bbee4)
                #2  0x00007fafef044e30 n/a (libc.so.6 + 0x44e30)
                #3  0x00007fafef0ae9cb pthread_kill (libc.so.6 + 0xae9cb)
                #4  0x00007fafef044d08 raise (libc.so.6 + 0x44d08)
                #5  0x0000561bbdc2defa _ZN6Render2GL15CHyprOpenGLImpl5beginEN9Hyprutils6Memory14CSharedPointerI8CMonitorEERKNS2_4Math7CRegionENS4_INS_12IFramebufferEEESt8optionalIS8_E (Hyprland + 0x9c7efa)
                #6  0x0000561bbdc17ea1 _ZN6Render2GL15CHyprGLRenderer19beginRenderInternalEN9Hyprutils6Memory14CSharedPointerI8CMonitorEERNS2_4Math7CRegionEb (Hyprland + 0x9b1ea1)
                #7  0x0000561bbdc7b2f2 _ZN6Render13IHyprRenderer11beginRenderEN9Hyprutils6Memory14CSharedPointerI8CMonitorEERNS1_4Math7CRegionENS_11eRenderModeENS3_I9IHLBufferEENS3_INS_12IFramebufferEEEb (Hyprland + 0xa152f2)
                #8  0x0000561bbdc81579 _ZN6Render13IHyprRenderer13renderMonitorEN9Hyprutils6Memory14CSharedPointerI8CMonitorEEb (Hyprland + 0xa1b579)
                #9  0x0000561bbd84fc7c _ZN22CMonitorFrameScheduler7onFrameEv (Hyprland + 0x5e9c7c)
                #10 0x00007faff0dcb0f9 _ZN9Hyprutils6Signal15CSignalListener12emitInternalEPv (libhyprutils.so.12 + 0x450f9)
                #11 0x00007faff0dcb583 _ZN9Hyprutils6Signal11CSignalBase12emitInternalEPv (libhyprutils.so.12 + 0x45583)
                hyprwm#12 0x00007faff0eac382 _ZN10Aquamarine8CBackend12dispatchIdleEv (libaquamarine.so.11 + 0x83382)
                hyprwm#13 0x0000561bbd985c9a n/a (Hyprland + 0x71fc9a)
                hyprwm#14 0x00007faff0c6ea62 wl_event_loop_dispatch (libwayland-server.so.0 + 0xaa62)
                hyprwm#15 0x00007faff0c70d07 wl_display_run (libwayland-server.so.0 + 0xcd07)
                hyprwm#16 0x0000561bbd9892a0 _ZN17CEventLoopManager9enterLoopEv (Hyprland + 0x7232a0)
                hyprwm#17 0x0000561bbd4dad64 main (Hyprland + 0x274d64)
                hyprwm#18 0x00007fafef027c4e n/a (libc.so.6 + 0x27c4e)
                hyprwm#19 0x00007fafef027d8b __libc_start_main (libc.so.6 + 0x27d8b)
                hyprwm#20 0x0000561bbd60be45 _start (Hyprland + 0x3a5e45)

Destroy the sync object before returning so repeated failures do not
leak EGL sync resources under an already resource-constrained GPU path.
Also log the EGL error value so future reports can distinguish this
path from other export failures.

Validated with:
cmake --build ./build --config Debug --target all -j$(nproc 2>/dev/null || getconf NPROCESSORS_CONF)
git diff --check
ctest --test-dir build --output-on-failure -j$(nproc 2>/dev/null || getconf NPROCESSORS_CONF)
make format-check
@ZeroSegFault
ZeroSegFault deleted the zsg/input-capture-rebase-20260602 branch June 15, 2026 03:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants