[!WARNING] OpenLogi is under active development and not yet stable β features and config may still change. Give the repo a Star β and Watch π it to get notified when a new release lands.
Options+ ? Try OpenLogi.
Remap buttons, drive DPI and SmartShift, and switch profiles per app β without a Logitech account, telemetry, or the official Options+ install. No cloud, plain TOML config. By default, device-image fetches are the only automatic network calls; update checks and downloads run only when you request or opt into them.
What it is
OpenLogi talks to Logitech HID++ peripherals over Logi Bolt and Unifying receivers, Bluetooth-direct connections, or USB cables β without running Logi Options+. It consists of three components:
- OpenLogi GUI β a GPUI desktop app: an interactive mouse diagram with clickable hotspots, a per-button action picker (built-in actions plus custom keyboard shortcuts authored in the TOML config), DPI presets, SmartShift, per-device scroll inversion, RGB keyboard lighting, per-application profiles, a live device carousel, and a Settings window localized into 20 languages.
- OpenLogi agent β the background service that owns the input hook and all device I/O. The GUI is a pure IPC client and starts the agent when needed.
- OpenLogi CLI β a CLI for headless inventory (
list) plus asset-sync and on-device diagnostic subcommands.
Everything stays local: bindings live in a plain TOML file, the agent remaps button presses through the OS input hook, and writes DPI, SmartShift, scroll, and lighting changes straight to the device over HID++.
macOS, Linux, and Windows are supported. Windows is the newest port: it has been validated end-to-end on Windows 11 hardware, but may still have more rough edges than the macOS and Linux builds; see Roadmap.
Beyond Options+
Things OpenLogi does that Options+ won't:
- Run on Linux. Options+ ships for macOS and Windows only. OpenLogi treats
Linux as a first-class platform: evdev/uinput hook, udev rules, a systemd
user unit, and
.deb/.rpm/.pkg.tar.zstpackages. - Move the Gesture Button. Pick which physical button owns the gesture role β the dedicated Gesture Button, middle, back, or forward β with per-direction swipe bindings, or turn gestures off entirely. Options+ pins the gesture role to the dedicated Gesture Button.
- Keep config in plain text. Everything is one TOML file you can read, diff, version-control, and copy between machines.
- Script it. A real CLI: device inventory, asset prefetch, and on-device HID++ diagnostics (feature/control dumps, DPI / SmartShift round-trips, and keyboard lighting checks).
- Stay light. Native Rust + GPUI binaries β no Electron suite, no resident updaters, no account, no telemetry.
Roadmap
| Capability | State |
|---|---|
| Discover Bolt receivers + list paired devices (CLI + GUI) | β |
| Unifying receivers (older protocol, replaced by Bolt) | β |
| Bluetooth-direct / wired devices (no receiver) | β |
| Battery percentage / charge state | β (online devices) |
| Interactive GUI: carousel, mouse diagram, action picker | β macOS + Linux + Windows |
| Button remapping via the OS input hook | β macOS + Linux + Windows |
| Built-in action catalog + custom keyboard shortcuts (TOML-authored) | β macOS + Linux + WindowsΒΉ |
DPI control + presets + Cycle / Set-preset actions (HID++ 0x2201) |
β |
SmartShift wheel: mode toggle + sensitivity + permanent-ratchet panel (HID++ 0x2111) |
β |
Per-device native scroll inversion (HID++ 0x2121) |
β (supported devices) |
Static RGB keyboard lighting (HID++ 0x8070 / 0x8080) |
β (supported devices) |
| Per-application profile overlays (auto-switch on app focus) | β macOS + Windows, π‘ Linux (X11 / XWayland only) |
| Settings window: launch-at-login, updates, permissions, language, appearance | β macOS + Linux + Windows |
| Agent status icon | β macOS menu bar + Windows tray; not applicable on Linux |
| Interface localization (20 languages: da, de, el, en, es, fi, fr, it, ja, ko, nb, nl, pl, pt-BR, pt-PT, ru, sv, zh-CN, zh-HK, zh-TW) | β |
Linux packaging: udev rules, systemd unit, .deb / .rpm / .pkg.tar.zst |
β Linux |
| Gesture-button per-direction bindings + live capture | β (device capability dependent) |
| Middle / mode-shift / thumbwheel button capture | β middle on all platforms; mode-shift / thumbwheel device dependent |
| Windows (agent, GUI, event hook, installer) | β Windows 11 hardware validated; newer port with ongoing compatibility polish |
Help improve the interface translations on Crowdin.
ΒΉ Media key actions use D-Bus MPRIS on Linux; a handful of macOS-specific actions have no universal Linux equivalent and are no-ops. Windows maps platform actions to native equivalents where available.
Install
[!IMPORTANT] Quit Logi Options+ first β the two applications fight over HID++ access and only one can own a given receiver at a time.
macOS
Requires macOS 13 or later.
Download the signed, notarized .dmg from the latest release and drag OpenLogi.app to /Applications.
Or install via Homebrew:
The official Homebrew cask is the default installation path. To explicitly
track the latest GitHub release from aprilnea/tap instead:
openlogi@latest is maintained by OpenLogi's release workflow and may update
before the official cask autobump lands. Install either openlogi or
openlogi@latest, not both.
Linux
Download the package for your distribution from the latest release:
# Debian / Ubuntu
# Fedora / RHEL
# Arch Linux
Packages are published for both x86_64/amd64 and arm64/aarch64.
The package installs udev rules that grant your user access to
/dev/hidraw*, /dev/uinput and your Logitech mouse's /dev/input/event*
node without sudo. After installation,
enable the background agent for your user:
See docs/INSTALL-linux.md for manual / source installs and distros without systemd.
Windows
Signed portable .zip archives and per-user .msi installers (x86_64 and
arm64) are attached to each release. Both ship the GUI (OpenLogi.exe)
together with the background agent (openlogi-agent.exe), which owns all
device I/O β keep the two files side by side when using the portable zip, or
the GUI has nothing to connect to.
Windows support works and has been validated end-to-end on Windows 11 with
real hardware β a wired keyboard and a Unifying-receiver mouse, including
install, in-place upgrade, and uninstall of the MSI. It is newer than the
macOS build, so if you hit a rough edge please
report it. The agent shows a
system-tray icon (Show Main Window / Quit) so the app stays reachable after
the main window is closed. To disable it on Windows, set
show_in_menu_bar = false in the TOML [app_settings] block and restart the
agent; the GUI toggle is currently macOS-only.
To build from source, see DEVELOPMENT.md.
Usage (CLI)
See USAGE.md
Configuration
See CONFIGURATION.md
Developing
See DEVELOPMENT.md
Acknowledgments
License
Dual-licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
Logo & brand assets
The OpenLogi logo and app icon β the brand assets under design/ β
are Β© 2026 AprilNEA, all rights reserved, and are not covered by the MIT/Apache
licenses above; see design/LICENSE. Forking the code grants
no right to the OpenLogi name, logo, or icon; please don't use them to represent
your own projects, forks, or distributions without prior written permission.
Not affiliated with Logitech. "Logitech", "MX Master", and "Options+" are trademarks of Logitech International S.A.