Conversation
The Meet PiP rule matched "^Meet - .+" with an ASCII hyphen. Meet titles
its Picture-in-Picture window with an en dash ("Meet – Standup"), while
the browser's own window uses ASCII hyphens ("Meet - abc-defg-hij -
Google Chrome"). The rule therefore never matched the PiP overlay it was
written for, and always matched the main browser window instead.
Matching the dash separates the two: the PiP overlay floats and pins as
intended, and the main window keeps the border and opacity that
border_size = 0 was stripping from it whenever a Meet tab was in front.
Fixes omacom#10152
Fixes omacom#9823
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012tK8eVrc5VeDpVztN9qqh7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Google Meet PiP rule in
default/hypr/apps/pip.luamatches the wrong window. It is written for the Picture-in-Picture overlay, but as written it never matches the overlay and always matches the main browser window.The separator is the discriminator, and the pattern picks the wrong one:
Meet – StandupMeet - abc-defg-hij - Google ChromeSo
^Meet - .+misses the overlay and catches the browser window, producing the two open reports:tile = truefrombrowser.lua, joins the focused group, and opens at full group size.border_size = 0applies to it instead.float,pin,sizeandmoveare only evaluated when a window opens, so an already-open browser window is not floated or resized — butborder_sizeandopacityare re-evaluated on every title change. That is why the main window silently drops its border the moment a Meet tab comes to the front and gets it back when you switch away, which made #9823 look like it was specific to session restore.The change
Match the dash Meet actually uses. This fixes both reports at once: the overlay matches for the first time, and the browser window stops matching.
I did not keep the ASCII hyphen as an alternative. The fix suggested in #10152,
^Meet (-|–|—) .+, would fix the overlay but leave #9823 in place, since the hyphen branch still matches the main window.Verification
Hyprland 0.56.2, Omarchy 4.0.3-1, Google Chrome 152.
I confirmed the regex semantics directly, using two windows with controlled titles so the match could be observed in isolation:
The 2px expansion and up-left shift into the border gutter is the
border_size = 0signature. So the en dash matches through Hyprland's regex engine, and the ASCII-hyphen browser title does not.I also reproduced #9823 on a real Chrome window — no session restore involved, just a Meet tab in the foreground:
Chrome window titles use an ASCII hyphen for the browser suffix generally (
GitHub - Google Chrome,Inbox - … - Gmail - Google Chrome), so the suffix never introduces an en dash. The en-dash overlay title is from #10152, which includes the byte-level dump (b'Meet \xe2\x80\x93 Team standup'); I could not spawn a real Meet PiP window to re-confirm that independently../test/allshows no new failures —config,locate,snapperandunowned-system-pathsfail the same way on a cleanquattrocheckout here.Note on
devThe Meet rule exists on
quattrobut is absent fromdev'spip.lua, sodevhas no Meet PiP rule at all. This PR targetsquattro; if the rule is meant to come back ondev, it should come back in this form.#10152 also suggests adding
group = "deny"to stop the overlay being grouped manually. I left that out to keep the change to one thing.