Skip to content

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 03:54
· 7 commits to main since this release

OpenSharkX11 v2.0.0 — Rewritten on Tauri 2 + Rust

This release replaces the Electron 34 + Node.js stack with Tauri 2 and a Rust
backend
. Same features, a third less memory: measured side by side on the same
machine, idle with the mouse connected, the app now sits at 256 MB against
385 MB before (proportional set size across the whole process tree), and runs
3 processes instead of 8. The Arch package is a 5.9 MB self-contained
binary instead of pulling in a full Electron runtime; the Debian package is
6.3 MB.

The whole device layer was rewritten in Rust — USB via rusb, Bluetooth LE via
BlueZ over D-Bus — with the protocol builders ported one-to-one from the previous
TypeScript driver and verified byte for byte against captured traffic.

What's new

  • Native Rust backend: no Node.js runtime, no asar, no bundled Chromium
  • React 19 renderer served straight from the binary
  • Smaller install and a much lighter memory footprint

Fixes

  • DPI stage colors were off by one. The active stage index is 0-based
    internally but the firmware expects 1–6, so the mouse always sat one stage
    behind the UI — each stage lit up with the previous stage's color, the first
    stage was unreachable and the sixth was never sent.
  • Applying settings could hang for minutes. The interrupt polling thread and
    the control-transfer path shared an unfair mutex on the USB handle, starving
    writes. Lighting, remap and DPI changes now land in about a second.
  • Release builds no longer start on a blank window.

Still tri-mode

2.4 GHz dongle, wired USB-C and Bluetooth — DPI stages, RGB lighting, button
remapping, polling rate, debounce, profiles and battery monitoring.

Install

  • Debian/Ubuntu — sudo dpkg -i OpenSharkX11_2.0.0_amd64.deb
  • Arch/CachyOS — opensharkx11 or opensharkx11-git from the AUR
  • Any distro — download the AppImage, chmod +x, run

Requires libusb, webkit2gtk-4.1 and gtk3. The packages install a udev rule
so the mouse is reachable without root; the AppImage relies on one already being
present.