I built a native Logitech Options+ clone for Linux

Posted by minamibrahim@reddit | linux | View on Reddit | 222 comments

I built a native Logitech Options+ clone for Linux

Like many of you, I've been waiting for Logitech to bring Options+ to Linux. Got tired of waiting.

First off — massive respect to the **Solaar** and **logiops** teams. They paved the way by reverse-engineering HID++ and have been the backbone of Logitech support on Linux for years. I wouldn't have gotten anywhere without their work.

That said, after daily-driving both with my MX Master 3S, I kept running into the same frustrations:

**Solaar** is solid for monitoring and basic config, but there's no per-app profile switching — I couldn't get my DPI/buttons to automatically change when switching between Firefox and my terminal. The gesture button and thumb wheel modes are also pretty limited in what you can configure through the UI.

**logid** is powerful but runs as a system daemon that kept stepping on KDE's toes. Spent way too many hours debugging why my zoom and volume were fighting each other (spoiler: logid and Plasma were both grabbing the same button events). And editing YAML configs for every button combo gets old fast.

What I really wanted was just... Options+. On Linux. Click a button on the mouse, pick what it does, done. With profiles that switch when I alt-tab between apps.

So I built **Logitune**.

It's a Qt6 desktop app that talks directly to HID++ 2.0 over hidraw. No daemon sitting in the background, no config files — just a normal app with a tray icon.

**The highlights:**

- **Per-app profiles** that switch automatically on window focus (KDE Plasma 6 + GNOME 42+ Wayland)

- **Visual config** — clickable mouse render with hotspots, like Options+

- **Gestures** — hold + swipe for 5 actions per profile

- **Thumb wheel** — horizontal scroll, zoom, or volume, per app

- **DPI, SmartShift, hi-res scroll** — all the usual stuff

- **Bolt + Bluetooth** with automatic failover between them

- **No daemon, no root** — just a regular app

Right now it supports the **MX Master 3S**. The app has a modular design — each device is self-contained with its own descriptor, images, and button mappings. Adding support for a new mouse is straightforward if you have the hardware to test with. There's a [step-by-step guide in the wiki](https://github.com/mmaher88/logitune/wiki/Adding-a-Device) if you want to contribute.

**Install:**

- **Arch:** `yay -S logitune`

- **Ubuntu 24.04 / Fedora 42:** OBS repo (one-liner in the README)

- **From source:** cmake + Qt6

**GitHub:** https://github.com/mmaher88/logitune

Happy to answer questions — there's also a [wiki](https://github.com/mmaher88/logitune/wiki) with architecture docs and HID++ protocol deep-dives if you're curious how it all works under the hood.

*PS: This is pretty new so expect some hiccups — please post issues on GitHub with logs attached.*