No description
  • Rust 88.1%
  • CSS 7.6%
  • Python 3.5%
  • Shell 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Alexander Daichendt 963fdf79d2
All checks were successful
ci / bundle (push) Successful in 6m59s
release / deb (push) Successful in 5m43s
release / rpm (push) Successful in 6m45s
release / arch (push) Successful in 5m14s
Release 0.4.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:46:15 +01:00
.forgejo/workflows Install the appindicator library the tray needs in the CI images 2026-10-18 15:17:23 +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 Release 0.4.0 2026-10-25 19:46:15 +01:00
public Rebuild the shell as a dark top-tab layout with an active-profile status bar 2026-10-18 12:42:24 +02:00
src Bridge unlogged stretches in the battery chart with a dashed line 2026-10-25 19:34:30 +01:00
src-tauri Push usage stats to the open window as counts come in 2026-10-23 14:54:56 +02:00
styles Bridge unlogged stretches in the battery chart with a dashed line 2026-10-25 19:34:30 +01:00
tools/shape-check Carry the body on under the plate tips as chins 2026-10-18 14:19:03 +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 Release 0.4.0 2026-10-25 19:46:15 +01:00
Cargo.toml Release 0.4.0 2026-10-25 19:46:15 +01:00
index.html Drop styles for the replaced panels and tidy the first-run screen 2026-10-18 13:09:06 +02:00
LICENSE Package the app as deb and rpm 2026-09-08 16:58:36 +02:00
README.md Show the app version in Settings and make the Settings tab icon-only 2026-10-18 13:57:19 +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.

Tray

Closing the window keeps the app running in the system tray. Right-click the tray icon to switch the mouse's active on-board profile, reopen the window, or quit. GNOME needs the AppIndicator extension to show tray icons. In the window, the status bar at the bottom shows and switches the active profile.

Automatic profile switching

The Profiles tab can tie a profile to a process name, such as Gw2-64.exe for a Wine or Proton game, typed in or picked from the programs currently running. While that process runs, the app activates the profile; once it exits, the previously active profile comes back. This needs the app to be running, in the tray or with the window open.

Start at login in Settings (the cog icon) adds an XDG autostart entry (~/.config/autostart/razer-linux-desktop.desktop) that launches the app hidden in the tray.


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.