Files
LGCompanion/setup-razer.sh
xpamych dd851db622 Интеграция с openrazer + setup-razer.sh для универсальной установки
- razer_protocol.py: приоритет openrazer Python API (DKMS+daemon), fallback на raw USB
- setup-razer.sh: одна команда для полной настройки Razer на любом дистре
  - определяет пакетный менеджер (dnf/apt/pacman/zypper)
  - ставит kernel-devel + dkms + gcc
  - собирает и устанавливает DKMS-модуль openrazer
  - загружает razermouse, настраивает автозагрузку
  - устанавливает openrazer Python библиотеку
2026-09-10 23:33:45 +03:00

125 lines
5.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# setup-razer.sh — One-command setup for Razer device support in LGCompanion
# Works on any Linux distro with DKMS support (Fedora, Ubuntu, Arch, etc.)
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
info() { echo -e "${GREEN}[+]${NC} $*"; }
warn() { echo -e "${YELLOW}[!]${NC} $*"; }
error() { echo -e "${RED}[-]${NC} $*"; }
# ── Check root ─────────────────────────────────────────────────────
if [ "$(id -u)" -ne 0 ]; then
error "Запустите с sudo: sudo ./setup-razer.sh"
exit 1
fi
# ── Detect package manager ─────────────────────────────────────────
install_pkg() {
if command -v dnf &>/dev/null; then
dnf install -y "$@"
elif command -v apt-get &>/dev/null; then
apt-get install -y "$@"
elif command -v pacman &>/dev/null; then
pacman -S --noconfirm "$@"
elif command -v zypper &>/dev/null; then
zypper install -y "$@"
else
error "Неизвестный пакетный менеджер. Установите вручную: $*"
return 1
fi
}
# ── Step 1: Install build dependencies ─────────────────────────────
info "Установка зависимостей для сборки модуля..."
KERNEL_VER=$(uname -r)
if command -v dnf &>/dev/null; then
install_pkg kernel-devel-"$KERNEL_VER" dkms gcc make || true
# Fallback: matched meta-package
rpm -q "kernel-devel-$KERNEL_VER" &>/dev/null || install_pkg kernel-devel-matched
elif command -v apt-get &>/dev/null; then
apt-get update -qq
install_pkg "linux-headers-$KERNEL_VER" dkms gcc make
elif command -v pacman &>/dev/null; then
install_pkg linux-headers dkms base-devel
elif command -v zypper &>/dev/null; then
install_pkg "kernel-devel-$KERNEL_VER" dkms gcc make
fi
# ── Step 2: Install OpenRazer DKMS driver ──────────────────────────
OPENRAZER_VER="3.10.3"
DKMS_SRC="/usr/src/openrazer-driver-${OPENRAZER_VER}"
if [ ! -d "$DKMS_SRC" ]; then
info "Загрузка OpenRazer driver ${OPENRAZER_VER}..."
TMPDIR=$(mktemp -d)
cd "$TMPDIR"
curl -sL "https://github.com/openrazer/openrazer/archive/refs/tags/v${OPENRAZER_VER}.tar.gz" | tar xz
cp -r "openrazer-${OPENRAZER_VER}/driver" "$DKMS_SRC"
cat > "$DKMS_SRC/dkms.conf" << 'DKMSCONF'
PACKAGE_NAME="openrazer-driver"
PACKAGE_VERSION="3.10.3"
BUILT_MODULE_NAME[0]="razermouse"
DEST_MODULE_LOCATION[0]="/extra"
BUILT_MODULE_NAME[1]="razerkbd"
DEST_MODULE_LOCATION[1]="/extra"
BUILT_MODULE_NAME[2]="razerkraken"
DEST_MODULE_LOCATION[2]="/extra"
BUILT_MODULE_NAME[3]="razeraccessory"
DEST_MODULE_LOCATION[3]="/extra"
AUTOINSTALL="yes"
MAKE="make -C ${kernel_source_dir} M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/modules"
CLEAN="make -C ${kernel_source_dir} M=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/modules clean"
DKMSCONF
cd /
rm -rf "$TMPDIR"
info "Исходники установлены в $DKMS_SRC"
fi
info "Сборка DKMS-модуля для ядра ${KERNEL_VER}..."
dkms remove -m openrazer-driver -v "$OPENRAZER_VER" --all 2>/dev/null || true
dkms add -m openrazer-driver -v "$OPENRAZER_VER"
dkms install -m openrazer-driver -v "$OPENRAZER_VER" -k "$KERNEL_VER"
# ── Step 3: Load modules ───────────────────────────────────────────
info "Загрузка модуля razermouse..."
modprobe razermouse
modprobe razerkbd 2>/dev/null || true
modprobe razerkraken 2>/dev/null || true
modprobe razeraccessory 2>/dev/null || true
# Make modules load on boot
for mod in razermouse razerkbd razerkraken razeraccessory; do
if ! grep -q "^$mod$" /etc/modules-load.d/*.conf 2>/dev/null; then
echo "$mod" >> /etc/modules-load.d/openrazer.conf
fi
done
# ── Step 4: Install udev rules (if not present) ────────────────────
UDEV_RULE="/lib/udev/rules.d/99-razer.rules"
if [ ! -f "$UDEV_RULE" ]; then
info "Установка udev-правил..."
curl -sL "https://raw.githubusercontent.com/openrazer/openrazer/v${OPENRAZER_VER}/install_files/udev/99-razer.rules" -o "$UDEV_RULE"
udevadm control --reload-rules
udevadm trigger
fi
# ── Step 5: Install openrazer Python library ───────────────────────
info "Установка openrazer Python библиотеки..."
pip3 install openrazer 2>/dev/null || pip install openrazer 2>/dev/null || warn "Не удалось установить openrazer через pip"
info "========================================="
info "Установка завершена!"
info ""
info "Теперь:"
info " 1. Выполните: systemctl --user enable --now openrazer-daemon"
info " 2. Переподключите USB-донгл мыши"
info " 3. Запустите: lgcompanion-gui"
info "========================================="