mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-05-15 06:06:07 -06:00
[PR #424] macOS: QoL bundle (LSUIElement, TCC flow, quit-unfreezable, display wake) + UI polish #416
Labels
No labels
Xorg
documentation
enhancement
macos
pull-request
question
windows
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/lan-mouse#416
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/feschber/lan-mouse/pull/424
Author: @jondkinney
Created: 5/6/2026
Status: 🔄 Open
Base:
main← Head:split/05-macos-qol📝 Commits (10+)
31298f2feat: cross-platform wall-press auto-release fallbackbffbef0proto: add Bounds(width, height) event variant2219f45feat(emulation): display_bounds + warp_cursor for all backends5de5016feat(emulation): send Bounds + warp cursor on Enter68fab55feat(capture): cache peer bounds and use as wall-press upper clamp944e758ui: wrap window content in GtkScrolledWindow56f7730ui: rename Auto-Release group to scope it to outgoing capturecd63f5dfix: preserve cross-axis cursor position across machine transitions2571b47fix(capture/layer_shell): report screen-space cursor position on Entercbe2ec1fix(capture): warp host cursor to guest position on release📊 Changes
48 files changed (+4119 additions, -574 deletions)
View changed files
📝
.gitignore(+1 -0)📝
Cargo.lock(+494 -204)📝
Cargo.toml(+5 -1)📝
input-capture/Cargo.toml(+1 -0)📝
input-capture/src/dummy.rs(+2 -2)📝
input-capture/src/layer_shell.rs(+67 -17)📝
input-capture/src/lib.rs(+574 -11)📝
input-capture/src/libei.rs(+5 -2)📝
input-capture/src/macos.rs(+170 -13)📝
input-capture/src/windows.rs(+1 -1)📝
input-capture/src/windows/event_thread.rs(+66 -12)📝
input-capture/src/x11.rs(+1 -1)📝
input-emulation/src/lib.rs(+36 -0)📝
input-emulation/src/libei.rs(+41 -2)📝
input-emulation/src/macos.rs(+100 -1)📝
input-emulation/src/windows.rs(+24 -1)📝
input-emulation/src/wlroots.rs(+190 -1)📝
input-emulation/src/x11.rs(+27 -0)📝
lan-mouse-gtk/resources/authorization_window.ui(+78 -82)📝
lan-mouse-gtk/resources/client_row.ui(+17 -14)...and 28 more files
📄 Description
Summary
Quality-of-life improvements primarily targeting the macOS bundle, plus generally-applicable UI polish that touches the same files.
macOS-specific
afe9456) wires to GtkWindow'swindow.closeaction, which on macOS hides the window and flips the activation policy toAccessory— effectively collapses to the menu bar. Linux/Windows unchanged.8a86b9d) fits every preference group on first paint on ≥1440px-tall displays. Tiling Wayland WMs ignoredefault-height, so no effect there.39752ee): 3stry_wait()poll on the daemon child with SIGKILL fallback, plus a process-levelstd::thread5s force-exit backstop scheduled outside the GTK main loop (so a wedged loop can't prevent it). Worst-case quit latency 5s; normal completes in <1s.56f828f): emulation backend pokesIOPMAssertionDeclareUserActivitywhenever a forwarded event arrives, so a peer-driven keystroke or click wakes the macOS display from idle-sleep. Without this, lan-mouse would keep pumping events to a blanked screen.5aa3fcc): detects "remove from list" cases whereAXIsProcessTrustedin the parent process keeps reporting cached-true even after the entry is removed. Triggers a relaunch prompt rather than letting the daemon silently lose Accessibility.9708d9c): an active CGEventTap at HeadInsertEventTap can wedge system input if the process lingers after losing AX, so we exit immediately.53c668b): register the existing status-item delegate as a direct handler for'aevt'/'rapp'via NSAppleEventManager so reopening the app via Finder/Dock/openbrings the window back.Generally-applicable UI polish
GtkScrolledWindowwithpropagate-natural-height— the window can shrink under tiling without clipping content.parent − 40, replaceAdwPreferencesGroupwrappers with plainGtkEntry, tighten vertical spacing, close on Escape.7fcc08e): prevents a zombie window after the daemon exits.Test plan
Split out from #418, the umbrella PR collecting ~10 independent feature areas. This PR is the macOS QoL + UI polish subset. See #418 for the full picture.
Stack overview
These PRs are split out from #418 and stack in this order:
Each PR's branch builds on the previous one, so until earlier PRs are merged the cumulative diff against
mainincludes all preceding work. Reviewing in order is easiest.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.