Repository navigation
Releases
OpenNaga for Linux 2.8.0 (preview)
OpenNaga for Linux 2.8.0 (preview)
The first Linux release of OpenNaga: a native port of the macOS app in Rust with GTK 4 and libadwaita, with the same window, the same features and the same profiles.json format.
Preview: not yet tested with the physical mouse on Linux. The port builds, passes its automated tests (profile format, Razer protocol, onboard memory, mapper, macros and input frames) and its window was checked with rendered snapshots. Remapping through evdev and uinput, DPI, polling rate, driver mode and Save to Mouse over hidraw, Bluetooth and sleep and wake still need real-world confirmation. The protocol code is a port of the macOS implementation, which was verified on the mouse. Please report results in the issues, with opennaga --diagnose output where hardware is involved.
What is included
- The settings window with Buttons, App Profiles, Sensitivity and Status, in light and dark appearance
- Every action type of the macOS app, the Hypershift layer, macros and text, profile switching
- Per-app profiles on Hyprland, Sway, i3 and X11
- DPI, polling rate, scroll sensitivity and driver mode for the DPI buttons, with journaled restore
- Save to Mouse and Restore Previous Assignments, with a backup of the original assignments
- Profile backups and recovery, Undo and Redo, import with Keep Both, export
- A tray icon, start at sign-in, and a udev rule installed from the Status section
Download
opennaga-2.8.0-x86_64-linux.tar.gz is built on Ubuntu 24.04 by GitHub Actions and needs glibc 2.39, GTK 4.14 and libadwaita 1.5 or newer. Extract it and run ./install.sh --user. The archive is not signed; its SHA-256 checksum is attached next to it. Arch users can also build linux/packaging/arch/PKGBUILD. See linux/README.md for device access, desktop support and limits.
The macOS app is unchanged by this release; the current macOS download remains 2.7.0.
OpenNaga 2.7.0
OpenNaga 2.7.0
OpenNaga 2.7.0 adds automatic per-app profile switching. Thanks to @LoessCode for contributing PR #8.
- Bind profiles to applications in the new App Profiles section. OpenNaga applies the matching profile when an app comes to the front and returns to your selected profile for other apps.
- Switching happens in software, including over Bluetooth, and never writes to mouse memory. OpenNaga must be running with remapping enabled.
- Held buttons release the output they started, even after an automatic profile change. Manual profile selection applies until the next app change.
- Pick installed or running apps, including game apps in the default Steam library, or use Choose Other. Apps need a bundle identifier to be matched.
- Switching pauses for profiles saved to or imported from mouse memory. Renaming or deleting a profile updates its app bindings.
Validation: 1359 automated checks passed, the release build compiled, and the App Profiles screen was inspected in light and dark appearance at 980x700. The contributor reported a physical Bluetooth test with app focus changes. The maintainer review did not repeat that hardware test; packaging adds no new physical-input, power-cycle or Bluetooth coverage.
Upgrade: quit OpenNaga and replace the app in Applications. Profiles and mouse backups remain in ~/Library/Application Support/OpenNaga. Public builds are ad-hoc signed and not notarized; macOS may request Accessibility and Input Monitoring again after replacement. The downloadable build is Apple Silicon for macOS 13 or later. SHA256SUMS.txt contains the DMG checksum.
OpenNaga 2.6.0
OpenNaga 2.6.0
OpenNaga 2.6.0 adds a Hypershift layer that is also stored in mouse memory, following the discussion in #6.
- Each profile has a Standard and a Hypershift layer. Set a control's action to Hypershift key, then give other controls a second action used while you hold it.
- Save to Mouse writes both layers. The Hypershift key works with OpenNaga closed, after a power cycle and on other computers.
- Import from Mouse reads the Hypershift layer back into the profile.
- With a profile saved to or imported from the mouse, OpenNaga adds the modifiers you hold on the keyboard to the mouse's keys while it runs. Command plus a side button saved as Z gives Command-Z. Without the app, macOS delivers the mouse's keys without keyboard modifiers; no setting in the mouse can change that.
Validation: 1313 automated checks passed and the release build compiled. On the USB receiver, a profile with side button 1 as Hypershift key produced its Hypershift actions with the app closed and after switching the mouse off and on, and Command plus a saved side button produced Command-Z while the app ran. Restoring returned all 84 stored assignments to their previous bytes. See the verification record.
Not verified: Hypershift over Bluetooth and Keyboard Maestro.
Upgrade: quit OpenNaga and replace the app in Applications. Profiles and mouse backups remain in ~/Library/Application Support/OpenNaga. Public builds are ad-hoc signed and not notarized; macOS may request Accessibility and Input Monitoring again after replacement. The downloadable build is Apple Silicon for macOS 13 or later. SHA256SUMS.txt contains the DMG checksum.
OpenNaga 2.5.1
OpenNaga 2.5.1
OpenNaga 2.5.1 fixes held keyboard modifiers combining with software-mapped mouse buttons, following the additional report in #6.
- Hold Command on the keyboard and press a button mapped to plain C to send Command-C. Trigger flags and physical modifier observations combine with the mapping's own modifiers.
- Releasing the keyboard modifier before the mouse button no longer restores the modifier on key-up.
- Replace the 50 ms synthetic-release exclusion with acknowledgment of the posted release. New physical presses are accepted immediately, and queued releases reflect current modifier ownership.
- Preserve native numeric-pad identification on keypad and arrow keys.
Validation: 1093 automated checks passed, and the release executable compiled. USB physical tests delivered Command-C and Command-Keypad 6, followed by plain keys after releasing Command. Releasing Command before the mouse button cleared it on key-up, and every keypad event retained its numeric-pad identity. See the verification record.
Held-modifier combining applies while software remapping is enabled. Profiles saved to mouse memory or imported from custom firmware retain their existing protection and native behavior. No profiles or mouse settings are changed by this update. Keyboard Maestro confirmation from the original reporter, Bluetooth software remapping and receiver reconnect remain unverified.
Upgrade: quit OpenNaga and replace the app in Applications. Profiles and mouse backups remain in ~/Library/Application Support/OpenNaga. Public builds are ad-hoc signed and not notarized; macOS may request Accessibility and Input Monitoring again after replacement. The downloadable build is Apple Silicon for macOS 13 or later. SHA256SUMS.txt contains the DMG checksum.
OpenNaga 2.5.0
OpenNaga 2.5.0
OpenNaga 2.5.0 adds independent vertical and horizontal scroll sensitivity, imports assignments from mouse memory, and fixes modifier shortcuts and USB communication.
- Modifier shortcuts: fix Command, Control, Shift and Option delivery for held buttons, key sequences and macros. Preserve physical left/right modifiers and overlapping holds. Resolves #6.
- Scroll sensitivity: separate vertical-wheel and horizontal/tilt sliders from 0.1x to 5x, with persistent settings and Reset. Scales native wheel input and assigned scroll actions while software remapping is enabled. Trackpad and momentum scrolling are unchanged. Resolves #7.
- Import from Mouse: read supported onboard assignments into an editable local profile. Imported profiles keep software remapping paused because custom firmware events cannot reliably identify physical controls. Use Save to Mouse to apply edits. Import performs no hardware writes and reports unsupported assignments.
- USB and mouse memory: correct HID callback timeout units, normalize onboard reply metadata while keeping writes on the normal layer, and wait for valid delayed receiver responses without resending uncertain writes.
- Settings window: appears in the Dock and Command-Tab while open, then returns to a menu bar accessory when closed. The entire sidebar row is clickable.
Thanks to stets for PRs #1, #2, #3, #4 and #5, and to the users who reported the modifier and scroll issues.
Validation: 1009 automated checks passed locally and on GitHub. Tests on a Naga V2 HyperSpeed USB receiver covered physical modifier delivery, wheel/tilt scaling, DPI and polling readback, onboard save/restore and the driver-mode recovery path. All 21 original assignments and settings were restored after testing. Bluetooth software remapping, execution of every individual onboard button, power-cycle persistence of this build and receiver reconnect remain unverified. See the verification record.
Upgrade: quit OpenNaga and replace the app in Applications with the new OpenNaga.app. Profiles and mouse backups remain in ~/Library/Application Support/OpenNaga. Scroll sensitivity stays on the Mac and is not written to mouse memory. macOS may ask for Accessibility and Input Monitoring again after replacing an ad-hoc signed build.
Apple Silicon build for macOS 13 or later, ad-hoc signed and not notarized. On first launch right-click the app and choose Open, or run xattr -dr com.apple.quarantine /Applications/OpenNaga.app. SHA256SUMS.txt contains the checksum of the DMG.
OpenNaga 2.4.0
OpenNaga 2.4.0
OpenNaga now keeps its files in its own folder, ~/Library/Application Support/OpenNaga.
Up to 2.3.0 it shared ~/Library/Application Support/NagaController with NagaController, the app it started from. The two profile formats have diverged, so with both apps installed each one could rewrite the other's profiles.json and drop what it did not recognize. Thanks to DParent10 for reporting this.
- On first launch OpenNaga copies
profiles.json, the mouse backup (onboard-profile.json) and the driver mode journal from the old folder, once. Files that already exist in the new folder are not overwritten. - The old folder is left exactly as it is. OpenNaga does not write to it or delete it.
- If a copy fails, OpenNaga tries again at the next launch.
- No change to button mapping, mouse memory, DPI or polling rate.
Upgrading: quit OpenNaga, replace the app in Applications with the new OpenNaga.app. Profiles and a profile saved to the mouse carry over.
If you also use NagaController and both apps wrote to the shared folder, the imported profiles are whichever app saved last. Check your assignments after the first launch.
Apple Silicon build, ad-hoc signed, not notarized. On first launch right-click the app and choose Open, or run xattr -dr com.apple.quarantine /Applications/OpenNaga.app.
OpenNaga 2.3.0
OpenNaga 2.3.0
Save a button profile directly to the Naga V2 HyperSpeed. It keeps working after you quit OpenNaga, over Bluetooth, and on computers without the app.
- Save to Mouse: writes the selected profile to the mouse's onboard memory over the USB receiver (mouse in 2.4 GHz mode). Only changed buttons are written, and every button is read back to confirm.
- Restore Previous Assignments: puts back the assignments the mouse had before the first save and turns software remapping back on.
- Stored in the mouse: single keys with modifiers, clicks, mouse buttons 4/5, scrolling and wheel tilt, DPI up/down, volume and media keys, and system functions that map to a keyboard shortcut. Sequences, macros, scripts and app launching still need the app; the window names any button that cannot be saved.
- New DPI up and DPI down actions for the top buttons.
- Command line:
--inspect-onboard(read only),--save-onboard-profile,--restore-onboard-profile.
OpenNaga writes to the mouse only when you click Save or Restore, never at startup or when you edit a button.
Upgrading: quit OpenNaga (or NagaController), replace the app in Applications with the new OpenNaga.app. Profiles are kept.
Apple Silicon build, ad-hoc signed, not notarized. On first launch right-click the app and choose Open, or run xattr -dr com.apple.quarantine /Applications/OpenNaga.app.
OpenNaga 2.2.0
OpenNaga 2.2.0
NagaController is now OpenNaga, an independent project, and the interface is in English.
- New name: the app, window, menu bar item and DMG are called OpenNaga. The bundle identifier and the profiles folder are unchanged, so existing profiles load as before.
- English interface: every section, action, system function, key group, menu, status and error message. The bundled "Navigazione" profile is now "Navigation".
- README screenshots in light and dark appearance.
Upgrading from NagaController: quit it, delete /Applications/NagaController.app, then drag OpenNaga.app to Applications. macOS may ask again for Accessibility and Input Monitoring.
Apple Silicon build, ad-hoc signed, not notarized. On first launch right-click the app and choose Open, or run xattr -dr com.apple.quarantine /Applications/OpenNaga.app.
OpenNaga 2.1.1 (before the rename)
This build was published under the name NagaController before the project was renamed OpenNaga. It is an OpenNaga release, not a release of DParent10/NagaController.
NagaController 2.1.1
Fixes Bluetooth detection. macOS shows the mouse over Bluetooth Low Energy as "Naga V2 HS" with identity 068e:00b5; the app previously filtered only the receiver's vendor ID 1532 and excluded it. NagaController now enumerates the exact Bluetooth pair without touching unrelated devices, so the same saved profile applies over Bluetooth and the USB receiver. DPI, polling rate and driver mode still require the receiver.
Validation: release build and 745 automated checks passed, including 15 new identity and enumeration regression checks. Startup logs confirm Naga connected via Bluetooth Low Energy and an active blocking event tap. Saved profiles remained byte-identical across install and relaunch. Physical Bluetooth button actions still need user testing.
The DMG contains an Apple Silicon build for macOS 13 or later. It is ad-hoc signed and not notarized. Existing profiles are retained. Intel Macs can build from source.
OpenNaga 2.1.0 (before the rename)
This build was published under the name NagaController before the project was renamed OpenNaga. It is an OpenNaga release, not a release of DParent10/NagaController.
NagaController 2.1.0
The new Sistema editor replaces Audio with 25 system functions in six categories: audio (volume up/down, mute), playback (play/pause, previous/next track), brightness, screenshots (screen, selection, clipboard, recording tools), windows and spaces (Mission Control, app windows, desktop, previous/next space, hide app, app switcher) and tools (Spotlight, Finder, System Settings, Notification Center, Do Not Disturb). Each press runs the action once, with a Prova preview button. Existing audio mappings open in Sistema unchanged, and shell commands remain a separate action type.
This release also includes:
- A native light/dark interface with restrained green accents, interactive mouse photographs and separate side/top views.
- A keyboard picker with categories, modifiers, shortcut recording and editable sequences. Existing text assignments are preserved until replaced.
- Correct per-button hover outlines on the mouse photograph.
- Background remapping after closing the window, clearer permission/service status and hardware refresh after connection changes.
Notes:
- Screenshots, Mission Control, spaces and Do Not Disturb use the keyboard shortcuts configured in macOS. Disabled or unassigned shortcuts show setup instructions; Do Not Disturb needs an enabled shortcut in System Settings > Keyboard > Keyboard Shortcuts > Mission Control.
- Brightness uses the Mac's brightness keys; external monitors must support macOS brightness control.
Validation: release build and 730 automated checks passed. Native volume and mute changes were verified through the running app and CoreAudio readback. USB DPI/polling read and same-value write/readback passed at 1600 DPI and 500 Hz. Physical remapping of the new system actions, Bluetooth and driver-mode transition tests remain pending.
The DMG contains an Apple Silicon build for macOS 13 or later. It is ad-hoc signed and not notarized. Existing profiles are retained. Intel Macs can build from source.