Skip to content

Added gnome support - #4

Open
Ming-Bao wants to merge 14 commits into
galengreen:mainfrom
Ming-Bao:main
Open

Ming-Bao wants to merge 14 commits into
galengreen:mainfrom
Ming-Bao:main

Conversation

@Ming-Bao

@Ming-Bao Ming-Bao commented Oct 2, 2026

Copy link
Copy Markdown

No description provided.

Fedora (GNOME) could be controlled but never push its own cursor onto another computer:
capture needed wlr-layer-shell, which GNOME doesn't have. Where it's missing, capture now
goes through the InputCapture desktop portal: pointer barriers along the stretches of edge
that lead to another computer, then everything over libei (the reis crate) while the
cursor is away. GNOME asks each time MouseTail starts; if the answer is no, it doesn't ask
again until the next start.

GNOME's barriers sit on the edge's own line, so anything resting exactly on a left or top
edge set them off:

- Positions injected through uinput (while being controlled) aim for the middle of the
  pixel, so another computer's cursor at x = 0 no longer fires the barrier dozens of times
  a second.
- The pointer comes back a pixel clear of a left or top barrier: exactly on one, it fired
  again as soon as it moved, sending the cursor straight back.
- Where GNOME ends a capture itself (Super+Shift+Escape), the first push at that spot only
  lets the pointer go.

Capture starts off the async workers, as it can now wait a long time for someone to answer
the dialog.
Starting capture waits until someone answers the dialog, and it waited in Tokio's blocking pool, which the runtime waits for when it shuts down: stopping the service while the dialog was up hung until systemd killed it. It waits on its own thread now.
replace_dir copied only files, and the extension has icons/, so every update on a GNOME computer with the extension would have failed after swapping the binary.
GNOME's menu manager takes Escape first, to close the menu, so the field never saw it: pairing carried on with the menu closed. Now the menu catches it first, and Escape cancels pairing and keeps the menu open, as on Omarchy.
When the desktop ended input capture after start-up (the portal restarting, say), capture stopped silently and MouseTail still said it could share. Now MouseTail exits so systemd starts it again, as when it loses layer-shell, and GNOME asks again.
Older GNOME doesn't load the extension, so the installer no longer adds it there or promises an icon after the next login, and the docs say GNOME 50.

This branch has not been deployed

No deployments
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.

1 participant