excludedApps defaults to empty, so drag snapping is on for everything until the user hits a problem and goes looking for the setting. The apps this hurts are predictable: full-screen games, remote desktop clients, VM windows, video calls in presentation mode. Anything that manages its own geometry and fights back when something else moves it.
PowerToys ships a default list for the same reason, and the ROADMAP notes the exclusions were borrowed from there.
What to do
Agree the list first, on this issue, before any code. Candidates worth arguing about: RDP and VNC clients, Parallels / VMware / UTM windows, Steam games, OBS in projector mode, Zoom's screen-share toolbar.
Once the list is settled:
- Ship it as a default in
Config, not baked into the matcher.
- Keep it overridable. If someone removes an entry it must not come back on the next launch, which means the default has to be distinguishable from a user's empty list rather than merged in every time.
- Cover the merge behaviour in
App/Tests/plonkTests/, next to the existing AppExclusionsTests.
Done when
A new install stops fighting the obvious cases, and someone who deletes an entry finds it still deleted after a relaunch and after an update.
The second half is the easy part to get wrong, and the part worth the tests.
Starting from cold
The loop this needs runs on a plain checkout, with no signing certificate and
no Xcode:
git clone https://github.com/ostapondo/plonk && cd plonk
./scripts/test.sh
Comment here to claim it, so nobody writes it twice. If it would be your first
pull request anywhere, say so — you get a slower review, not a worse one.
CONTRIBUTING.md
has the commit and pull request conventions, and
AGENTS.md is the
engineering guide underneath them: the repo layout, the five places a new
module touches, and the mistakes that have already cost someone an hour.
Or point an agent at it
AGENTS.md is written for one, so this repo is unusually easy to hand over:
Read AGENTS.md and CONTRIBUTING.md in this repo first. Then help with issue #23, but note it asks for the list to be agreed on the issue BEFORE any code: start by proposing a list of apps that manage their own geometry and fight back when something else moves them (remote desktop and VNC clients, virtual machine windows, full-screen games, video calls in presentation mode), with the bundle identifier for each and one line on why it belongs. Do not write the code until the list is settled. When it is: ship the list as a default in Config rather than baking it into the matcher, and make sure a default a user deletes stays deleted across a relaunch and an update, which means the default must be distinguishable from an empty user list rather than merged in every time. Cover that behaviour in App/Tests/plonkTests/ next to AppExclusionsTests.
Read what it produces before you send it. The pull request is yours, and the
review will be with you.
excludedAppsdefaults to empty, so drag snapping is on for everything until the user hits a problem and goes looking for the setting. The apps this hurts are predictable: full-screen games, remote desktop clients, VM windows, video calls in presentation mode. Anything that manages its own geometry and fights back when something else moves it.PowerToys ships a default list for the same reason, and the ROADMAP notes the exclusions were borrowed from there.
What to do
Agree the list first, on this issue, before any code. Candidates worth arguing about: RDP and VNC clients, Parallels / VMware / UTM windows, Steam games, OBS in projector mode, Zoom's screen-share toolbar.
Once the list is settled:
Config, not baked into the matcher.App/Tests/plonkTests/, next to the existingAppExclusionsTests.Done when
A new install stops fighting the obvious cases, and someone who deletes an entry finds it still deleted after a relaunch and after an update.
The second half is the easy part to get wrong, and the part worth the tests.
Starting from cold
The loop this needs runs on a plain checkout, with no signing certificate and
no Xcode:
Comment here to claim it, so nobody writes it twice. If it would be your first
pull request anywhere, say so — you get a slower review, not a worse one.
CONTRIBUTING.md
has the commit and pull request conventions, and
AGENTS.md is the
engineering guide underneath them: the repo layout, the five places a new
module touches, and the mistakes that have already cost someone an hour.
Or point an agent at it
AGENTS.md is written for one, so this repo is unusually easy to hand over:
Read what it produces before you send it. The pull request is yours, and the
review will be with you.