Skip to content

Improve Linux device access, Logitech detection, and startup integration#115

Open
JFly02 wants to merge 2 commits intoTomBadash:masterfrom
JFly02:fedora-linux-fixes
Open

Improve Linux device access, Logitech detection, and startup integration#115
JFly02 wants to merge 2 commits intoTomBadash:masterfrom
JFly02:fedora-linux-fixes

Conversation

@JFly02
Copy link
Copy Markdown

@JFly02 JFly02 commented Apr 19, 2026

Summary

This PR improves Linux support, especially for Fedora/GNOME and Bluetooth Logitech devices.

Changes

  • add a Linux hidraw fallback for Logitech HID discovery when hidapi alone is not enough
  • prefer supported MX-family devices when selecting the active Linux mouse on multi-device systems
  • add Linux login startup support via XDG autostart
  • improve Linux terminal shutdown behavior
  • update README/setup docs for Fedora/GNOME device permissions and launcher behavior
  • add tests for the new Linux HID/startup paths

Motivation

On Fedora/GNOME with an MX Master 3S over Bluetooth, Mouser could enumerate the device but still fail to connect reliably. On systems with multiple Logitech mice, Linux device selection could also attach to the wrong mouse.

This PR addresses those Linux-specific issues and documents the required Fedora setup more clearly.

Notes

Fedora users still need local system setup outside the app itself:

  • python3-devel / xdotool
  • udev permissions for Logitech hidraw and /dev/uinput
  • membership in the input group
  • a full re-login/reboot so desktop-launched apps inherit the updated group membership

These steps are now documented in the README.

Testing

  • python -m unittest tests.test_startup tests.test_backend tests.test_hid_gesture tests.test_mouse_hook
  • manually validated on Fedora 43 / GNOME with a Logitech MX Master 3S

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