Gaming optimizations for Linux


/mouse

Disable mouse acceleration in X11

$ cat /usr/share/X11/xorg.conf.d/40-libinput.conf
[...]
Section "InputClass"
        Identifier "libinput pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "AccelProfile" "flat"  #<-- setting this to flat means no acceleration 🥰
EndSection
[...]

/kernel

Set low-latency GRUB kernel parameters

Tweaks

Parameter Effect
threadirqs Move interrupt handling to threads for better prioritization
preempt=full Full kernel preemption for lower input lag
processor.max_cstate=1 Keep CPU awake, no deep sleep states
tsc=reliable Trust CPU's timestamp counter (reduces overhead)
nowatchdog Disable watchdog timer (reduces jitter)

Apply basic parameters:

$ sudo vim /etc/default/grub

# Find:
GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia_drm.modeset=1"

# Change to:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet nvidia_drm.modeset=1 threadirqs preempt=full processor.max_cstate=1 tsc=reliable nowatchdog"

# Update GRUB:
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
$ reboot

Verify parameters are active:

$ cat /proc/cmdline

/tweaks

Low latency tweaks

This script makes it easy to apply several latency reducing tweaks to your X11 setup. You can toggle individual optimizations on/off with a simple TUI menu.


Installation

Copy the script below and save it as optimize-interactive.sh

$ mkdir -p ~/linux_latency && cd ~/linux_latency
$ vim optimize-interactive.sh
# Paste the script below
$ chmod +x optimize-interactive.sh
$ sudo ./optimize-interactive.sh

Full script:

#!/bin/bash
# Modular Low Latency Optimizer - Interactive Mode
# Architecture: Each optimization is a self-contained feature

set -e

# ============================================================================
# CONFIGURATION
# ============================================================================

LOGFILE="optimize.log"
XORG_CONF="/etc/X11/xorg.conf"
SERVICE_NAME="cpu-performance"
SERVICE_DIR="/etc/runit/sv/$SERVICE_NAME"

# ============================================================================
# FEATURE REGISTRY
# ============================================================================
# To add a feature:
# 1. Add ID to FEATURE_IDS array
# 2. Define metadata (NAME, DESC, RESTART, REQUIRES_ROOT)
# 3. Implement: check_FEATURE(), install_FEATURE(), uninstall_FEATURE()

FEATURE_IDS=(
    "cpu_governor"
    "cpu_epp"
    "cpu_boost"
    "cpu_freq_lock"
    "nvidia_pipeline"
    "nvidia_composite"
    "nvidia_triple_buffer"
    "nvidia_powermizer"
)

# Feature metadata
declare -A FEATURE_NAME
declare -A FEATURE_DESC
declare -A FEATURE_RESTART  # none, x11, reboot
declare -A FEATURE_REQUIRES_ROOT

# CPU Governor
FEATURE_NAME[cpu_governor]="CPU Performance Governor"
FEATURE_DESC[cpu_governor]="Set scaling governor to performance (no frequency scaling)"
FEATURE_RESTART[cpu_governor]="none"
FEATURE_REQUIRES_ROOT[cpu_governor]=1

# CPU EPP
FEATURE_NAME[cpu_epp]="CPU Energy Performance Preference"
FEATURE_DESC[cpu_epp]="Set EPP to performance (maximum power state)"
FEATURE_RESTART[cpu_epp]="none"
FEATURE_REQUIRES_ROOT[cpu_epp]=1

# CPU Boost
FEATURE_NAME[cpu_boost]="Disable CPU Boost"
FEATURE_DESC[cpu_boost]="Disable boost for consistent timing (reduces peak frequency)"
FEATURE_RESTART[cpu_boost]="none"
FEATURE_REQUIRES_ROOT[cpu_boost]=1

# CPU Frequency Lock
FEATURE_NAME[cpu_freq_lock]="Lock CPU Frequency"
FEATURE_DESC[cpu_freq_lock]="Lock minimum frequency to maximum (constant high frequency)"
FEATURE_RESTART[cpu_freq_lock]="none"
FEATURE_REQUIRES_ROOT[cpu_freq_lock]=1

# NVIDIA Composition Pipeline
FEATURE_NAME[nvidia_pipeline]="Disable NVIDIA Composition Pipeline"
FEATURE_DESC[nvidia_pipeline]="Remove composition pipeline (saves 1-2 frames latency)"
FEATURE_RESTART[nvidia_pipeline]="x11"
FEATURE_REQUIRES_ROOT[nvidia_pipeline]=1

