Framework Deck — All-In-One Desktop Companion for Framework Laptops (Windows + Linux)

Framework Deck — All-In-One Desktop Companion for Framework Laptops (Windows + Linux)

Hey everyone! Some of you may remember Input Architect — the keyboard/macropad configurator I posted a few weeks back. I got some great feedback from the community, and it pushed me to take the project much further than I originally planned.

Input Architect has evolved into Framework Deck — a unified desktop companion that combines everything Input Architect did with real-time hardware telemetry, fan control, power management, battery health monitoring, LED Matrix editing, and more. All in one window. One app, everything you need.

Input Architect is now archived on GitHub. If you were using it, Framework Deck is a drop-in replacement — same WebHID connection, same VIA protocol, your saved configs still export/import as JSON.


What does it look like?


Live oscilloscope dashboard on a Framework 16 — AMD Ryzen AI 9 HX 370 + RTX 5070, 10 sensor channels, fan RPM, power & battery at a glance.


What’s in the box?

Live Oscilloscope Dashboard

Real-time multi-channel waveform display — every sensor gets its own stacked lane with color coding. APU, CPU-EC, DDR, EC, dGPU, GPU-AMB, GPU-VR, VRAM temps, plus both fan RPM channels. Time window is configurable (1m/5m/10m/30m), hover for exact values, CRT scanline overlay for that Tektronix vibe.

Keyboard & Macropad Configurator (everything from Input Architect, plus more)

  • Full VIA key remapping — 6 layers, 100+ QMK keycodes, layer switching (MO/TG/TO)
  • Per-key RGB lighting control (with nucleardog firmware)
  • Shift+click range select, Ctrl+click multi-select, key group presets (WASD, FPS, MOBA, etc.)
  • Config snapshots — save, restore, export as JSON, auto-history
  • Multi-device switching — connect keyboard and macropad at the same time
  • Auto-reconnect with full RGB restore after sleep/wake
  • Built-in firmware flash guide with UF2 validation and one-click build script
  • LED diagnostics + health check

Fan Control

AUTO, MANUAL, and CURVE modes. Manual duty % slider with live RPM readout. Separate AC and Battery profiles.

Power Management

TDP slider from 5W to 145W in 5W steps with live TDP readout. Thermal limit control. AC/Battery profile switching.

Battery Health

State of charge with segmented bar visualization. Battery health % (current max vs. design capacity). Live voltage, current, remaining mAh, cycle count. Charge limit control — cap your battery at 80% or 95% to extend lifespan.

LED Matrix Editor (Framework 16)

Click or drag to paint individual LEDs on the 306-LED display panel. Pattern presets: CLEAR, FILL, CHECKER, BORDER, CROSS, WAVE. Module slot inventory shows what’s installed in each physical slot.

System Information

CPU, GPU, mainboard, memory, OS. BIOS version, EC firmware build, power state capabilities, current TDP.

Settings & Accessibility

Four color themes — REEL (Teenage Engineering cream/red/blue, the default), PHOS (phosphor green Tektronix), AMBR (HP amber terminal), FW (Framework blue). Independent text size and UI zoom sliders. High contrast mode. Reduced motion. Temperature units (°C/°F). Configurable warning thresholds.


Download

Download Framework Deck (latest release) →

Platform Package
Windows 11/10 .exe installer (NSIS, recommended) or .msi
Linux (any distro) .AppImage — make executable and run, no install needed
Debian / Ubuntu .debsudo dpkg -i framework-deck_*.deb
Fedora / RHEL .rpmsudo rpm -i framework-deck-*.rpm

Built with Tauri 2 — lightweight native window, ~2 MB installer, not Electron.

For telemetry features (the oscilloscope, fan control, power, battery, system info): you need the framework-control service running. It’s a small Rust service that talks to the EC.

The keyboard configurator works standalone — no backend needed, just WebHID.


Supported Hardware

Telemetry:

  • Framework Laptop 13 (AMD / Intel)
  • Framework Laptop 16 (AMD Ryzen 7040 / Ryzen AI 300)

Keyboard Configurator:

Module Per-Key RGB
Framework 16 ANSI Keyboard (0x0012) With nucleardog firmware
Framework 16 RGB Macropad (0x0013) With nucleardog firmware

