Skip to content

Repository files navigation

Alienware Lighting Controller

A Qt 6 / QML desktop app that controls Alienware RGB lighting on Linux, with a visual zone selector that mirrors the physical laptop layout (lid logo, power button, keyboard sections, numpad).

The lighting is driven by the alien-lights utility, which talks to the Alienware AW-ELC USB controller (187c:0550) directly via libusb — no Alienware Command Center, no Windows.

Features

  • Visual zone selector matching the real hardware layout: each zone shows its current color as backlit keys and an LED strip
  • The selected zone previews the color you are about to apply before you apply it
  • Per-zone and all-zone color control
  • Named colors or #RRGGBB values, live preview swatches and a custom RGB picker
  • Global brightness control (0-100%)
  • 5 built-in themes — Alien Green, Nebula Blue, Cyber Red, Ultraviolet, and a light "Moon Ghost" — with animated accent color changes
  • Vector Alienware-style head logo rendered in QML, also used as the app icon
  • Last color/brightness is saved and re-applied on every boot
  • Companion kbd CLI and kbd-id zone-identification helper

Zones

The AW-ELC controller on this machine exposes 7 lighting segments; the app controls the 6 that are actually visible on the hardware:

# Zone
0 Lid (Alienware logo)
1 Power button
2 Keyboard – left
3 Keyboard – middle
4 Keyboard – right
5 Numpad

Zone ordering can differ between Alienware models. Run kbd-id to identify each segment on your hardware.

Requirements

  • Linux (tested on Ubuntu 24.04 / Pop!_OS)
  • An Alienware system with AW-ELC USB controller (187c:0550)
  • Qt 6 (Core, Quick) and CMake ≥ 3.16
  • Python 3 + libusb-1.0 for alien-lights

Build & run

# 1. Install the alien-lights backend (installs the CLI to ~/.local/bin
#    and a udev rule so the controller is accessible without sudo)
git clone https://github.com/JakeLaney/alien-lights.git
cd alien-lights && ./install.sh && cd ..

# 2. Build the app
cd kbd-app
cmake -S . -B build
cmake --build build

# 3. Run
./build/alienware-kbd

Optional: install the desktop launcher (the app window also uses the bundled Alienware head icon):

cp kbd-app/alienware-kbd.desktop ~/.local/share/applications/
mkdir -p ~/.local/share/icons/hicolor/256x256/apps
cp kbd-app/icons/alienware-kbd.png ~/.local/share/icons/hicolor/256x256/apps/
gtk-update-icon-cache -f -t ~/.local/share/icons/hicolor || true

USB access (udev)

Install the udev rule so the controller is accessible to desktop users and plugdev members, then log out and back in:

sudo cp 99-alienfx.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo usermod -aG plugdev $USER

Persistence across reboots

The app (and kbd CLI) save the last color and brightness to ~/.config/alienware-kbd/state.conf. A systemd unit re-applies it at boot:

sudo cp kbd-restore.service /etc/systemd/system/
sudo systemctl enable --now kbd-restore

The service and scripts reference per-user paths (/home/…); adjust kbd-restore.service and kbd-restore.sh for your own user.

CLI helpers

./kbd color cyan                 # all zones cyan
./kbd lid red                    # lid only
./kbd numpad 00FF00              # numpad only, hex color
./kbd bright 200                 # brightness (0-255 CLI input, stored/applied as 0-100%)
./kbd off                        # lights off
./kbd-id                         # flash each zone to identify it

Continuous integration

A GitHub Actions workflow (.github/workflows/build.yml) builds the app on Ubuntu, lints the QML with qmllint, smoke-tests it headlessly, and syntax-checks the shell scripts on every push and PR.

Troubleshooting

  • alien-lights: AW-ELC is present but its USB device node is not writable — the udev rule is missing or your user is not in plugdev.
  • The controller does not report its current color/brightness; the app restores the last saved state instead.

License

GPL-3.0

About

Qt 6/QML desktop app to control Alienware RGB lighting on Linux (AW-ELC 187c:0550), backed by alien-lights

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages