Skip to content

Open notifications in a web app window and mark them read on click - #10

Merged
robzolkos merged 7 commits into
mainfrom
combine-notification-open
Aug 23, 2026
Merged

Open notifications in a web app window and mark them read on click#10
robzolkos merged 7 commits into
mainfrom
combine-notification-open

Conversation

@robzolkos

Copy link
Copy Markdown
Owner

Combines #7 and #9, both of which changed openUrl() in Panel.qml and would have conflicted. Original commits are carried over with their authorship — 4 from @AnthonyPoschen, 2 from @shmall03.

Clicking a notification now opens it and marks it read. Previously the row stayed put and the Octocat stayed lit until the next poll. The row is hidden immediately, the mark is queued behind any in-flight refresh so it can't be dropped, an in-flight fetch can't restore it, and a failed PATCH puts the row back. The check button and m are unchanged — they still mark without opening.

Links open in a dedicated web app window via omarchy-launch-webapp rather than omarchy-launch-browser, which started a new uwsm unit per click. That helper targets Chromium-based default browsers and falls back to chromium.desktop; a machine with no Chromium-based browser installed won't open links.

The mouse wheel moves about one row per notch. Flickable was applying a 1–2px pixelDelta on Wayland, and a WheelHandler only intercepts that if it's a direct child of the Flickable.

Also fixes helperPath() to decode its resolved URL, so the fetch helper launches from paths containing spaces or non-ASCII characters.

Dropped from the original PRs: the xdg-open variant in #9 (opposite direction to the web app window), and the linkBehavior setting plus the hyprctl-based reuse-window script in #7.

AnthonyPoschen and others added 7 commits August 23, 2026 15:21
Opening a notification only launched the browser. Mark-as-read was
also ignored while a refresh was running, so the bar stayed alarming
until the next poll.

Hide the thread immediately, queue the GitHub PATCH if a fetch is in
flight, and keep an in-flight refresh from restoring it.

Validation:
- tests/panel-source-test.sh
- tests/service-source-test.sh
- tests/helper-test.sh

Assisted-by: Grok/Grok 4.6
hideNotification destroyed the row immediately, so the click handler
read an empty URL and skipped the browser launch. Snapshot the target,
open it, then mark the thread.

Validation:
- tests/panel-source-test.sh
- tests/service-source-test.sh
- tests/helper-test.sh

Assisted-by: Grok/Grok 4.6
Wayland mice often report a fake 1–2px pixelDelta alongside a real
notch. Flickable preferred the pixel value, so the panel crawled.

Use pixel scrolling only when it looks like a touchpad, and move about
one row per accumulated 120° notch otherwise.

Validation:
- tests/panel-source-test.sh
- tests/service-source-test.sh
- tests/helper-test.sh

Assisted-by: Grok/Grok 4.6
The handler lived on PanelKeyCatcher, so Flickable kept Qt's default
1–2px Wayland wheel distance and the faster step never ran. Handle
wheel as a direct Flickable child, move one row per mouse notch, and
scale touchpad pixel deltas.

Validation:
- tests/panel-source-test.sh

Assisted-by: Grok/Grok 4.6
Qt.resolvedUrl percent-encodes the plugin path, so the fetch helper could
not be launched from a directory containing spaces or non-ASCII characters.
The combined branch keeps opening links through omarchy-launch-webapp
rather than xdg-open, so assert the launcher the panel actually uses and
restore the assert_not_contains helper the dropped commit had provided.
@robzolkos
robzolkos merged commit a6a9be1 into main Aug 23, 2026
1 check passed
@robzolkos
robzolkos deleted the combine-notification-open branch August 24, 2026 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants