Repository navigation
v2.0.0
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 —
opensharkx11oropensharkx11-gitfrom 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.