mmaher88/logitune

Configure Logitech devices on Linux (Options+ clone)

C++

667

427 commits

updated Jul 31, 2026

See the code

README

Logitune

A Linux configurator for Logitech peripherals — per-application profiles, gesture mapping, thumb wheel modes, and a dark-themed Qt Quick UI matching Logitech Options+.

CI License Qt C++ Device

Logitune — Buttons Page

✨ Features

  • 🖱️ Per-app profiles — automatic button/scroll/DPI switching on window focus
  • ⌨️ Button remapping — keystrokes, media controls, app launch, gestures, SmartShift toggle
  • 🎛️ Thumb wheel modes — volume, zoom, horizontal scroll with invert control
  • 👆 Gesture support — hold + swipe for desktop switching, task view, custom keystrokes
  • ⚡ DPI / SmartShift / Scroll — full control with live preview
  • 🔋 System tray — battery status, minimize to tray
  • 📡 HID++ 2.0 — direct communication via Bolt receiver, no daemon needed
  • 🔄 Disconnect/reconnect — automatic re-enumeration and profile reapplication
  • 🖥️ KDE + GNOME — native focus tracking on both desktops
  • 🛠️ In-app descriptor editor: launch with --edit to position hotspots, upload images, and tune labels without hand-editing JSON. Learn more

📸 Screenshots

Actions Panel
Action selection panel

More screenshots

Point & Scroll
Scroll, thumb wheel & pointer speed

Scroll Settings
Scroll direction, SmartShift, smooth scrolling

Easy-Switch
Easy-Switch channel management

Settings
Device info, dark mode, debug logging

🚀 Install

Ubuntu 24.04 (via OBS repo):

echo 'deb http://download.opensuse.org/repositories/home:/mmaher88:/logitune/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/logitune.list
wget -qO- https://download.opensuse.org/repositories/home:mmaher88:logitune/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/logitune.gpg > /dev/null
sudo apt update && sudo apt install logitune

Fedora 42 (via OBS repo):

sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:mmaher88:logitune/Fedora_42/home:mmaher88:logitune.repo
sudo dnf install logitune

Arch Linux (AUR):

yay -S logitune

From source:

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build
sudo cmake --install build
logitune

📚 Documentation

GuideDescription
🏁 Getting StartedInstallation, permissions, UI overview
🔨 BuildingPrerequisites, build commands, native packages, devcontainer
🏗️ ArchitectureSystem design, signal flow, 14 Mermaid diagrams
🖱️ Adding a DeviceStep-by-step guide with code examples
🖥️ Adding a Desktop EnvironmentKDE + GNOME implementation, adding new DEs
🧪 TestingPhilosophy, 4 test tiers, writing tests
📡 HID++ ProtocolReport format, features, Bolt receiver, async matching
🤝 ContributingWorkflow, code style, commit format

🖱️ Supported Devices

DeviceStatusBatteryDPISmartShiftThumb wheelButton remapGesturesSmooth scrollEasy-Switch
MX Master 2S✅ Verified✅✅✅✅✅✅✅✅
MX Master 3✅ Verified✅✅✅✅✅✅✅✅
MX Master 3S✅ Verified✅✅✅✅✅✅✅✅
MX Master 4✅ Verified✅✅✅✅✅✅—✅
MX Anywhere 3🧪 Beta✅✅✅—✅—✅✅
MX Anywhere 3 for Business🧪 Beta✅✅✅—✅—✅✅
MX Anywhere 3S🧪 Beta✅✅✅—✅—✅✅
MX Anywhere 3S for Business🧪 Beta✅✅✅—✅—✅✅
MX Vertical🧪 Beta✅✅——✅—✅✅
MX Vertical for Business🧪 Beta✅✅——✅—✅✅

MX Master 4 smooth scrolling is disabled in the shipped descriptor: the hardware does not respond correctly to the HID++ configuration used on MX Master 2S / 3S. Regular scroll wheel and SmartShift work normally; only sub-tick smoothing is unavailable. Re-enable yourself by setting "smoothScroll": true in devices/mx-master-4/descriptor.json if your unit behaves differently; if it works we will promote the default.

The four MX Anywhere family descriptors ship as 🧪 Beta pending hardware confirmation. Issue #46 tracks the verification.

Other Logitech HID++ 2.0 devices can be added by contributing a device descriptor. See Device Support Status for what the badges mean.

🖥️ Desktop Environment Support

FeatureKDE Plasma 6GNOME 42+ (Wayland)HyprlandOther DEs
Button remapping✅✅✅✅
Media controls✅✅✅✅
DPI / SmartShift / Scroll✅✅✅✅
Thumb wheel modes✅✅✅✅
Gesture actions✅✅✅✅
Per-app profiles✅✅✅❌
Auto profile switching✅✅✅❌
Block shortcuts during capture✅✅❌❌
System tray✅✅✅✅

Note: All device configuration (buttons, DPI, scroll, gestures, thumb wheel) works on every DE — it's pure HID++ over hidraw. Per-app profile switching requires desktop-specific focus tracking. KDE uses a KWin script, GNOME uses a Shell extension (auto-installed on first run), and Hyprland subscribes to the compositor's event socket. Hyprland has no stable compositor-wide shortcut-blocking API, so global bindings may still fire while capturing a keystroke — capture itself works. See Adding a Desktop Environment to contribute support for other DEs.

🛠️ Tech Stack

C++20 · Qt 6 Quick · CMake · HID++ 2.0 · GTest

📄 License

GPL-3.0-only

mmaher88/logitune

Configure Logitech devices on Linux (Options+ clone)

C++

667

427 commits

updated Jul 31, 2026

