OPEN SOURCE. ON YOUR MACHINE.

Beautiful hardware dashboards.
Yours to build.

A Python SDK and CLI for hardware screens on Linux.

Put live hardware readings on Lian Li UNI FAN SL Wireless LCD (SL V3) fans. Pick a design, match your build, or write your own in Python.

uv tool install pixdial

Python 3.12+ uv or pipx Free, GPL-3.0-or-later

Supported fans and USB IDs
Crown design showing CPU temperature, per-thread load, total load and package power with demo readings
crownDemo readings

THE DESIGNS

A small screen.
A lot of possibilities.

Fourteen designs for load, temperatures, power, time and more. Choose one per panel, or let them rotate.

Crown: a CPU temperature reading surrounded by per-thread load bars
crown
GPU: board power, temperature, utilisation and connector pin readings
gpu
PSU: power output, temperature, fan speed and agent activity
psu
Pins: six connector current bars with total current and balance
pins
Flow: PSU output split into CPU, GPU and remaining system power
flow
Quota: an agent pool's remaining quota and working sessions
quota
History: current PSU output above a two-minute power graph
history
Twin: concentric rings for GPU temperature and power
twin
Clock: time and date inside a ring showing system load
clock
Minimal: a large CPU temperature reading
minimal
Thermals: separate temperature rings for CPU, GPU and PSU
thermals
Orb: a coloured CPU load orb around a temperature reading
orb
Radar: CPU load plotted around a twelve-second circular sweep
radar
Grid: a dot for every CPU thread with temperature and total load
grid

THREE THEMES

Match your build.

Set the theme for each panel.

pixdial show crown:ember
Crown in warm, with cream text and green and orange thread bars
warm
Crown in ember, with warm orange and amber accents
ember
Crown in ice, with cool blue and cyan accents
ice

FROM TERMINAL TO PANEL

Your first dashboard.

  1. Install.

    Install pixdial from PyPI with uv. pipx install pixdial works too.

    uv tool install pixdial
  2. Set up your panels.

    Setup finds your panels, gives your user access through sudo (one password prompt), writes the config and runs the checks. The README has the manual steps.

    pixdial setup
  3. Start at login.

    Your panels show their designs now and after every login. To try pixdial in a terminal first, use pixdial run.

    pixdial service install
    Configuration guide

No panel yet?

Render a preview from demo readings. No hardware needed.

pixdial render crown --state busy --out preview

THE PYTHON SDK

Your data.
Your design.

A design turns a snapshot of readings into a picture. pixdial handles sampling, layout changes and delivery to the panel.

DesignsDraw a different view.

SourcesBring your own readings.

DevicesSend frames to another display.

Build a Python plugin
demo.pyPython
from pixdial.designs import LOAD, THEMES, Design
from pixdial.readings import Reading, Snapshot


class Load(Design):
    name = "load"
    shows = "CPU load on a gauge"

    def update(self, readings, now, dt):
        self.value = readings.number("cpu_load")
        return self.value, None

    def still(self):
        frame = self.frame(self.colour(LOAD, self.value))
        self.gauge(frame, self.value, LOAD)
        self.label(frame, "CPU LOAD")
        frame.number(246, self.value, "%")
        return frame.finish()


design = Load(THEMES["warm"])
readings = Snapshot({"cpu_load": Reading(42, "%")}, wall=0)
design.update(readings, now=0, dt=0)
design.render(now=0).save("demo.png")

At the command line.

pixdial show crown:ember
Change the running panel.
pixdial show rotate
Cycle through designs.
pixdial list
See designs, themes and plugins.

SUPPORTED HARDWARE

One round screen. Built for it.

The Lian Li UNI FAN SL Wireless LCD (SL V3) is tested. The TL Wireless LCD (TL V2) uses the same protocol and is experimental.

PanelUSB IDDisplayStatus
Lian Li UNI FAN SL Wireless LCD (SL V3)1cbe:0005Round, 400 × 400Tested
Lian Li UNI FAN TL Wireless LCD (TL V2)1cbe:0006Round, 400 × 400Experimental

Both run on Linux. Each LCD needs its own USB cable to a USB 2 header; lsusb | grep 1cbe lists the panels attached. Other panels and AIO screens need tested device plugins. pixdial does not control fan speed or RGB lighting.

What pixdial touches.

The driver sends queries, frame-rate setup, JPEG frames and brightness over USB. No firmware writes, reboots or storage commands.

Built-in readers use local files or NVML. No telemetry or network service. Configured commands and plugins run with your permissions and can use the network.

Security and boundaries

A FEW DETAILS

Before you plug in.

Can I try pixdial without a panel?

Yes. pixdial render crown --out preview writes a PNG from demo readings. Rendering works on Linux and macOS. For a live preview, use the PNG device. Physical panels are supported on Linux only.

Which readings are built in?

CPU load, RAPL package power, AMD GPU readings (experimental), NVIDIA GPU readings and CPU temperature via Linux hardware sensors. Availability depends on your hardware, drivers and permissions. PSU readings, connector currents and agent quota need configured sources.

Run pixdial doctor to check each source. Missing or stale measurements show a dash.

Does pixdial need root?

No. pixdial runs as your user. pixdial setup prints the commands for the udev rule that gives you access to the panels, then runs them through sudo. On a machine nobody logs in to, it installs a group rule instead. RAPL counters can need separate read permission.

How does this relate to lian-li-linux?

sgtaziz/lian-li-linux is a Linux replacement for L-Connect 3, under the MIT licence. It controls fan speed, pumps and RGB lighting on many Lian Li devices, and drives their LCDs with images, GIFs, video, sensor presets, templates and a template editor. pixdial follows its SL V3 protocol implementation and draws the LCDs only, with its own designs and Python plugins.

You can use both: lian-li-linux keeps fan speed and RGB, and pixdial draws the LCDs. Each LCD takes one program at a time, so take the LCDs pixdial drives out of lian-li-linux's LCD list (lcds in its config.json) and restart its daemon. The README has the commands.

Can I add a design, reading or display?

Yes. Python entry points register designs, sources and devices. The example plugin includes all three. New physical displays need a device plugin and hardware testing; other resolutions also need rendering support.

Make the screen yours.

uv tool install pixdial