The ultimate Logitech MX Master experience on Linux
Radial menu, cross-computer Flow, DPI control, haptic feedback - all native on Wayland
Tip
New in v0.3.1-beta: Macro system with visual timeline editor, gaming mode for any mouse, custom sidebar icons, splash screen, 53 new translations, removed logid dependency, and 30+ bug fixes including GNOME radial wheel persistence and multi-distro compatibility. Update now.
Mac users: Want to try JuhFlow cross-computer control? Download JuhFlow.dmg (signed & notarized) - install it on your Mac, then enable Flow in JuhRadial MX Settings on Linux. Both machines auto-discover each other on your local network.
Important
One-Line Install (Recommended) - Detects your distro, installs dependencies, builds from source, and configures everything.
curl -fsSL https://raw.githubusercontent.com/JuhLabs/juhradial-mx/master/install.sh | bashManual Install - Fedora
# 1. Install dependencies
sudo dnf install rust cargo python3-pyqt6 qt6-qtsvg \
python3-gobject gtk4 libadwaita dbus-devel hidapi-devel
# 2. Clone and build
git clone https://github.com/JuhLabs/juhradial-mx.git
cd juhradial-mx
cd daemon && cargo build --release && cd ..
# 3. Run
./scripts/juhradial-mx.shManual Install - Arch Linux
# 1. Install dependencies
sudo pacman -S rust python-pyqt6 qt6-svg python-gobject gtk4 libadwaita
# 2. Clone and build
git clone https://github.com/JuhLabs/juhradial-mx.git
cd juhradial-mx
cd daemon && cargo build --release && cd ..
# 3. Run
./scripts/juhradial-mx.shRequirements
- Wayland compositor (GNOME, KDE Plasma 6, Hyprland, COSMIC, Sway) or X11
- Rust (for building the daemon)
- Python 3 with PyQt6 and GTK4/Adwaita
- XWayland (for overlay window positioning on Wayland)
| Beautiful overlay triggered by gesture button - hold to drag-select or tap to keep open. Fully configurable 8-segment wheel with smooth animations and 3D themes. | Cross-computer control between Linux and Mac. Move your cursor across machines, share clipboard, all over encrypted connections (X25519 + AES-256-GCM). No cloud required. |
| Modern GTK4/Adwaita settings with macro editor, gaming mode, DPI/sensitivity controls, button remapping, theme picker, and Easy-Switch device management. | Easy-Switch host switching with real-time paired device names via HID++. Generic mouse mode supports any mouse with evdev. |
|
Macros - Key sequences, delays, text typing, WhileHolding loops Gaming Mode - Bind any mouse button to macros via evdev Battery Monitoring - Real-time status with instant charging detection via HID++ |
AI Quick Access - Claude, ChatGPT, Gemini, Perplexity in a submenu Native Wayland - GNOME, KDE Plasma 6, Hyprland, COSMIC, Sway & more Multiple Themes - JuhRadial MX, Catppuccin, Nord, Dracula, Solarized & more |
Move your cursor seamlessly between your Linux and Mac machines. Encrypted, peer-to-peer, no cloud.
- Linux side: Built into JuhRadial MX - just enable Flow in Settings
- Mac side: Download JuhFlow.dmg above, install, and pair
- Encrypted: X25519 key exchange + AES-256-GCM - all traffic is end-to-end encrypted
- Zero config: Auto-discovers peers on your local network
- Windows support: Coming soon
Note: If you quit JuhRadial MX while JuhFlow is connected, you'll need to restart JuhFlow on the Mac side and reconnect.
| Desktop Environment | Cursor Detection | Status |
|---|---|---|
| GNOME (Ubuntu, Fedora, Pop!_OS) | Shell extension D-Bus | Fully supported |
| KDE Plasma 6 (Kubuntu, Fedora KDE) | KWin scripting / D-Bus | Fully supported |
| Hyprland | IPC socket | Fully supported |
| COSMIC (Fedora, Pop!_OS) | XWayland sync | Fully supported |
| Sway / wlroots | XWayland fallback | Supported |
| X11 (any DE) | xdotool | Supported |
Distros: Fedora, Ubuntu/Debian, Arch/Manjaro, openSUSE, NixOS, and derivatives. The installer auto-detects your distro and package manager.
|
Logitech MX Master 4 - Full HID++ support Logitech MX Master 3S - Full HID++ support Logitech MX Master 3 - Full HID++ support Any mouse - Generic mode with evdev (radial menu + button remapping) |
Hold mode: Press and hold gesture button - drag to select - release to execute
Tap mode: Quick tap gesture button - menu stays open - click to select
| Position | Action |
|---|---|
| Top | Play/Pause |
| Top-Right | New Note |
| Right | Lock Screen |
| Bottom-Right | Settings |
| Bottom | Screenshot |
| Bottom-Left | Emoji Picker |
| Left | Files |
| Top-Left | AI (submenu) |
Configuration is stored in ~/.config/juhradial/config.json.
Open Settings and select a theme:
| Theme | Description |
|---|---|
| JuhRadial MX (default) | Premium dark theme with vibrant cyan accents |
| Catppuccin Mocha | Soothing pastel theme with lavender accents |
| Catppuccin Latte | Light pastel theme |
| Nord | Arctic, north-bluish palette |
| Dracula | Dark theme with vibrant colors |
| Solarized Light | Precision colors for machines and people |
| GitHub Light | Clean light theme |
The installer sets up autostart automatically. For manual setup:
cp packaging/juhradial-mx.desktop ~/.config/autostart/
sed -i "s|Exec=.*|Exec=$(pwd)/scripts/juhradial-mx.sh|" ~/.config/autostart/juhradial-mx.desktopAutomatic: The installer detects Hyprland and configures window rules automatically.
Manual Setup
Add these rules to your hyprland.conf or custom/rules.conf:
# JuhRadial MX overlay window rules
windowrulev2 = float, title:^(JuhRadial MX)$
windowrulev2 = noblur, title:^(JuhRadial MX)$
windowrulev2 = noborder, title:^(JuhRadial MX)$
windowrulev2 = noshadow, title:^(JuhRadial MX)$
windowrulev2 = pin, title:^(JuhRadial MX)$
windowrulev2 = noanim, title:^(JuhRadial MX)$
| Problem | Solution |
|---|---|
| Menu doesn't appear | Check daemon is running: pgrep juhradiald or restart via the desktop launcher |
| Menu at top-left corner | Log out/in to load GNOME extension, or run gnome-extensions enable juhradial-cursor@dev.juhlabs.com |
| Mouse not detected | Check HID permissions: ensure your user is in the input group |
| Build fails | Install dev packages: hidapi-devel, dbus-devel |
| Hyprland: Menu hidden | Add window rules from Hyprland Setup section above |
Debug Mode
# Run daemon with verbose output
./daemon/target/release/juhradiald --verbose JuhRadial MX
============
+--------------+ HID++ +------------------+ PyQt6 +--------------+
| Logitech MX | -- hidraw --> | juhradiald | -----------> | Radial Menu |
| Master | (native) | (Rust daemon) | overlay | (8 segments) |
+--------------+ | | +--------------+
| Cursor detection |
+--------------+ | - Hyprland IPC | +--------------+
| Any Mouse | -- evdev ---> | - KWin D-Bus | -----------> | Settings |
| (generic) | | - GNOME ext | GTK4 | (Adwaita) |
+--------------+ | - XWayland | +--------------+
+------------------+
|
JuhFlow (encrypted)
|
+------------------+
| Mac / Windows |
| companion app |
+------------------+
juhradial-mx/
+-- daemon/ # Rust daemon (HID++ listener, D-Bus, cursor detection)
+-- overlay/ # Python UI (overlay + GTK4 settings)
| +-- flow/ # JuhFlow multi-computer control
| +-- locales/ # Translations (19 languages)
+-- juhflow/ # JuhFlow Mac companion app (Swift + Python)
+-- gnome-extension/ # GNOME Shell cursor helper extension
+-- scripts/ # Launcher scripts
+-- packaging/ # Desktop files, Flatpak, RPM, Arch, systemd
+-- assets/ # Icons, themes, and screenshots
+-- tests/ # Test utilities
Contributions are welcome! See CONTRIBUTING.md for guidelines.
GNU General Public License v3.0 - see LICENSE
If you find JuhRadial MX useful, consider giving it a star - it helps others discover the project!
This project is not affiliated with, endorsed by, or associated with Logitech in any way. "Logitech", "MX Master", "Logi Options+", and related names are trademarks of Logitech International S.A. This is an independent, open-source project created by the community for the community.