Looking for testers!

I’ve been developing on Windows with a Framework 16 (Ryzen AI 300 + RTX 5070). I’m especially interested in feedback from:

Linux users:

  • Does the AppImage / .deb / .rpm launch and render correctly on your distro?
  • Does framework-control work with ectool on your setup?
  • Does WebHID keyboard access work? (You may need udev rules for VID 0x32AC)
  • Does auto-reconnect work after suspend/resume?

Framework 13 users:

  • Does the telemetry dashboard show the right sensors for your model?
  • Do fan control and power management work correctly?

Anyone with different firmware:

  • Stock Framework QMK, tagno25 OpenRGB, Shandower81 CORY — does the configurator detect and work with yours?

General feedback:

  • Any crashes, rendering glitches, or controls that feel wrong?
  • Missing sensors or incorrect readings?
  • Feature requests — what would make this more useful for your daily workflow?

What’s coming next

Feature Status
Light mode theme Planned — for the three of you who prefer it
Floating desktop widget Planned — compact always-on-top overlay with custom graphs
System tray mode Planned — run in the notification area without a taskbar entry
Fan curve visual editor Planned — drag-curve editor plotted against temperature
Alert thresholds Planned — notifications when sensors exceed limits
LED Matrix animations Planned — scrolling text, reactive patterns
CSV/JSON telemetry export Planned

We’re willing to build and test any number of iterations to get this right. If something is broken on your specific hardware/firmware combo, open an issue on GitHub and we’ll fix it.


Source Code & Contributing

GitHub: github.com/enkode/FrameworkDeck

MIT licensed. Issues, pull requests, and hardware testing reports all welcome. The full changelog (including all 38 Input Architect versions) is in CHANGELOG.md.

Credits

Framework Deck is built on top of some excellent open-source work:

  • ozturkkl/framework-control — the Rust telemetry backend
  • nucleardog — per-key RGB firmware that makes the lighting features possible
  • FrameworkComputer — QMK firmware, VIA definitions, EC documentation, inputmodule-rs
  • MJ1 and Per_Magnus_Tveten — early Input Architect testers whose feedback shaped the configurator

Thanks for building great hardware. Happy to answer any questions!

2 Likes

This post is way too much for someone to grasp. Almost as if it was made by an AI with no guidance.

Can you provide a TLDR or quick summary on what this app’s purpose is and why someone should use it?

1 Like

:laughing: Sure thing, buddy. Provides per key RGB keyboard and macropad customization, visuals on your system hardware, key mapping, power controls, thermals, etc.

There were no prompt to choose where file should be saved or download indicator. I just discovered files in my Download folder
:man_facepalming:

Hi, I tried to play with compiling firmware and flashing but it looks like something is broken.

I have FW16 7940HS, Windows 11 with latest patches, RGB ANSI English gen 1 keyboard, bios 4.03 (latest)

When I click on any link in firmware section nothing happen. I could only expand section “Show manual build commands” I tried to follow them in WSL and QMKSYS. I was able to build uf2 file for “Per–Key RGM (rgb_remote) firmwarem but when I copy file it looks like it fallback to older firmware from ROM, because your tool does not detect “Per Key RGB” and after reboot I got splash screen they I have older firmware for my keyboard and I should update it.

are you planing to add support for the FW12?

BTW nice project.

Well i like your Idea of Unifying all those Framwork Tools, i tried running it on CachyOS on my FW16 and all i get is a beige Screen when starting the appimage. when i do it over the konsole its showing following fault:

❯ ./Framework.Deck_2.1.0_amd64.AppImage
Could not create default EGL display: EGL_BAD_PARAMETER. Aborting…

Soo no Framework Deck for me i think. i tried AI to help me and all i got is it starts with a black screen and no error instead

Just for clarification, i am on CachyOS, Kernel 7.0.1, KDE, Wayland and my System is running the Ryzen 7 7840HS + 7700S.

v2.2.0 is up: Release v2.1.0 · enkode/FrameworkDeck · GitHub

New: Graphics module (Windows)