See the code

README

Logitune

A Linux configurator for Logitech peripherals — per-application profiles, gesture mapping, thumb wheel modes, and a dark-themed Qt Quick UI matching Logitech Options+.

CI License Qt C++ Device

Logitune — Buttons Page

✨ Features

  • 🖱️ Per-app profiles — automatic button/scroll/DPI switching on window focus
  • ⌨️ Button remapping — keystrokes, media controls, app launch, gestures, SmartShift toggle
  • 🎛️ Thumb wheel modes — volume, zoom, horizontal scroll with invert control
  • 👆 Gesture support — hold + swipe for desktop switching, task view, custom keystrokes
  • ⚡ DPI / SmartShift / Scroll — full control with live preview
  • 🔋 System tray — battery status, minimize to tray
  • 📡 HID++ 2.0 — direct communication via Bolt receiver, no daemon needed
  • 🔄 Disconnect/reconnect — automatic re-enumeration and profile reapplication
  • 🖥️ KDE + GNOME — native focus tracking on both desktops
  • 🛠️ In-app descriptor editor: launch with --edit to position hotspots, upload images, and tune labels without hand-editing JSON. Learn more

📸 Screenshots

Actions Panel
Action selection panel

More screenshots

Point & Scroll
Scroll, thumb wheel & pointer speed

Scroll Settings
Scroll direction, SmartShift, smooth scrolling

Easy-Switch
Easy-Switch channel management

Settings
Device info, dark mode, debug logging

🚀 Install

Ubuntu 24.04 (via OBS repo):

echo 'deb http://download.opensuse.org/repositories/home:/mmaher88:/logitune/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/logitune.list
wget -qO- https://download.opensuse.org/repositories/home:mmaher88:logitune/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/logitune.gpg > /dev/null
sudo apt update && sudo apt install logitune

Fedora 42 (via OBS repo):

sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:mmaher88:logitune/Fedora_42/home:mmaher88:logitune.repo
sudo dnf install logitune

Arch Linux (AUR):

yay -S logitune

From source:

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build
sudo cmake --install build
logitune

📚 Documentation

GuideDescription
🏁 Getting StartedInstallation, permissions, UI overview
🔨 BuildingPrerequisites, build commands, native packages, devcontainer
🏗️ ArchitectureSystem design, signal flow, 14 Mermaid diagrams
🖱️ Adding a DeviceStep-by-step guide with code examples
🖥️ Adding a Desktop EnvironmentKDE + GNOME implementation, adding new DEs
🧪 TestingPhilosophy, 4 test tiers, writing tests
📡 HID++ ProtocolReport format, features, Bolt receiver, async matching
🤝 ContributingWorkflow, code style, commit format

🖱️ Supported Devices

DeviceStatusBatteryDPISmartShiftThumb wheelButton remapGesturesSmooth scrollEasy-Switch
MX Master 2S✅ Verified✅✅✅✅✅✅✅✅
MX Master 3✅ Verified✅✅✅✅✅✅✅✅
MX Master 3S✅ Verified✅✅✅✅✅✅✅✅
MX Master 4✅ Verified✅✅✅✅✅✅—✅
MX Anywhere 3🧪 Beta✅✅✅—✅—✅✅
MX Anywhere 3 for Business🧪 Beta✅✅✅—✅—✅✅
MX Anywhere 3S🧪 Beta✅✅✅—✅—✅✅
MX Anywhere 3S for Business🧪 Beta✅✅✅—✅—✅✅
MX Vertical🧪 Beta✅✅——✅—✅✅
MX Vertical for Business🧪 Beta✅✅——✅—✅✅

MX Master 4 smooth scrolling is disabled in the shipped descriptor: the hardware does not respond correctly to the HID++ configuration used on MX Master 2S / 3S. Regular scroll wheel and SmartShift work normally; only sub-tick smoothing is unavailable. Re-enable yourself by setting "smoothScroll": true in devices/mx-master-4/descriptor.json if your unit behaves differently; if it works we will promote the default.

The four MX Anywhere family descriptors ship as 🧪 Beta pending hardware confirmation. Issue #46 tracks the verification.

Other Logitech HID++ 2.0 devices can be added by contributing a device descriptor. See Device Support Status for what the badges mean.

🖥️ Desktop Environment Support

FeatureKDE Plasma 6GNOME 42+ (Wayland)HyprlandOther DEs
Button remapping✅✅✅✅
Media controls✅✅✅✅
DPI / SmartShift / Scroll✅✅✅✅
Thumb wheel modes✅✅✅✅
Gesture actions✅✅✅✅
Per-app profiles✅✅✅❌
Auto profile switching✅✅✅❌
Block shortcuts during capture✅✅❌❌
System tray✅✅✅✅

Note: All device configuration (buttons, DPI, scroll, gestures, thumb wheel) works on every DE — it's pure HID++ over hidraw. Per-app profile switching requires desktop-specific focus tracking. KDE uses a KWin script, GNOME uses a Shell extension (auto-installed on first run), and Hyprland subscribes to the compositor's event socket. Hyprland has no stable compositor-wide shortcut-blocking API, so global bindings may still fire while capturing a keystroke — capture itself works. See Adding a Desktop Environment to contribute support for other DEs.

🛠️ Tech Stack

C++20 · Qt 6 Quick · CMake · HID++ 2.0 · GTest

📄 License

GPL-3.0-only

Significant stargazers

Kainoa Kanter

598 followers · starred Sep 2026

Lukas Kreussel

80 followers · starred Apr 2026

Federico Di Pierro

122 followers · starred Apr 2026

Dawid Dziurla

292 followers · starred Apr 2026