Skip to content

feat(gui): drive Area-51 lighting from the GUI without linking AlienFX - #165

Open
tfeuerbach wants to merge 3 commits into
tr1xem:mainfrom
tfeuerbach:feat/area51-lighting
Open

tfeuerbach wants to merge 3 commits into
tr1xem:mainfrom
tfeuerbach:feat/area51-lighting

Conversation

@tfeuerbach

@tfeuerbach tfeuerbach commented Sep 30, 2026 •

Copy link
Copy Markdown

Summary

Depends on tr1xem/alienfx-linux#14. AWCC does not link the AlienFX SDK. The GUI runs alienfx_cli for the Area-51 keyboard and the power button. Chassis lights stay on AWCC's EffectController.

  • On the Alienware 16 Area-51 AA16250 the keyboard is Darfon 0d62:1bbc and the chassis, including the power button, is AW-ELC 187c:0551. The GUI uses setkeys, keyboardeffect, and keyboarddim for the keys, and powerbutton or powerrainbow for the power button. AWCC_ALIENFX_CLI selects the CLI. AWCC_DATABASE selects database.json.
  • The keyboard page draws that deck, including the power button and the trackpad. Keyboard Apply covers the keys, the power button, and the trackpad. The Power and Trackpad pages can override just those parts. Rainbow leaves the power button out of the fast chassis animation and uses powerrainbow, so that one LED does not strobe or turn off.
  • The last successful Apply is stored in ~/.config/awcc/lighting.json. A change made only with alienfx_cli is not shown until the next Apply here. The hardware cannot report its colors.
  • Other models keep their own keyboardZones for the AWCC command line and for All lighting. The separate lighting pages use the AA16250 zone split, so those pages can be empty on another model. The on-screen keyboard is an AA16250 picture. The Alienware 18 Area-51 AA18250 keyboard is not verified.
  • app/70-awcc.rules grants the desktop user the ELC and Darfon hidraw nodes. It is named 70- so it runs before systemd's seat rules.
  • The sidebar installer downloads the latest tr1xem/alienfx-linux release. That release does not include the Area-51 commands until the companion pull request is released. Until then, point AWCC_ALIENFX_CLI at a build of that branch.

Added after this pull request was opened

3f305beb78492ee00ea43902903b7000f8931652

test: add pipe and lint checks so later changes keep the CLI working

  • GitHub Actions runs the checks on every pull request, then once on each push to main. A new push to the same request cancels the run already in progress.
  • The pipe test feeds stdin to awcc --test-mode and checks help text and an unknown command. --test-mode and -v are flags, so that check still runs on a machine that is not in database.json.
  • The lint test walks the C and C++ sources for trailing whitespace, CR bytes, a missing final newline, and conflict markers.
  • The lighting plan and the fan-curve math now live in headers the program uses, so a later edit is checked against the behavior that already works. Neither check names a laptop or opens a USB device. The checklist below is still the hardware check.

UI and UX

  • The window is resizable, opens at 1180×780, and will not go below 980×640. There is no OS title bar. The top bar has Launch on startup, Hide to background, and Quit AWCC. The window X and Hide only hide the window, so the software fan curve can keep running. Quit stops the process. A second launch raises the window that is already open.
  • The left navbar stays up. Its highlight slides to the new item, and the page fades when the section or lighting page changes. Quit, Support, and the version line share the same left inset. If alienfx_cli is missing, the sidebar offers to install the upstream release.
  • Thermal modes use a sliding highlight, and each mode has a tooltip. Fan Extra is a boost on top of the thermal mode, not a percent of maximum speed. At 0 the thermal mode still runs the fans. The optional curve has four points each for the CPU and GPU fans, is saved under ~/.config/awcc/fan-curve.json, and keeps ticking while the window is hidden.
  • Lighting pages are Keyboard, Logo, Lightbar, Speakers, Trackpad, Power, and All lighting. The keyboard menu lists Static, Breathe, Spectrum, Wave, Rainbow, Back and Forth, Default blue, and Pulse. Click, Ctrl-click, and drag select keys. Previews are simple animations, not a copy of the firmware clock. Spectrum is one hue on every key. Rainbow slides across the deck. Wave and Back and Forth move right to left. The keyboard still receives wave for Back and Forth. Legend text is black or white against the key color. Color pickers commit with OK and restore the previous color on Cancel or a click away.
  • Until AWCC has applied a setting, the page says it is not set yet and the deck is gray. After Apply it says the setting was last set in AWCC.

Screenshots

Taken from the Area-51 AA16250 GUI.

Performance
Keyboard
Power
All lighting

Test plan

  • With AWCC_ALIENFX_CLI pointed at a build that includes feat(cli): add Area-51 per-key color, keyboard effects, and power-button control alienfx-linux#14, Keyboard Apply sets per-key color and keyboard effects, and the power button and trackpad follow that Apply.
  • Power Apply and Trackpad Apply override only those parts. A later Keyboard Apply takes them back.
  • All lighting rainbow changes the chassis and the keyboard, and the power button cycles colors instead of strobing or turning off.
  • Quit the window with X, reopen AWCC, and the last Apply is restored. A terminal alienfx_cli change is not shown until the next Apply.
  • On another model, All lighting and the AWCC command line still use that model's zones. The Area-51 keyboard commands are not sent when that keyboard is absent.
  • Hide to background keeps the fan curve running. Quit stops it.

tfeuerbach and others added 2 commits September 30, 2026 12:00
Run alienfx_cli for per-key color, keyboard effects, and the power button,
and keep chassis lights on the ELC. Remember the last Apply, preview effects,
and keep a software fan curve running while the window is hidden.
Co-authored-by: Cursor <cursoragent@cursor.com>
Feed stdin to awcc and lint the C and C++ sources on every pull request and on each push to main. The lighting plan, fan-curve math, and --test-mode flag stay shared with the program, so a later edit is checked against the behavior that already works.
@tr1xem

tr1xem commented Oct 13, 2026

Copy link
Copy Markdown
Owner

what about other devices? which have one key colour or 4 zone rgb?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants