Skip to content

Quick capture window is indistinguishable from the main window on Wayland, breaking WM-side hotkey binding #155

Description

@uNyanda

Platform: Linux/Wayland
Compositor: Niri

What's happening

The quick capture floating window shares the same app_id and window title title as the main ZenNotes window. That's expected - both windows come from the same app. The problem is that there's no secondary indentifier (e.g a distinct window title or something) to tell them apart.

On standalone Wayland compositors, global hotkeys are not registered by apps - they must be bound manually in the compositor config. To bind a key that opens/toggles the Quick Capture floating window specifically when the app has no focus, users need something to match against. Right now there's nothing.

Steps to reproduce (in Niri)

  1. Open ZenNotes
  2. Trigger the Quick Capture floating window
  3. Run a window inspection command, e.g`niri msg pick-window'

Output

niri msg pick-window
Window ID 9: (focused)
Title: "ZenNotes"
App ID: "ZenNotes"
Is floating: no
PID: 180579
Workspace ID: 4
Layout:
Tile size: 900 x 705
Scrolling position: column 1, tile 1
Window size: 900 x 705
Window offset in tile: 0 x 0

Expected behaviour

The quick capture window should have a distinct window title - for example ZenNotes Quick Capture - so users can match on it in compositor rules:

window-rule {
  match title="ZenNotes Quick Capture"
  open-floating true
}

Why this matters

The in-app system-wide hotkey registration doesn't work on standalone WMs, those environments intentionally leave hotkey management to the compositor. The only path forward for WM users is a manual bind, which requires something to target. Without a distinct window title, the quick capture feature is effectively unavailable outside of a full DE.

Possible fix

Set a distinct, stable window title, something likeZenNotes Quick Capture. That's all that's needed for compositor rules to work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions