Skip to content

JuhLabs/juhradial-mx

JuhRadial MX Logo

JuhRadial MX

The ultimate Logitech MX Master experience on Linux

Radial menu, cross-computer Flow, DPI control, haptic feedback - all native on Wayland

Version 0.3.1-beta Build Status Security Scan License: GPL-3.0 GitHub Stars Open Issues


JuhRadial MX Banner

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.

Installation

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 | bash
Manual 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.sh
Manual 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.sh
Requirements
  • 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)

Screenshots

Radial Menu
Radial Menu
3D Radial Wheel
3D Neon
3D Radial Wheel
3D Blossom
Settings Dashboard
Settings Dashboard

Features

Radial Menu

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.

JuhFlow

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.

Settings Dashboard

Modern GTK4/Adwaita settings with macro editor, gaming mode, DPI/sensitivity controls, button remapping, theme picker, and Easy-Switch device management.

Multi-Device

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

JuhFlow - Cross-Computer Control

Move your cursor seamlessly between your Linux and Mac machines. Encrypted, peer-to-peer, no cloud.

JuhFlow

Download JuhFlow for macOS

Signed & notarized by Apple - install and run directly
  • 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.

Supported Platforms

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.

Supported Devices

MX Master 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)

Usage

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

Default Actions (clockwise from top)

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

Configuration is stored in ~/.config/juhradial/config.json.

Themes

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

Autostart

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.desktop

Hyprland Setup

Automatic: 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)$

Troubleshooting

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

Architecture

                                    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   |
                                 +------------------+

Project Structure

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

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

License

GNU General Public License v3.0 - see LICENSE

Star History

If you find JuhRadial MX useful, consider giving it a star - it helps others discover the project!


Disclaimer

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.


About

🖱️🖥️JuhRadial MX is a Logi Options+ alternative for Linux - a beautiful radial menu for Logitech MX Master mice (KDE Plasma 6, Hyprland, Wayland)

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors