- Rust 88.1%
- CSS 7.6%
- Python 3.5%
- Shell 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| .vscode | ||
| examples | ||
| packaging | ||
| public | ||
| src | ||
| src-tauri | ||
| styles | ||
| tools/shape-check | ||
| .gitignore | ||
| .taurignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| index.html | ||
| LICENSE | ||
| README.md | ||
| Trunk.toml | ||
Razer Linux Desktop
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.
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.