No description
  • Rust 87.4%
  • CSS 6.2%
  • Python 5.2%
  • Shell 1%
  • HTML 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Alexander Daichendt 0edca66767
All checks were successful
ci / bundle (push) Successful in 7m1s
Update README.md
2026-09-08 22:32:15 +02:00
.forgejo/workflows Install the CI build tools as release binaries 2026-09-08 19:35:59 +02:00
.vscode first commit 2026-05-17 21:33:41 +02:00
examples Publish deb, rpm and Arch packages from Forgejo CI 2026-09-08 17:21:47 +02:00
packaging Install the CI build tools as release binaries 2026-09-08 19:35:59 +02:00
public fix a bunch of issues 2026-06-06 18:22:16 +02:00
src Refit the mouse model's front half to the scan 2026-09-06 16:32:16 +02:00
src-tauri Embed the frontend in the Arch package 2026-09-08 18:12:48 +02:00
styles Fix the narrow-viewport layout 2026-08-22 23:51:53 +02:00
tools/shape-check Add scan comparison and viewer screenshot tooling 2026-09-06 16:32:16 +02:00
.gitignore Package the app as deb and rpm 2026-09-08 16:58:36 +02:00
.taurignore first commit 2026-05-17 21:33:41 +02:00
Cargo.lock Package the app as deb and rpm 2026-09-08 16:58:36 +02:00
Cargo.toml Package the app as deb and rpm 2026-09-08 16:58:36 +02:00
index.html Fix the narrow-viewport layout 2026-08-22 23:51:53 +02:00
LICENSE Package the app as deb and rpm 2026-09-08 16:58:36 +02:00
README.md Update README.md 2026-09-08 22:32:15 +02:00
Trunk.toml first commit 2026-05-17 21:33:41 +02:00

Razer Linux Desktop

ci release

A Tauri + Leptos desktop app for configuring supported Razer devices on Linux.

Supported are:

  • Razer Basilisk V3
  • Razer Basilisk V3 Pro

This desktop app is a port of the good work from geezmolycos. The initial port of this app is entirely done with Codex GPT 5.5 xhigh. Maintenance is carried out through the latest Claude models.


Using the app

Everything in this section is for running the app on your machine. Building it from source is covered under Development.

Install

Releases are published to this instance's package registries, so the usual package manager handles updates.

Arch, CachyOS, Manjaro

curl -fsSL https://git.shiverpeak.xyz/api/packages/alex/arch/repository.key |
    sudo pacman-key --add -
sudo pacman-key --lsign-key D2B7EAD9D9F0C938D53AFD3BE06F9DA5876531E3

Then append to /etc/pacman.conf and sudo pacman -Sy razer-linux-desktop:

[razer-linux-desktop]
Server = https://git.shiverpeak.xyz/api/packages/alex/arch/stable/$arch

Debian, Ubuntu, Mint, Pop!_OS

Needs Ubuntu 22.04, Debian 12 or newer.

sudo curl -fsSLo /etc/apt/keyrings/forgejo-alex.asc \
    https://git.shiverpeak.xyz/api/packages/alex/debian/repository.key
echo "deb [signed-by=/etc/apt/keyrings/forgejo-alex.asc] https://git.shiverpeak.xyz/api/packages/alex/debian stable main" |
    sudo tee /etc/apt/sources.list.d/razer-linux-desktop.list
sudo apt update && sudo apt install razer-linux-desktop

Fedora, openSUSE Tumbleweed

sudo dnf config-manager addrepo --from-repofile=https://git.shiverpeak.xyz/api/packages/alex/rpm.repo
sudo dnf install razer-linux-desktop

openSUSE Leap is not covered: the rpm is built against a newer glibc than Leap ships.

One-off download

To install a single package without adding the repository, take the file from its package page. Each link redirects to the newest version, so they stay current between releases.

.deb https://git.shiverpeak.xyz/alex/-/packages/debian/razer-linux-desktop
.rpm https://git.shiverpeak.xyz/alex/-/packages/rpm/razer-linux-desktop
.pkg.tar.zst https://git.shiverpeak.xyz/alex/-/packages/arch/razer-linux-desktop

Installing this way means updates are manual. See Install a locally built package for the commands; they take a downloaded file just as well.

Device access

The app talks to /dev/hidraw* directly, so the hidraw node of a supported device has to be readable by the desktop user. The packages install packaging/udev/60-razer-linux-desktop.rules, which tags the supported devices with uaccess so logind grants access to whoever is logged in at the seat.

If the app does not see the device right after installing, unplug and replug it.


Development

This section is only needed to build or change the app. Users installing from the package registries can stop above.

Build dependencies

On CachyOS / Arch:

sudo pacman -S --needed \
  webkit2gtk-4.1 \
  base-devel \
  curl \
  wget \
  file \
  openssl \
  appmenu-gtk-module \
  libappindicator-gtk3 \
  librsvg \
  xdotool

cargo install tauri-cli --locked
cargo install trunk --locked

Build

cargo tauri build

This writes a .deb and an .rpm under target/release/bundle/. Both carry the binary, the desktop entry, the icon and the udev rule.

The version comes from [workspace.package] in the root Cargo.toml; tauri.conf.json inherits it and must not set its own.

Install a locally built package

sudo dpkg -i target/release/bundle/deb/razer-linux-desktop_*_amd64.deb   # Debian, Ubuntu
sudo rpm -i target/release/bundle/rpm/razer-linux-desktop-*.x86_64.rpm   # Fedora, openSUSE

Unplug and replug the device afterwards, or let the post-install script's udevadm trigger do it.

Adding a device

packaging/udev/60-razer-linux-desktop.rules is generated from SUPPORTED_DEVICES in src-tauri/src/lib.rs. After adding a device there, regenerate it:

cargo run -p razer-linux-desktop --example gen-udev-rules

cargo test fails when the two are out of sync.