# NVIDIA Composite Extension
FEATURE_NAME[nvidia_composite]="Disable X11 Composite Extension"
FEATURE_DESC[nvidia_composite]="Disable Composite (WARNING: breaks transparency)"
FEATURE_RESTART[nvidia_composite]="x11"
FEATURE_REQUIRES_ROOT[nvidia_composite]=1

# NVIDIA Triple Buffer
FEATURE_NAME[nvidia_triple_buffer]="Disable Triple Buffering"
FEATURE_DESC[nvidia_triple_buffer]="Disable triple buffering (reduces buffer lag)"
FEATURE_RESTART[nvidia_triple_buffer]="x11"
FEATURE_REQUIRES_ROOT[nvidia_triple_buffer]=1

# NVIDIA PowerMizer
FEATURE_NAME[nvidia_powermizer]="NVIDIA Max Performance Mode"
FEATURE_DESC[nvidia_powermizer]="Force GPU to maximum performance level"
FEATURE_RESTART[nvidia_powermizer]="x11"
FEATURE_REQUIRES_ROOT[nvidia_powermizer]=1

# ============================================================================
# UTILITY FUNCTIONS
# ============================================================================

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOGFILE"
}

check_root() {
    if [ "$EUID" -ne 0 ]; then
        return 1
    fi
    return 0
}

# Get highest restart level needed
get_highest_restart() {
    local current="$1"
    local new="$2"
    if [ "$current" = "reboot" ] || [ "$new" = "reboot" ]; then
        echo "reboot"
    elif [ "$current" = "x11" ] || [ "$new" = "x11" ]; then
        echo "x11"
    else
        echo "none"
    fi
}

# ============================================================================
# FEATURE: CPU Governor
# ============================================================================

check_cpu_governor() {
    [ ! -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ] && return 2
    local gov=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 2>/dev/null || echo "")
    [ "$gov" = "performance" ] && return 0 || return 1
}

install_cpu_governor() {
    for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
        echo performance > "$cpu" 2>/dev/null || true
    done
    log "CPU governor set to performance"
}

uninstall_cpu_governor() {
    for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
        echo powersave > "$cpu" 2>/dev/null || true
    done
    log "CPU governor reset to powersave"
}

# ============================================================================
# FEATURE: CPU EPP
# ============================================================================

check_cpu_epp() {
    [ ! -f /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference ] && return 2
    local epp=$(cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference 2>/dev/null || echo "")
    [ "$epp" = "performance" ] && return 0 || return 1
}

install_cpu_epp() {
    for cpu in /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference; do
        echo performance > "$cpu" 2>/dev/null || true
    done
    log "CPU EPP set to performance"
}

uninstall_cpu_epp() {
    for cpu in /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference; do
        echo balance_performance > "$cpu" 2>/dev/null || true
    done
    log "CPU EPP reset to balance_performance"
}

# ============================================================================
# FEATURE: CPU Boost
# ============================================================================

check_cpu_boost() {
    [ ! -f /sys/devices/system/cpu/cpufreq/boost ] && return 2
    local boost=$(cat /sys/devices/system/cpu/cpufreq/boost 2>/dev/null || echo "")
    [ "$boost" = "0" ] && return 0 || return 1
}

install_cpu_boost() {
    echo 0 > /sys/devices/system/cpu/cpufreq/boost 2>/dev/null || true
    log "CPU boost disabled"
}

uninstall_cpu_boost() {
    echo 1 > /sys/devices/system/cpu/cpufreq/boost 2>/dev/null || true
    log "CPU boost enabled"
}

# ============================================================================
# FEATURE: CPU Frequency Lock
# ============================================================================

check_cpu_freq_lock() {
    [ ! -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq ] && return 2
    local min_freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 2>/dev/null || echo "0")
    local max_freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq 2>/dev/null || echo "1")
    [ "$min_freq" = "$max_freq" ] && return 0 || return 1
}

install_cpu_freq_lock() {
    for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq; do
        local max_freq=$(cat "${cpu/scaling_min_freq/cpuinfo_max_freq}" 2>/dev/null) || continue
        echo "$max_freq" > "$cpu" 2>/dev/null || true
    done
    log "CPU frequency locked to maximum"
}

