JuhRadial MX 🖱️🖥️ is an alternative for the missing Logi Options + for Linux | a beautiful radial menu for Logitech MX Master mice (KDE Plasma 6, Hyprland, Wayland) - Now also supporting the new MX Keypad.
See the code
Open-source Linux control for Logitech MX Master mice, the MX Keypad and the MX Keys S.
Radial actions, button remapping, per-app profiles, MX Master 4 haptics, display keys, Easy-Switch and cross-computer control, on Wayland and X11.
Paste one line into a terminal as your normal user (not with sudo). The installer finds your distro, shows what it will change, and asks for sudo only for packages and system paths. It runs on these distributions and their derivatives:
curl -fsSL https://raw.githubusercontent.com/JuhLabs/juhradial-mx/master/install.sh | bash
Image-based systems install under ~/.local; sudo is used only for the udev rules, uinput and the input group (add --yes to skip the questions):
curl -fsSL https://raw.githubusercontent.com/JuhLabs/juhradial-mx/master/install.sh | bash -s -- --user
Try it without installing (the NixOS module is under Other ways to install):
nix run github:JuhLabs/juhradial-mx
If the installer adds you to the input group, log out and back in once. Minimal systems may need curl first (sudo apt install curl on Debian and Ubuntu). Coming from 0.4.4? Run the same line again; Upgrading from 0.4.4 has the details.
| Path | How |
|---|---|
| Debian / Ubuntu package | Download the .deb from the release, then sudo apt install ./juhradial-mx_*.deb |
| Fedora package | Download the .rpm from the release, then sudo dnf install ./juhradial-mx-*.rpm |
| Arch Linux | Build packaging/arch/PKGBUILD with makepkg -si (not on the AUR yet) |
| NixOS module | Add the flake input, import juhradial-mx.nixosModules.default and set services.juhradial-mx.enable = true; |
| From source | Clone the repository, build daemon/ with Cargo, then run scripts/juhradial-mx.sh |
| Flatpak | An experimental manifest; not published |
The .deb and .rpm install the program, udev rules and user service, but not the per-user setup the installer does. After installing one, add yourself to the input group (sudo usermod -aG input $USER), log out and back in, run systemctl --user enable --now juhradialmx-daemon, then start juhradial-mx. GNOME needs the cursor helper extension, which only the one-line installer sets up, so GNOME users should prefer the installer. The installation guide covers requirements, manual setup per distro and NixOS.
[!NOTE] This is JuhRadial MX 0.4.5 Beta 3 (
0.4.5-beta.3). The release is feature complete: a redesigned Settings app, MX Keypad and MX Keys S support, and a long list of fixes. It is marked beta because so much is new, and we want it tested on more hardware and desktops before the stable 0.4.5. If something breaks or feels wrong, please open an issue with your distro, desktop, device and connection (Bolt, Unifying or Bluetooth). Devices → Copy diagnostics in Settings copies the details and the last service log lines for you. Ideas and questions are welcome in Discussions.
Added
.deb and .rpm downloads, install.sh --user for Bazzite and Fedora Atomic (#138), a NixOS module (#9) and a native radial menu on niri (#22).Improved
Fixed
The full list, with credits and issue links, is in the changelog.
JuhRadial MX is a native Linux companion for Logitech MX devices. A small Rust daemon talks HID++ to the hardware, a PyQt6 overlay draws the radial menu at your cursor, and the new Qt/QML Settings app configures everything: buttons, gestures, haptics, scrolling, per-app profiles, Easy-Switch, the MX Keypad's display keys and the MX Keys S backlight. The MX Master 4 gets the full feature set, including its haptic motor; the MX Master 3S and 3 use every control they expose, and most other mice can use generic mode for extra-button remapping.
plugin.json adds actions to the slice picker. See the plugins guide.The full list, with credits and issue links, is in the changelog.
| Device | Support |
|---|---|
| Logitech MX Master 4 | Primary target: HID++ controls, Actions Ring, remapping, directional gestures, Easy-Switch, live state and haptics. |
| Logitech MX Master 3S / 3 | Everything above except haptics (these mice have no haptic motor), with their own product photo and button layout. |
| Logitech MX Keypad (USB) | Display keys, pages, app profiles, folders and packs. |
| Logitech MX Keys S | Battery, backlight, Easy-Switch follow and key remapping, opt-in and in beta. |
| Other Logitech HID++ mice | The controls the mouse reports can be assigned (for example the side buttons of an MX Anywhere). Not every model has been tested. |
| Most other mice | Generic evdev mode for extra-button radial input and remapping. |
Bolt, Unifying and Bluetooth connections are supported, including two receivers on one machine.
| Desktop | Menu placement | Per-app profiles and app-switch haptics |
|---|---|---|
| KDE Plasma 6 | KWin script | All apps |
| GNOME 45 to 51 | Cursor helper extension (installed by the one-line installer) | XWayland apps only |
| Hyprland | IPC socket | All apps |
| COSMIC | XWayland | XWayland apps only |
| sway / wlroots | XWayland | XWayland apps only |
| niri | Native layer-shell surface with gtk4-layer-shell, otherwise XWayland through xwayland-satellite | XWayland apps only |
| X11 (any desktop) | XQueryPointer | All apps |
Known limits, workarounds and what is being worked on
--ozone-platform=x11 for Chromium and Electron apps or QT_QPA_PLATFORM=xcb for Qt apps. Being worked on: reading the focused window through the desktops' own interfaces (the GNOME helper extension, sway and niri IPC).gtk4-layer-shell. The installer adds gtk4-layer-shell wherever the distro packages it, and the menu then opens at the pointer. Workaround where it is not packaged (for example openSUSE's default repositories): run xwayland-satellite.~/.config/juhradial/config.json. Being worked on: the new Settings app on older Qt versions.See compositor support for the details per desktop.
cp -r ~/.config/juhradial ~/juhradial-backup.--user if you installed that way). Your configuration is kept; new settings start at their defaults.JUHRADIAL_SETTINGS=gtk juhradial-settings forces it.Settings writes everything to:
~/.config/juhradial/config.json
The daemon reloads it when Settings saves, so there is nothing to restart. The same backup that Settings makes is available from the command line:
juhradiald --export ~/juhradial-backup.zip
juhradiald --import ~/juhradial-backup.zip
| Guide | What it covers |
|---|---|
| Documentation home | Overview and page index |
| Installation | Installer steps, user mode, manual setup, NixOS, updating |
| Features | What each feature does |
| Configuration | config.json keys and defaults |
| Plugins | Writing a plugin, with examples in examples/plugins |
| Compositor support | Per-desktop behaviour and Hyprland rules |
| Troubleshooting | Service, permissions, compositor and device diagnostics |
| FAQ | Common questions |
Settings is available in English and 18 more languages: Arabic, Chinese (Simplified), Dutch, French, German, Hindi, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese (Brazil), Russian, Spanish, Swedish, Thai, Turkish and Ukrainian. It follows your desktop's language by default; Settings → Language picks another one. Corrections from native speakers are welcome as issues or pull requests.
JuhFlow moves the cursor and clipboard between Linux and macOS over the local network, with no cloud account or relay.
| Area | Status |
|---|---|
| Linux | Built in; turn on Flow in Settings and approve the other computer there. |
| macOS | Download JuhFlow.dmg, then follow the runtime setup in juhflow/README.md. |
| Network and security | Local UDP discovery with X25519 key agreement and AES-256-GCM encrypted control and clipboard payloads. Only computers you approve (their key fingerprint is pinned) get the clipboard or the cursor. |
| Windows | Companion support is planned. |
[!WARNING] The checked-in macOS disk image is not a standalone installer. Its GUI launches
~/Downloads/juhflow/.venv/bin/python3and~/Downloads/juhflow/juhflow_app.pyat fixed paths. Place the engine and virtual environment there, or run the Python CLI directly. Runtime dependencies are described in juhflow/README.md, includingcryptography, PyObjC, andblueutil. Easy-Switch automation also expects the Logi Options+ agent.
[!IMPORTANT] If JuhRadial MX is closed while JuhFlow is connected, restart JuhFlow on macOS and reconnect.
| Problem | Resolution |
|---|---|
| Menu does not appear | Check the daemon with systemctl --user status juhradialmx-daemon, or restart it from the desktop launcher. |
| Menu opens at the top-left on GNOME | Log out and back in to load the cursor helper, or run gnome-extensions enable juhradial-cursor@dev.juhlabs.com. |
| Mouse, keypad or keyboard is not detected | Check that your user is in the input group and that the udev rules are installed, then log out and back in. |
| Settings opens the old GTK window | Your Qt is older than 6.9. Install PyQt6 6.9 or newer, or keep using the GTK app. |
| Menu is hidden on Hyprland | Add the rules from the compositor support guide. |
| Build fails | Install the development packages for your distro, including hidapi-devel and dbus-devel on Fedora-family systems. |
Settings → Settings has a troubleshooting card with the service and overlay status, a restart button, the log and Report a bug. For verbose daemon output:
journalctl --user -u juhradialmx-daemon -f
See the troubleshooting guide for more.
Stop user services before deleting installed files. The daemon and overlay run as the current user, so the user-service, autostart, and configuration steps do not require root. Files under /usr/local, /usr/share, and /etc do.
[!CAUTION] Removing
~/.config/juhradialdeletes themes, button maps, macros, profiles, keypad pages, and Flow pairing state.
# 1. Stop and disable the JuhRadial user service
systemctl --user disable --now juhradialmx-daemon.service
rm -f ~/.config/systemd/user/juhradialmx-daemon.service
# Only run these two lines if JuhRadial created this user unit
systemctl --user disable --now ydotoold.service
rm -f ~/.config/systemd/user/ydotoold.service
systemctl --user daemon-reload
# 2. Remove the autostart entry
rm -f ~/.config/autostart/juhradial-mx.desktop
# 3. Remove binaries, assets, desktop entries, and the icon
sudo rm -f /usr/local/bin/juhradiald \
/usr/local/bin/juhradial-mx \
/usr/local/bin/juhradial-settings
sudo rm -rf /usr/share/juhradial /opt/juhradial-mx
sudo rm -f /usr/share/applications/juhradial-mx.desktop \
/usr/share/applications/org.kde.juhradialmx.settings.desktop \
/usr/share/icons/hicolor/scalable/apps/juhradial-mx.svg
# 4. Remove udev rules and uinput module configuration, then reload
sudo rm -f /etc/udev/rules.d/99-juhradialmx.rules \
/etc/udev/rules.d/60-ydotool-uinput.rules \
/etc/modules-load.d/juhradial-uinput.conf
sudo udevadm control --reload-rules && sudo udevadm trigger
# 5. Remove user configuration
rm -rf ~/.config/juhradial
GNOME users should also disable and remove the cursor helper:
gnome-extensions disable juhradial-cursor@dev.juhlabs.com
rm -rf ~/.local/share/gnome-shell/extensions/juhradial-cursor@dev.juhlabs.com
Hyprland users should remove the JuhRadial MX rules block added under ~/.config/hypr/, typically ~/.config/hypr/juhradial-rules.conf or a section in hyprland.conf.
A user-mode install (--user) is removed with the steps in the installation guide. Packages are removed with your package manager.
| Component | Role |
|---|---|
daemon/ | Rust HID++, evdev, D-Bus, device-state, keypad and cursor-detection service (juhradiald) |
crates/mx-keypad/ | MX Keypad protocol crate (MIT or Apache-2.0) |
overlay/ | PyQt6 radial menu, Linux Flow engine, and the GTK settings app kept as a fallback |
settings-qt/ | Qt/QML Settings app |
gnome-extension/ | GNOME Wayland cursor-position helper |
juhflow/ | Swift and Python macOS companion |
packaging/ | Desktop integration, systemd, udev, Debian, RPM, Arch, Nix and Flatpak manifests |
See docs/architecture.md for the component boundaries and data flow.
Contributions are welcome: code, translations, hardware reports and testing on desktops we do not run every day. Read CONTRIBUTING.md for the development setup and pull request guidelines.
Everyone taking part is expected to follow the Code of Conduct.
Please report security issues privately as described in the security policy, not in public issues.
JuhRadial MX is maintained by JuhLabs with co-maintainer @gcarmin, who designed and built the application picker (#117, #118), the app-switch, monitor-switch and submenu haptics (#119, #120, #122), the adjustable ring size (#137) and the MX Master 3/3S layout with real device names (#136), and diagnosed the Bluetooth reconnect loop (#124).
Thanks to everyone who contributed to this release:
Every contribution is credited where it landed in the changelog.
JuhRadial MX is licensed under the GNU General Public License v3.0. The crates/mx-keypad protocol crate is available under MIT or Apache-2.0.
If JuhRadial MX is useful to you, a star helps other Linux users find the project.
JuhRadial MX is not affiliated with, endorsed by, or associated with Logitech. Logitech, MX Master, MX Keys, MX Keypad, Logi Options+, and related names are trademarks of Logitech International S.A. Distribution names and logos belong to their respective projects and appear only to say where JuhRadial MX runs. This is an independent, community-built open-source project.
Maintained by JuhLabs
Report a bug
·
Request a feature
·
Discussions
Python
47.9%
Rust
33.2%
QML
15.5%
Shell
2.2%
JuhRadial MX 🖱️🖥️ is an alternative for the missing Logi Options + for Linux | a beautiful radial menu for Logitech MX Master mice (KDE Plasma 6, Hyprland, Wayland) - Now also supporting the new MX Keypad.
See the code
Open-source Linux control for Logitech MX Master mice, the MX Keypad and the MX Keys S.
Radial actions, button remapping, per-app profiles, MX Master 4 haptics, display keys, Easy-Switch and cross-computer control, on Wayland and X11.
Paste one line into a terminal as your normal user (not with sudo). The installer finds your distro, shows what it will change, and asks for sudo only for packages and system paths. It runs on these distributions and their derivatives:
curl -fsSL https://raw.githubusercontent.com/JuhLabs/juhradial-mx/master/install.sh | bash
Image-based systems install under ~/.local; sudo is used only for the udev rules, uinput and the input group (add --yes to skip the questions):
curl -fsSL https://raw.githubusercontent.com/JuhLabs/juhradial-mx/master/install.sh | bash -s -- --user
Try it without installing (the NixOS module is under Other ways to install):
nix run github:JuhLabs/juhradial-mx
If the installer adds you to the input group, log out and back in once. Minimal systems may need curl first (sudo apt install curl on Debian and Ubuntu). Coming from 0.4.4? Run the same line again; Upgrading from 0.4.4 has the details.
| Path | How |
|---|---|
| Debian / Ubuntu package | Download the .deb from the release, then sudo apt install ./juhradial-mx_*.deb |
| Fedora package | Download the .rpm from the release, then sudo dnf install ./juhradial-mx-*.rpm |
| Arch Linux | Build packaging/arch/PKGBUILD with makepkg -si (not on the AUR yet) |
| NixOS module | Add the flake input, import juhradial-mx.nixosModules.default and set services.juhradial-mx.enable = true; |
| From source | Clone the repository, build daemon/ with Cargo, then run scripts/juhradial-mx.sh |
| Flatpak | An experimental manifest; not published |
The .deb and .rpm install the program, udev rules and user service, but not the per-user setup the installer does. After installing one, add yourself to the input group (sudo usermod -aG input $USER), log out and back in, run systemctl --user enable --now juhradialmx-daemon, then start juhradial-mx. GNOME needs the cursor helper extension, which only the one-line installer sets up, so GNOME users should prefer the installer. The installation guide covers requirements, manual setup per distro and NixOS.
[!NOTE] This is JuhRadial MX 0.4.5 Beta 3 (
0.4.5-beta.3). The release is feature complete: a redesigned Settings app, MX Keypad and MX Keys S support, and a long list of fixes. It is marked beta because so much is new, and we want it tested on more hardware and desktops before the stable 0.4.5. If something breaks or feels wrong, please open an issue with your distro, desktop, device and connection (Bolt, Unifying or Bluetooth). Devices → Copy diagnostics in Settings copies the details and the last service log lines for you. Ideas and questions are welcome in Discussions.
Added
.deb and .rpm downloads, install.sh --user for Bazzite and Fedora Atomic (#138), a NixOS module (#9) and a native radial menu on niri (#22).Improved
Fixed
The full list, with credits and issue links, is in the changelog.
JuhRadial MX is a native Linux companion for Logitech MX devices. A small Rust daemon talks HID++ to the hardware, a PyQt6 overlay draws the radial menu at your cursor, and the new Qt/QML Settings app configures everything: buttons, gestures, haptics, scrolling, per-app profiles, Easy-Switch, the MX Keypad's display keys and the MX Keys S backlight. The MX Master 4 gets the full feature set, including its haptic motor; the MX Master 3S and 3 use every control they expose, and most other mice can use generic mode for extra-button remapping.
plugin.json adds actions to the slice picker. See the plugins guide.The full list, with credits and issue links, is in the changelog.
| Device | Support |
|---|---|
| Logitech MX Master 4 | Primary target: HID++ controls, Actions Ring, remapping, directional gestures, Easy-Switch, live state and haptics. |
| Logitech MX Master 3S / 3 | Everything above except haptics (these mice have no haptic motor), with their own product photo and button layout. |
| Logitech MX Keypad (USB) | Display keys, pages, app profiles, folders and packs. |
| Logitech MX Keys S | Battery, backlight, Easy-Switch follow and key remapping, opt-in and in beta. |
| Other Logitech HID++ mice | The controls the mouse reports can be assigned (for example the side buttons of an MX Anywhere). Not every model has been tested. |
| Most other mice | Generic evdev mode for extra-button radial input and remapping. |
Bolt, Unifying and Bluetooth connections are supported, including two receivers on one machine.
| Desktop | Menu placement | Per-app profiles and app-switch haptics |
|---|---|---|
| KDE Plasma 6 | KWin script | All apps |
| GNOME 45 to 51 | Cursor helper extension (installed by the one-line installer) | XWayland apps only |
| Hyprland | IPC socket | All apps |
| COSMIC | XWayland | XWayland apps only |
| sway / wlroots | XWayland | XWayland apps only |
| niri | Native layer-shell surface with gtk4-layer-shell, otherwise XWayland through xwayland-satellite | XWayland apps only |
| X11 (any desktop) | XQueryPointer | All apps |
Known limits, workarounds and what is being worked on
--ozone-platform=x11 for Chromium and Electron apps or QT_QPA_PLATFORM=xcb for Qt apps. Being worked on: reading the focused window through the desktops' own interfaces (the GNOME helper extension, sway and niri IPC).gtk4-layer-shell. The installer adds gtk4-layer-shell wherever the distro packages it, and the menu then opens at the pointer. Workaround where it is not packaged (for example openSUSE's default repositories): run xwayland-satellite.~/.config/juhradial/config.json. Being worked on: the new Settings app on older Qt versions.See compositor support for the details per desktop.
cp -r ~/.config/juhradial ~/juhradial-backup.--user if you installed that way). Your configuration is kept; new settings start at their defaults.JUHRADIAL_SETTINGS=gtk juhradial-settings forces it.Settings writes everything to:
~/.config/juhradial/config.json
The daemon reloads it when Settings saves, so there is nothing to restart. The same backup that Settings makes is available from the command line:
juhradiald --export ~/juhradial-backup.zip
juhradiald --import ~/juhradial-backup.zip
| Guide | What it covers |
|---|---|
| Documentation home | Overview and page index |
| Installation | Installer steps, user mode, manual setup, NixOS, updating |
| Features | What each feature does |
| Configuration | config.json keys and defaults |
| Plugins | Writing a plugin, with examples in examples/plugins |
| Compositor support | Per-desktop behaviour and Hyprland rules |
| Troubleshooting | Service, permissions, compositor and device diagnostics |
| FAQ | Common questions |
Settings is available in English and 18 more languages: Arabic, Chinese (Simplified), Dutch, French, German, Hindi, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese (Brazil), Russian, Spanish, Swedish, Thai, Turkish and Ukrainian. It follows your desktop's language by default; Settings → Language picks another one. Corrections from native speakers are welcome as issues or pull requests.
JuhFlow moves the cursor and clipboard between Linux and macOS over the local network, with no cloud account or relay.
| Area | Status |
|---|---|
| Linux | Built in; turn on Flow in Settings and approve the other computer there. |
| macOS | Download JuhFlow.dmg, then follow the runtime setup in juhflow/README.md. |
| Network and security | Local UDP discovery with X25519 key agreement and AES-256-GCM encrypted control and clipboard payloads. Only computers you approve (their key fingerprint is pinned) get the clipboard or the cursor. |
| Windows | Companion support is planned. |
[!WARNING] The checked-in macOS disk image is not a standalone installer. Its GUI launches
~/Downloads/juhflow/.venv/bin/python3and~/Downloads/juhflow/juhflow_app.pyat fixed paths. Place the engine and virtual environment there, or run the Python CLI directly. Runtime dependencies are described in juhflow/README.md, includingcryptography, PyObjC, andblueutil. Easy-Switch automation also expects the Logi Options+ agent.
[!IMPORTANT] If JuhRadial MX is closed while JuhFlow is connected, restart JuhFlow on macOS and reconnect.
| Problem | Resolution |
|---|---|
| Menu does not appear | Check the daemon with systemctl --user status juhradialmx-daemon, or restart it from the desktop launcher. |
| Menu opens at the top-left on GNOME | Log out and back in to load the cursor helper, or run gnome-extensions enable juhradial-cursor@dev.juhlabs.com. |
| Mouse, keypad or keyboard is not detected | Check that your user is in the input group and that the udev rules are installed, then log out and back in. |
| Settings opens the old GTK window | Your Qt is older than 6.9. Install PyQt6 6.9 or newer, or keep using the GTK app. |
| Menu is hidden on Hyprland | Add the rules from the compositor support guide. |
| Build fails | Install the development packages for your distro, including hidapi-devel and dbus-devel on Fedora-family systems. |
Settings → Settings has a troubleshooting card with the service and overlay status, a restart button, the log and Report a bug. For verbose daemon output:
journalctl --user -u juhradialmx-daemon -f
See the troubleshooting guide for more.
Stop user services before deleting installed files. The daemon and overlay run as the current user, so the user-service, autostart, and configuration steps do not require root. Files under /usr/local, /usr/share, and /etc do.
[!CAUTION] Removing
~/.config/juhradialdeletes themes, button maps, macros, profiles, keypad pages, and Flow pairing state.
# 1. Stop and disable the JuhRadial user service
systemctl --user disable --now juhradialmx-daemon.service
rm -f ~/.config/systemd/user/juhradialmx-daemon.service
# Only run these two lines if JuhRadial created this user unit
systemctl --user disable --now ydotoold.service
rm -f ~/.config/systemd/user/ydotoold.service
systemctl --user daemon-reload
# 2. Remove the autostart entry
rm -f ~/.config/autostart/juhradial-mx.desktop
# 3. Remove binaries, assets, desktop entries, and the icon
sudo rm -f /usr/local/bin/juhradiald \
/usr/local/bin/juhradial-mx \
/usr/local/bin/juhradial-settings
sudo rm -rf /usr/share/juhradial /opt/juhradial-mx
sudo rm -f /usr/share/applications/juhradial-mx.desktop \
/usr/share/applications/org.kde.juhradialmx.settings.desktop \
/usr/share/icons/hicolor/scalable/apps/juhradial-mx.svg
# 4. Remove udev rules and uinput module configuration, then reload
sudo rm -f /etc/udev/rules.d/99-juhradialmx.rules \
/etc/udev/rules.d/60-ydotool-uinput.rules \
/etc/modules-load.d/juhradial-uinput.conf
sudo udevadm control --reload-rules && sudo udevadm trigger
# 5. Remove user configuration
rm -rf ~/.config/juhradial
GNOME users should also disable and remove the cursor helper:
gnome-extensions disable juhradial-cursor@dev.juhlabs.com
rm -rf ~/.local/share/gnome-shell/extensions/juhradial-cursor@dev.juhlabs.com
Hyprland users should remove the JuhRadial MX rules block added under ~/.config/hypr/, typically ~/.config/hypr/juhradial-rules.conf or a section in hyprland.conf.
A user-mode install (--user) is removed with the steps in the installation guide. Packages are removed with your package manager.
| Component | Role |
|---|---|
daemon/ | Rust HID++, evdev, D-Bus, device-state, keypad and cursor-detection service (juhradiald) |
crates/mx-keypad/ | MX Keypad protocol crate (MIT or Apache-2.0) |
overlay/ | PyQt6 radial menu, Linux Flow engine, and the GTK settings app kept as a fallback |
settings-qt/ | Qt/QML Settings app |
gnome-extension/ | GNOME Wayland cursor-position helper |
juhflow/ | Swift and Python macOS companion |
packaging/ | Desktop integration, systemd, udev, Debian, RPM, Arch, Nix and Flatpak manifests |
See docs/architecture.md for the component boundaries and data flow.
Contributions are welcome: code, translations, hardware reports and testing on desktops we do not run every day. Read CONTRIBUTING.md for the development setup and pull request guidelines.
Everyone taking part is expected to follow the Code of Conduct.
Please report security issues privately as described in the security policy, not in public issues.
JuhRadial MX is maintained by JuhLabs with co-maintainer @gcarmin, who designed and built the application picker (#117, #118), the app-switch, monitor-switch and submenu haptics (#119, #120, #122), the adjustable ring size (#137) and the MX Master 3/3S layout with real device names (#136), and diagnosed the Bluetooth reconnect loop (#124).
Thanks to everyone who contributed to this release:
Every contribution is credited where it landed in the changelog.
JuhRadial MX is licensed under the GNU General Public License v3.0. The crates/mx-keypad protocol crate is available under MIT or Apache-2.0.
If JuhRadial MX is useful to you, a star helps other Linux users find the project.
JuhRadial MX is not affiliated with, endorsed by, or associated with Logitech. Logitech, MX Master, MX Keys, MX Keypad, Logi Options+, and related names are trademarks of Logitech International S.A. Distribution names and logos belong to their respective projects and appear only to say where JuhRadial MX runs. This is an independent, community-built open-source project.
Maintained by JuhLabs
Report a bug
·
Request a feature
·
Discussions
Python
47.9%
Rust
33.2%
QML
15.5%
Shell
2.2%