A panel for everything Windows can show or do about your GPUs that isn’t “open Adrenalin and click around.” Built because the Framework 16 MUX can’t be toggled programmatically (AMD SmartAccess Graphics and NVIDIA Advanced Optimus are GUI-only). This module gathers up the things that are programmable.

  • GPU Adapters. Live PnP state for every display device, problem codes (Code 43 etc.), driver INF/version, PCIe link state. One-click RECOVER (UAC) runs pnputil /remove-device + /scan-devices for hung adapters.
  • DxgKrnl-Admin diagnostics. Surfaces StartAdapter_AddAdapterFailed and other adapter-start errors from the Windows event log so you can see why something failed instead of guessing.
  • Per-app GPU preferences. Read/write the registry that backs Settings > Display > Graphics. AUTO-DISCOVER scans common install roots (Steam, Battle.net, etc.).
  • Quick actions. Deep-links to AMD Adrenalin (SmartAccess), NVIDIA Control Panel / NVIDIA App, and Windows graphics settings.
  • NVIDIA-SMI. Raw output when the driver is healthy.

Cross-vendor (NVIDIA + AMD), service status for nvlddmkm / amdkmdag visible in the header. The whole module is a no-op on Linux for now. Wayland-friendly equivalents (DRI_PRIME helpers etc.) are on the list.

Thread feedback addressed

  • @jared_kidd: added a TL;DR at the top of the README. Six bullets, no fluff.
  • @wojciech_migas: the tagno25-openrgb firmware download link was 404 (used /releases/tag/latest; there’s no tag literally named “latest”). Fixed to /releases/latest. Same cleanup for the official Framework QMK link. The catalog now clearly marks which firmware is pre-built vs build-from-source.
  • @LukiG: Framework Laptop 12 is now in the Hardware Support table. Telemetry, power, battery, and Graphics all work through framework-control. Input-module features (keyboard configurator, LED Matrix) are N/A since FW12 has no detachable input modules.
  • @PSierra117: the Linux/Wayland EGL_BAD_PARAMETER you reported on CachyOS. The Linux build now auto-sets WEBKIT_DISABLE_DMABUF_RENDERER=1 at process start to work around the webkit2gtk-4.1 + Mesa DMA-BUF bug. If that’s not enough, the README has fallback env vars (WEBKIT_DISABLE_COMPOSITING_MODE=1, GDK_BACKEND=x11) for the cases where it isn’t.

Per-key RGB detection failure after a nucleardog flash: I couldn’t reproduce without the device. If anyone hits this, please open an issue with the dump from the Firmware tab’s diagnostic and we’ll work through it.

Download

  • Windows: .exe or .msi
  • Linux: .AppImage, .deb, .rpm

Thanks for the feedback, keep it coming. Bugs, hardware-specific behavior, FW12 sensor mappings that don’t show up: all useful.

i would love to test 2.2 but you only pushed the old Version :smiley: and the source is also still the old one.

Oof, you’re right, sorry about that. I tagged the release notes but forgot to actually push the v2.2.0 tag and merge to main. Fixed now, the v2.2.0 release is building and should be live within a few minutes (or already live by the time you see this).

For your CachyOS setup specifically, v2.2.0’s AppImage has the EGL fix baked in. The binary sets WEBKIT_DISABLE_DMABUF_RENDERER=1 on Linux before it starts the webview, which is the documented workaround for the webkit2gtk-4.1 plus recent Mesa DMA-BUF bug that was crashing v2.1.0 on KDE Wayland.

Grab the AppImage from the release page, chmod +x it, and run it normally:

chmod +x Framework_Deck_*.AppImage
./Framework_Deck_*.AppImage

If you still hit EGL_BAD_PARAMETER (the fix covers the case I could reproduce, but Wayland setups vary), try one of these:

WEBKIT_DISABLE_COMPOSITING_MODE=1 ./Framework_Deck_*.AppImage
GDK_BACKEND=x11 ./Framework_Deck_*.AppImage

Let me know either way. If it still crashes, the more info you can share the better (uname -r, mesa version, KDE/Plasma version, kernel cmdline). I’ll add whatever combo works to the README so the next CachyOS user doesn’t have to hunt.

Mate still the same… I got Screenshots of i hope everything you need.

i normally install appimages with Shelly Packagemanager, but for you i went the old school way to have a terminal readout.