Thanks to visit codestin.com
Credit goes to github.com

Skip to content

πŸ–±οΈπŸ–₯️JuhRadial MX is a Logi Options+ alternative for Linux - a beautiful radial menu for Logitech MX Master mice (KDE Plasma 6, Hyprland, Wayland)

License

Notifications You must be signed in to change notification settings

JuhLabs/juhradial-mx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

76 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
JuhRadial MX Logo

JuhRadial MX

Beautiful radial menu for Logitech MX Master mice on Linux

A Logi Options+ inspired experience β€” works on GNOME, KDE Plasma, Hyprland, COSMIC & more

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


JuhRadial MX Banner

Tip

New in v0.2.9: GNOME Wayland & COSMIC desktop support, multi-monitor HiDPI fixes, 7-level cursor fallback chain. If you change language I suggest a quick restart of JuhRadial. Update now.

Screenshots

Radial Menu
Radial Menu
3D Radial Wheel
3D Neon
3D Radial Wheel
3D Blossom
Settings Dashboard
Settings Dashboard
Settings - DPI & Scroll
DPI & Scroll Configuration

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.

AI Quick Access

Submenu with Claude, ChatGPT, Gemini, and Perplexity. Launch your favorite AI assistant with a single gesture.

Settings Dashboard

Modern GTK4/Adwaita settings app with Actions Ring configuration, theme picker, DPI control, and Easy-Switch device management.

Multi-Device

Easy-Switch host switching with real-time paired device names via HID++. Auto-restarts on device reconnect.
Multiple Themes β€” JuhRadial MX, Catppuccin, Nord, Dracula, Solarized, and more
Flow β€” Multi-computer control with clipboard sync
Battery Monitoring β€” Real-time status with instant charging detection via HID++
DPI Control β€” Visual DPI adjustment (400-8000 DPI)
Native Wayland β€” GNOME, KDE Plasma 6, Hyprland, COSMIC, Sway & more
Multi-Monitor β€” Correct cursor positioning across 1-4+ monitors with HiDPI

Supported Platforms

Desktop Environment Cursor Detection Status
GNOME (Ubuntu, Fedora, Pop!_OS) Shell extension D-Bus Fully supported
KDE Plasma 6 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, and derivatives. The installer auto-detects your distro and package manager.

Supported Devices

MX Master Logitech MX Master 4 β€” Fully supported
Logitech MX Master 3S β€” Fully supported
Logitech MX Master 3 β€” Fully supported

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 logiops 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. Configure logiops (maps haptic button to F19)
sudo cp packaging/logid.cfg /etc/logid.cfg
sudo systemctl enable --now logid

# 4. Run
./juhradial-mx.sh
Manual Install β€” Arch Linux
# 1. Install dependencies
sudo pacman -S rust python-pyqt6 qt6-svg python-gobject gtk4 libadwaita
yay -S logiops  # or paru -S logiops

# 2. Clone and build
git clone https://github.com/JuhLabs/juhradial-mx.git
cd juhradial-mx
cd daemon && cargo build --release && cd ..

# 3. Configure logiops
sudo cp packaging/logid.cfg /etc/logid.cfg
sudo systemctl enable --now logid

# 4. Run
./juhradial-mx.sh
Requirements
  • Wayland compositor (GNOME, KDE Plasma 6, Hyprland, COSMIC, Sway) or X11
  • logiops (logid) for button mapping
  • Rust (for building the daemon)
  • Python 3 with PyQt6 and GTK4/Adwaita
  • XWayland (for overlay window positioning on Wayland)

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

# Add to KDE autostart
cp juhradial-mx.desktop ~/.config/autostart/
sed -i "s|Exec=.*|Exec=$(pwd)/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)$

These rules ensure the radial menu overlay appears correctly on all workspaces without animations or decorations.

Troubleshooting

Problem Solution
Menu doesn't appear Check logid: sudo systemctl status logid
Menu at top-left corner Log out/in to load GNOME extension, or run gnome-extensions enable [email protected]
Mouse not detected Should auto-recover (udev restarts logid). Manual fix: sudo systemctl restart logid
Build fails Install dev packages: hidapi-devel, dbus-devel
Hyprland: Menu hidden Add window rules from Hyprland Setup section above
GNOME: Extension not loading Requires session restart (log out/in) on Wayland
Debug Mode
# Run daemon with verbose output
./daemon/target/release/juhradiald --verbose

How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     D-Bus      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    PyQt6     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Logitech MX β”‚ ──── logid ──→ β”‚  juhradiald       β”‚ ──────────→ β”‚  Radial Menu β”‚
β”‚  Master      β”‚   (F19 key)    β”‚  (Rust daemon)    β”‚  overlay    β”‚  (8 segments)β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β”‚                    β”‚             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚  Cursor Detection: β”‚
                                β”‚  Hyprland IPC      β”‚             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                β”‚  KWin D-Bus        β”‚ ──────────→ β”‚  Settings    β”‚
                                β”‚  GNOME Extension   β”‚   GTK4      β”‚  (Adwaita)   β”‚
                                β”‚  XWayland          β”‚             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚  xdotool           β”‚
                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Project Structure

juhradial-mx/
β”œβ”€β”€ daemon/              # Rust daemon (HID++ listener, D-Bus, cursor detection)
β”‚   └── src/cursor.rs    # 7-level cursor fallback chain
β”œβ”€β”€ overlay/             # Python UI
β”‚   β”œβ”€β”€ juhradial-overlay.py   # Main overlay entry point
β”‚   β”œβ”€β”€ overlay_cursor.py      # Multi-compositor cursor detection
β”‚   β”œβ”€β”€ overlay_actions.py     # Radial menu actions & themes
β”‚   β”œβ”€β”€ overlay_painting.py    # Qt rendering & animations
β”‚   └── settings_*.py          # GTK4/Adwaita settings app
β”œβ”€β”€ gnome-extension/     # GNOME Shell cursor helper extension
β”œβ”€β”€ assets/              # Icons, themes, and screenshots
└── packaging/           # logid.cfg, systemd, udev rules

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

License

GNU General Public License v3.0 β€” see LICENSE

Acknowledgments

  • logiops β€” Logitech device configuration
  • logitech-flow-kvm by Adam Coddington β€” Flow multi-computer control inspiration
  • Catppuccin β€” Beautiful color scheme

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.




Made with love by JuhLabs

Report Bug Β· Request Feature Β· Discussions

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

No packages published

Contributors 4

  •  
  •  
  •  
  •