uninstall_cpu_freq_lock() {
    for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq; do
        local min_freq=$(cat "${cpu/scaling_min_freq/cpuinfo_min_freq}" 2>/dev/null) || continue
        echo "$min_freq" > "$cpu" 2>/dev/null || true
    done
    log "CPU frequency scaling restored"
}

# ============================================================================
# FEATURE: NVIDIA Composition Pipeline
# ============================================================================

check_nvidia_pipeline() {
    [ ! -f "$XORG_CONF" ] && return 2
    grep -q "ForceCompositionPipeline=Off" "$XORG_CONF" 2>/dev/null && return 0 || return 1
}

install_nvidia_pipeline() {
    [ ! -f "$XORG_CONF" ] && { log "ERROR: $XORG_CONF not found"; return 1; }
    local backup="${XORG_CONF}.backup-$(date +%Y%m%d-%H%M%S)"
    cp "$XORG_CONF" "$backup"
    sed -i 's/ForceCompositionPipeline=On/ForceCompositionPipeline=Off/g' "$XORG_CONF"
    sed -i 's/ForceFullCompositionPipeline=On/ForceFullCompositionPipeline=Off/g' "$XORG_CONF"
    log "NVIDIA composition pipeline disabled (backup: $backup)"
}

uninstall_nvidia_pipeline() {
    [ ! -f "$XORG_CONF" ] && { log "ERROR: $XORG_CONF not found"; return 1; }
    sed -i 's/ForceCompositionPipeline=Off/ForceCompositionPipeline=On/g' "$XORG_CONF"
    sed -i 's/ForceFullCompositionPipeline=Off/ForceFullCompositionPipeline=On/g' "$XORG_CONF"
    log "NVIDIA composition pipeline enabled"
}

# ============================================================================
# FEATURE: NVIDIA Composite Extension
# ============================================================================

check_nvidia_composite() {
    [ ! -f "$XORG_CONF" ] && return 2
    grep -q '"Composite" "false"' "$XORG_CONF" 2>/dev/null && return 0 || return 1
}

install_nvidia_composite() {
    [ ! -f "$XORG_CONF" ] && { log "ERROR: $XORG_CONF not found"; return 1; }
    local backup="${XORG_CONF}.backup-$(date +%Y%m%d-%H%M%S)"
    cp "$XORG_CONF" "$backup"
    sed -i 's/Option.*"Composite" "true"/Option         "Composite" "false"/' "$XORG_CONF"
    if ! grep -q '"Composite"' "$XORG_CONF"; then
        sed -i '/^Section "Extensions"/a\    Option         "Composite" "false"' "$XORG_CONF"
    fi
    log "X11 Composite extension disabled (backup: $backup)"
}

uninstall_nvidia_composite() {
    [ ! -f "$XORG_CONF" ] && { log "ERROR: $XORG_CONF not found"; return 1; }
    sed -i 's/Option.*"Composite" "false"/Option         "Composite" "true"/' "$XORG_CONF"
    log "X11 Composite extension enabled"
}

# ============================================================================
# FEATURE: NVIDIA Triple Buffer
# ============================================================================

check_nvidia_triple_buffer() {
    [ ! -f "$XORG_CONF" ] && return 2
    grep -q '"TripleBuffer" "False"' "$XORG_CONF" 2>/dev/null && return 0 || return 1
}

install_nvidia_triple_buffer() {
    [ ! -f "$XORG_CONF" ] && { log "ERROR: $XORG_CONF not found"; return 1; }
    local backup="${XORG_CONF}.backup-$(date +%Y%m%d-%H%M%S)"
    cp "$XORG_CONF" "$backup"
    if ! grep -q "TripleBuffer" "$XORG_CONF"; then
        sed -i '/^Section "Device"/,/^EndSection/ {
            /^EndSection/ i\    Option         "TripleBuffer" "False"
        }' "$XORG_CONF"
    else
        sed -i 's/"TripleBuffer" "[Tt]rue"/"TripleBuffer" "False"/g' "$XORG_CONF"
    fi
    log "NVIDIA triple buffering disabled (backup: $backup)"
}

uninstall_nvidia_triple_buffer() {
    [ ! -f "$XORG_CONF" ] && { log "ERROR: $XORG_CONF not found"; return 1; }
    sed -i 's/"TripleBuffer" "False"/"TripleBuffer" "True"/g' "$XORG_CONF"
    log "NVIDIA triple buffering enabled"
}

