Skip to main content

Logitech G13 Linux driver with macro support, RGB control, and LCD display management

Project description

G13 Linux

PyPI Downloads Python CI License: MIT

Python userspace driver for the Logitech G13 Gaming Keyboard on Linux.

Features

  • 22 Programmable G-Keys with macro support
  • RGB Backlight Control with full color range
  • 160x43 LCD Display with custom text and graphics
  • Thumbstick Support with configurable zones
  • Profile Management for different applications
  • Per-Application Profiles - automatically switch profiles based on active window
  • PyQt6 GUI for visual configuration

Installation

# From PyPI
pip install g13-linux

# Or with pipx (recommended for CLI tools)
pipx install g13-linux

System Dependencies

# Ubuntu/Debian
sudo apt install libhidapi-hidraw0

# Fedora
sudo dnf install hidapi

udev Rules (Required)

# Allow non-root access to G13
sudo cp udev/99-logitech-g13.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

Usage

CLI

g13-linux --help              # Show help
g13-linux --version           # Show version
g13-linux                     # Run the input daemon
g13-linux run                 # Run the input daemon (explicit)

# LCD control
g13-linux lcd "Hello World"   # Display text on LCD
g13-linux lcd --clear         # Clear the LCD

# Backlight control
g13-linux color red           # Set backlight to red
g13-linux color "#FF6600"     # Set backlight to hex color
g13-linux color 255,128,0     # Set backlight to RGB

# Profile management
g13-linux profile list        # List available profiles
g13-linux profile show eve    # Show profile details
g13-linux profile load eve    # Load and apply a profile
g13-linux profile create new  # Create a new profile
g13-linux profile delete old  # Delete a profile

GUI

g13-linux-gui         # Launch the configuration GUI

Python API

from g13_linux import open_g13, G13Mapper

# Open device and start mapping
device = open_g13()
mapper = G13Mapper()

# Read events
while True:
    data = read_event(device)
    if data:
        mapper.handle_raw_report(data)

Per-Application Profiles

Automatically switch G13 profiles when you switch applications. For example, load your EVE Online profile when EVE is focused, and switch to your browser profile when Firefox is active.

Setup (GUI)

  1. Launch the GUI: g13-linux-gui
  2. Go to the App Profiles tab
  3. Click Add Rule to create a new rule:
    • Rule Name: A friendly name (e.g., "EVE Online")
    • Pattern: Regex pattern to match (e.g., EVE - or firefox)
    • Match Type: Match against window name, WM_CLASS, or both
    • Profile: Select which profile to activate
  4. Enable auto-switching with the toggle at the top
  5. Click Test to see the current window's info

Configuration File

Rules are stored in ~/.config/g13-linux/app_profiles.json:

{
  "rules": [
    {
      "name": "EVE Online",
      "pattern": "EVE -",
      "match_type": "window_name",
      "profile_name": "eve_online",
      "enabled": true
    },
    {
      "name": "Firefox",
      "pattern": "firefox",
      "match_type": "wm_class",
      "profile_name": "browser",
      "enabled": true
    }
  ],
  "default_profile": "default",
  "enabled": true
}

Requirements

  • X11 only: Requires xdotool for window detection (not available on Wayland)
  • Install: sudo apt install xdotool

How It Works

  1. A background thread polls the active window every 500ms using xdotool
  2. When the active window changes, rules are matched against window name and WM_CLASS
  3. First matching rule triggers a profile switch
  4. If no rules match, the default profile is loaded (if configured)

Hardware

Component Status
G1-G22 Keys ✅ Working
M1-M3 Mode Keys ✅ Working
MR Key ✅ Working
Thumbstick ✅ Working
LCD Display ✅ Working
RGB Backlight ✅ Working

Note: Button input requires either:

  • udev rules for hidraw access, or
  • sudo with libusb mode (g13-linux-gui --libusb)

Linux kernel 6.19+ will include native hid-lg-g15 support for G13.

Development

# Clone and setup
git clone https://github.com/AreteDriver/G13_Linux.git
cd G13_Linux
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run tests
pytest

# Lint
ruff check src/ tests/

License

MIT License - see LICENSE for details.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

g13_linux-1.5.6.tar.gz (146.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

g13_linux-1.5.6-py3-none-any.whl (82.0 kB view details)

Uploaded Python 3

File details

Details for the file g13_linux-1.5.6.tar.gz.

File metadata

  • Download URL: g13_linux-1.5.6.tar.gz
  • Upload date:
  • Size: 146.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for g13_linux-1.5.6.tar.gz
Algorithm Hash digest
SHA256 5f54859082e514e7b2229b9a77bf7c11bac84c69687b910b8c1f4605ba6072ec
MD5 2b2d723a18e1f1fee5bab9dc5b320049
BLAKE2b-256 02ca4aa611368dc06f872d4dfa7168182ae6a7c8369b1428bacda708af77b307

See more details on using hashes here.

Provenance

The following attestation bundles were made for g13_linux-1.5.6.tar.gz:

Publisher: release.yml on AreteDriver/G13_Linux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file g13_linux-1.5.6-py3-none-any.whl.

File metadata

  • Download URL: g13_linux-1.5.6-py3-none-any.whl
  • Upload date:
  • Size: 82.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for g13_linux-1.5.6-py3-none-any.whl
Algorithm Hash digest
SHA256 dc38388fc7e12ce62479956f3db071e547206f18b0d750d03b1b3fe1360732e4
MD5 3ac341ed535b10d5399a22b4df7cf5c3
BLAKE2b-256 c8520dd429c27a76f10c8b8e7a5c59c150bcd2c30a93b93e7bc795e716ced07b

See more details on using hashes here.

Provenance

The following attestation bundles were made for g13_linux-1.5.6-py3-none-any.whl:

Publisher: release.yml on AreteDriver/G13_Linux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page