Repository navigation
feat: Actions Ring for the MX Master 4 - #183
Open
schultz-dev0 wants to merge 7 commits into
Open
schultz-dev0 wants to merge 7 commits into
schultz-dev0 wants to merge 7 commits into
Conversation
A second launch used to fail the instance lock and exit silently while the first instance sat hidden. It now asks the running instance to show its window and exits 0. Without a tray, closing the window quits instead of hiding.
Closing the window destroys the UI and keeps devices, profiles, the tray and the single-instance server running, with or without a tray. Launching again rebuilds the window. --minimized starts without building it at all. Add --quit and a Quit button in Settings so the app can be ended without a tray.
A radial menu at the cursor, opened by the MX Master 4 haptic button (CID 0x01A0) or logitune --show-ring. Slots are per profile and use the existing action types or a submenu; hover and select play haptic pulses through a new 0x19B0 capability. Hold the trigger past 500 ms and release to select. The overlay uses LayerShellQt when available and asks Hyprland for the cursor position, falling back to the first pointer movement. Colours follow the app theme, overridable with ~/.config/Logitune/actions-ring-theme.json.
… adjuster Replace the form-style ring editor with a page built around a live ring preview and an action library: drag an action onto a bubble (or select a bubble and click one), swap bubbles, add submenu children, undo/redo, per-application rings from the profile strip, and the ring size under the cog. Labels sit beside their bubbles; submenu children's labels go outward. New actions: Custom command (any shell command, run through sh, with its own name and icon) and Volume, an adjuster you hover and scroll on the ring (click mutes). Adjusters store up/down/read/press commands in the slot and read the level only after each change finishes. Icons can be Nerd Font glyphs, theme icon names, or image files including animated GIFs, picked from a themed in-app browser with thumbnails. Open URL adds https:// when the address has no scheme. ActionModel.get() and ProfileModel.wmClassAt() replace raw role numbers in QML.
…inary Ring.qml and RingPreview.qml imported RingGeometry.js by relative path. That clashed with "import Logitune" in an installed build, where the module exists only inside the binary (qrc), and the ring overlay failed to load; local builds worked because Qt also found the module folder on disk next to the binary. The three geometry helpers now live in the two files that use them.
A Haptics page for mice that report HID++ 0x19B0 (haptics) or 0x19C0 (force-sensing button): turn feedback on or off, set its strength, and set how hard the MX Master 4's thumb panel must be pressed. Both are settings of the mouse, not of an application profile; they're saved per device in devices/<serial>/panel.conf and reapplied on every connect. Sliders write when released. Also move the MX Master 4 haptic button's callout between Forward and Back, where it no longer overlaps Back, and add the QML modules the ring editor now needs (folderlistmodel, QtCore) to the Debian dependency lists.
PhysicalDevice announced transportSetupComplete before stateChanged. On a reconnect the device model only reselects the device on stateChanged, so the profile was reapplied with nothing selected and skipped: button diversions (the Actions Ring trigger included), DPI and SmartShift were lost after every suspend or power cycle. Emit stateChanged first, and log when a reapply is skipped.
Author
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.


Added the actions ring for the MX Master 4, reverse engineered (sorta) the Actions Ring from Options+
This builds on #171.
All tests pass, tested on MX Master 4 over Bolt on Hyprland
Merge is a little dangerous, I thought the project was abandoned so just forked for personal use.
Please carefully review all code, raise any major issues to me, I can fix whatever needs to be fixed or changed for compatibility etc.