# ============================================================================
# FEATURE: NVIDIA PowerMizer
# ============================================================================

check_nvidia_powermizer() {
    [ ! -f "$XORG_CONF" ] && return 2
    grep -q "PowerMizerEnable=0x1.*PerfLevelSrc=0x3333" "$XORG_CONF" 2>/dev/null && return 0 || return 1
}

install_nvidia_powermizer() {
    [ ! -f "$XORG_CONF" ] && { log "ERROR: $XORG_CONF not found"; return 1; }
    local backup="${XORG_CONF}.backup-$(date +%Y%m%d-%H%M%S)"
    cp "$XORG_CONF" "$backup"
    if ! grep -q "PowerMizerEnable" "$XORG_CONF"; then
        sed -i '/^Section "Device"/,/^EndSection/ {
            /^EndSection/ i\    Option         "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3333; PowerMizerLevel=0x3; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x3"
        }' "$XORG_CONF"
    fi
    log "NVIDIA PowerMizer set to max performance (backup: $backup)"
}

uninstall_nvidia_powermizer() {
    [ ! -f "$XORG_CONF" ] && { log "ERROR: $XORG_CONF not found"; return 1; }
    sed -i '/PowerMizer/d' "$XORG_CONF"
    log "NVIDIA PowerMizer settings removed"
}

# ============================================================================
# MENU SYSTEM
# ============================================================================

show_menu() {
    local restart_needed="$1"
    clear
    echo "============================================================================"
    echo "  Low Latency Optimizer - Interactive Mode"
    echo "============================================================================"
    echo ""
    echo "Select features to enable/disable:"
    echo ""
    local i=1
    for feature_id in "${FEATURE_IDS[@]}"; do
        local status="[N/A]"
        local color=""
        if check_${feature_id} 2>/dev/null; then
            local ret=$?
            if [ $ret -eq 0 ]; then
                status="[ON ]"
                color="\033[32m"
            elif [ $ret -eq 1 ]; then
                status="[OFF]"
                color="\033[90m"
            else
                status="[N/A]"
                color="\033[90m"
            fi
        fi
        printf "  %2d) ${color}%s\033[0m %s\n" "$i" "$status" "${FEATURE_NAME[$feature_id]}"
        printf "      %s\n" "${FEATURE_DESC[$feature_id]}"
        echo ""
        ((i++))
    done
    echo "  a) Apply all optimizations"
    echo "  r) Remove all optimizations"
    echo "  s) Show current status"
    echo "  q) Quit"
    echo ""
    if [ -n "$restart_needed" ] && [ "$restart_needed" != "none" ]; then
        echo "============================================================================"
        case "$restart_needed" in
            x11)
                echo "⚠ Changes require X11 restart (logout/login)"
                ;;
            reboot)
                echo "⚠ Changes require system reboot"
                ;;
        esac
        echo "============================================================================"
        echo ""
    fi
}

show_status() {
    clear
    echo "============================================================================"
    echo "  Current System Status"
    echo "============================================================================"
    echo ""
    echo "CPU:"
    echo "  Governor:  $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 2>/dev/null || echo N/A)"
    echo "  EPP:       $(cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference 2>/dev/null || echo N/A)"
    echo "  Frequency: $(awk '{printf "%.0f MHz", $1/1000}' /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 2>/dev/null || echo N/A)"
    echo "  Boost:     $(cat /sys/devices/system/cpu/cpufreq/boost 2>/dev/null || echo N/A) (0=off, 1=on)"
    echo ""
    echo "GPU:"
    nvidia-smi --query-gpu=name,pstate,clocks.gr --format=csv,noheader 2>/dev/null | \
        awk -F', ' '{print "  GPU:       " $1 "\n  State:     " $2 "\n  Clock:     " $3}' || echo "  N/A"
    echo ""
    read -p "Press Enter to continue..."
}

toggle_feature() {
    local feature_id="$1"
    if ! check_root; then
        echo ""
        echo "Error: Root privileges required for this operation"
        echo "Please run: sudo $0"
        echo ""
        read -p "Press Enter to continue..."
        return 1
    fi
    echo ""
    echo "Feature: ${FEATURE_NAME[$feature_id]}"
    if check_${feature_id} 2>/dev/null; then
        local ret=$?
        if [ $ret -eq 0 ]; then
            echo "Currently: ENABLED"
            read -p "Disable this feature? (y/n): " confirm
            if [ "$confirm" = "y" ]; then
                uninstall_${feature_id}
                echo "✓ Feature disabled"
            fi
        elif [ $ret -eq 1 ]; then
            echo "Currently: DISABLED"
            read -p "Enable this feature? (y/n): " confirm
            if [ "$confirm" = "y" ]; then
                install_${feature_id}
                echo "✓ Feature enabled"
            fi
        else
            echo "Status: Not available on this system"
        fi
    fi
    echo ""
    read -p "Press Enter to continue..."
    echo "${FEATURE_RESTART[$feature_id]}"
}

apply_all() {
    if ! check_root; then
        echo ""
        echo "Error: Root privileges required"
        echo "Please run: sudo $0"
        echo ""
        read -p "Press Enter to continue..."
        return 1
    fi
    echo ""
    echo "Enabling all optimizations..."
    echo ""
    local restart_needed="none"
    for feature_id in "${FEATURE_IDS[@]}"; do
        if check_${feature_id} 2>/dev/null; then
            local ret=$?
            if [ $ret -eq 1 ]; then
                echo "Enabling: ${FEATURE_NAME[$feature_id]}"
                install_${feature_id} 2>&1 | grep -v "^$"
                restart_needed=$(get_highest_restart "$restart_needed" "${FEATURE_RESTART[$feature_id]}")
            fi
        fi
    done
    echo ""
    echo "✓ All optimizations applied"
    echo ""
    read -p "Press Enter to continue..."
    echo "$restart_needed"
}

remove_all() {
    if ! check_root; then
        echo ""
        echo "Error: Root privileges required"
        echo "Please run: sudo $0"
        echo ""
        read -p "Press Enter to continue..."
        return 1
    fi
    echo ""
    echo "Removing all optimizations..."
    echo ""
    local restart_needed="none"
    for feature_id in "${FEATURE_IDS[@]}"; do
        if check_${feature_id} 2>/dev/null; then
            local ret=$?
            if [ $ret -eq 0 ]; then
                echo "Disabling: ${FEATURE_NAME[$feature_id]}"
                uninstall_${feature_id} 2>&1 | grep -v "^$"
                restart_needed=$(get_highest_restart "$restart_needed" "${FEATURE_RESTART[$feature_id]}")
            fi
        fi
    done
    echo ""
    echo "✓ All optimizations removed"
    echo ""
    read -p "Press Enter to continue..."
    echo "$restart_needed"
}

# ============================================================================
# MAIN INTERACTIVE LOOP
# ============================================================================

main_interactive() {
    local restart_needed="none"
    while true; do
        show_menu "$restart_needed"
        read -p "Choice: " choice
        case "$choice" in
            [0-9]|[0-9][0-9])
                local idx=$((choice - 1))
                if [ $idx -ge 0 ] && [ $idx -lt ${#FEATURE_IDS[@]} ]; then
                    local feature_id="${FEATURE_IDS[$idx]}"
                    local new_restart=$(toggle_feature "$feature_id")
                    restart_needed=$(get_highest_restart "$restart_needed" "$new_restart")
                fi
                ;;
            a|A)
                local new_restart=$(apply_all)
                restart_needed=$(get_highest_restart "$restart_needed" "$new_restart")
                ;;
            r|R)
                local new_restart=$(remove_all)
                restart_needed=$(get_highest_restart "$restart_needed" "$new_restart")
                ;;
            s|S)
                show_status
                ;;
            q|Q)
                break
                ;;
            *)
                echo "Invalid choice"
                sleep 1
                ;;
        esac
    done
    if [ -n "$restart_needed" ] && [ "$restart_needed" != "none" ]; then
        echo ""
        echo "============================================================================"
        case "$restart_needed" in
            x11)
                echo "Changes require X11 restart to take effect"
                echo ""
                echo "Options:"
                echo "  - Logout and login"
                echo "  - Reboot system"
                ;;
            reboot)
                echo "Changes require system reboot to take effect"
                ;;
        esac
        echo "============================================================================"
    fi
    echo ""
    echo "Changes logged to: $LOGFILE"
}

# ============================================================================
# ENTRY POINT
# ============================================================================

main_interactive

Features & Optimizations

  • Interactive Menu: Live status display with color-coded toggles ([ON]/[OFF]/[N/A])
  • Smart Restart Detection: Automatically tracks when X11 restart or reboot is needed
  • Modular Architecture: Easy to add or remove features

Optimization Effect Restart
CPU Optimizations
CPU Performance Governor No frequency scaling None
CPU EPP to Performance Max power state None
Disable CPU Boost Consistent timing None
Lock CPU Frequency Constant high freq None
NVIDIA GPU Optimizations
Disable Composition Pipeline -1-2 frames latency X11
Disable Composite Extension Direct rendering X11
Disable Triple Buffering Reduced buffer lag X11
NVIDIA Max Performance Force max GPU state X11

Usage Examples

$ sudo ./optimize-interactive.sh

============================================================================
  Low Latency Optimizer - Interactive Mode
============================================================================

Select features to enable/disable:

   1) [OFF] CPU Performance Governor
      Set scaling governor to performance (no frequency scaling)

   2) [OFF] CPU Energy Performance Preference
      Set EPP to performance (maximum power state)

   3) [ON ] Disable CPU Boost
      Disable boost for consistent timing (reduces peak frequency)

   [...]

   a) Apply all optimizations
   r) Remove all optimizations
   s) Show current status
   q) Quit

Choice: _

Customization

The script uses a modular architecture. Adding a new feature requires:

1. Register feature ID in FEATURE_IDS array
2. Define metadata (name, description, restart requirement)
3. Implement: check_FEATURE(), install_FEATURE(), uninstall_FEATURE()

Example: Adding a new feature

# 1. Register
FEATURE_IDS+=("my_feature")

# 2. Metadata
FEATURE_NAME[my_feature]="My Custom Optimization"
FEATURE_DESC[my_feature]="What this does"
FEATURE_RESTART[my_feature]="x11"  # or "none" or "reboot"
FEATURE_REQUIRES_ROOT[my_feature]=1

# 3. Implement functions
check_my_feature() {
    # Return 0 if enabled, 1 if disabled, 2 if N/A
}

install_my_feature() {
    # Enable the feature
}

uninstall_my_feature() {
    # Disable the feature
}

/udev

G-Wolves Mouse udev Rule

To access G-Wolves mouse settings through their web-based software on Linux, you need to create a udev rule that allows your user to access the USB receiver.


Step 1: Identify your mouse's Vendor ID and Product ID

$ lsusb

Look for a line containing "G-Wolves". Example output:

Bus 003 Device 003: ID 33e4:3717 G-Wolves G-Wolves Fenrir Max 8K Wireless Mouse-N

In this example: 33e4 is the Vendor ID, 3717 is the Product ID


Step 2: Create the udev rule

$ sudo vim /etc/udev/rules.d/70-g-wolves.rules

Step 3: Add the rule content

Paste this line, replacing the IDs with your mouse's values:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="33e4", ATTRS{idProduct}=="3717", MODE="0660", TAG+="uaccess"

Step 4: Apply the changes

$ sudo reboot
Note: The web-based software only works in chromium based browsers. No Firefox sadly.

Credit: Reddit post by u/MouseReview community


/display

X11 vs Wayland Discussion

Wayland is the future. It brings modern features, better security, and fixes a ton of legacy X11 issues. But when it comes to pure gaming performance, especially minimizing input and presentation latency, X11 as of 2025 is still faster.


X11 delivers consistently lower latency than Wayland.

Two in-depth benchmarks-one from mort.coffee (2025-01-26) and another from zamundaaa.github.io (2021-12-14)-have explored this topic in detail. Both are well worth reading for anyone interested in input latency on Wayland versus X11. For convenience, a summary is provided below.

Mort's Latency Discussion: Wayland ≈ +6.5ms Lag

Findings:

  • * Wayland (GNOME): 23.2 ms
  • * X11 (GNOME): 16.7 ms

X11 is ~6.5 ms faster - roughly one full frame at 144Hz.

Zamundaaa's Latency Report: X11's Immediate Modes Beat Wayland's FIFO

Findings:

  • * X11 (with uncomposited or "immediate" presentation) is fastest.
  • * Wayland compositors add buffering - especially when VSync and compositing are enabled.
  • * Worst-case (99th percentile) latency was also better under X11.

"Wayland is catching up,” zamundaaa notes, but “X11 is still the better choice for absolute lowest latency.”

TLDR: Current data suggests that X11 still offers lower input latency compared to Wayland in many scenarios. Additionally, disabling your compositor can help reduce latency further. For now (as of 2025), sticking with X11 may be the better option if minimizing input delay is your priority.