Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LiquidctlGTK

A native GTK4 / libadwaita desktop app for liquidctl — monitor liquid temperature, pump and fan speeds, edit fan curves, and control RGB lighting from a proper GNOME app instead of the command line.

Hardware compatibility notice. This app was built and tested against one specific device: a Corsair iCUE H150i Elite RGB White (Hydro Platinum) AIO, alongside an ASUS Aura LED Controller. liquidctl supports many more devices, and the driver-family detection in this app is a best-effort guess for those — it has not been verified against them. If you own a different pump/fan hub, it's worth trying, but expect rough edges (a curve tab that doesn't apply, a sensor that doesn't show up) until someone tests and fixes it for that specific device.

Screenshots

Dashboard with live liquid temperature, pump and fan readings Draggable temperature x duty fan curve editor
Dashboard Curves
Lighting page with modes, color picker and brightness Saved profiles list with apply and delete actions
Lighting Profiles

Features

  • Dashboard — live liquid temperature, pump and fan RPM/duty for the selected device, plus a discreet bottom bar with host CPU temperature and a per-fan RPM/duty breakdown (both fully dynamic: shows your actual CPU model and however many fans your device reports, wraps to a second line instead of overflowing on a narrow window).
  • Curves — a draggable temperature × duty graph per channel (add/remove points, presets, or freehand). Falls back automatically to host-side polling for devices whose driver doesn't support hardware speed profiles.
  • Pump mode — for devices without continuous pump duty control (like the Hydro Platinum family), a simple quiet/balanced/extreme switch instead of a curve that wouldn't apply.
  • Lighting — off/static/breathing/pulse/spectrum, plus per-LED effects for devices with more than one individually-addressable LED (e.g. the Hydro Platinum family's pump-head ring): Rainbow, Comet, Wave and Police Lights (with direction, speed and — for Police — two independently-picked colors), and a Reactive mode that shifts green → yellow → red with the live liquid temperature. A quick color palette plus a native GNOME color picker, brightness and animation speed round it out. Animated modes are driven host-side when the hardware itself has no on-device animation support.
  • Profiles — save/apply/delete named bundles of fan+pump curves.
  • Per-device enable/disable — in Settings, turn off any detected device you don't want this app touching at all (it's never connected to or initialized). Handy if, say, you only want it managing your cooler and not another RGB controller on the same system.
  • Clear hardware-limit messaging — every page tells you plainly when the active device can't do something, instead of silently doing nothing or showing controls that don't work: Curves, Lighting and Profiles each show a specific explanation (e.g. "this device has RGB lighting, but its protocol isn't supported by this app yet"), and applying a profile warns if part of it (pump or fan) couldn't be applied to the selected device.
  • Tray — closing the window keeps the app running in the background (curves need a live process to keep re-applying, since liquidctl itself has no daemon) until you quit from the tray menu. Uses a symbolic (theme-matched, monochrome) tray icon like other well-behaved GNOME apps.
  • Start with the system — an optional autostart entry that launches straight into the tray, no window popping up on login.
  • Self-healing fan duty validation — some multi-fan coolers can occasionally desync a fan's duty from the rest on a firmware-level hiccup (confirmed on the Hydro Platinum's 3-fan variant). Right after applying a curve, the app double-checks quickly a few times until every fan actually matches it; once settled, it switches to a slower steady check so it isn't hammering the device forever. That steady interval is configurable in Settings — higher values use less CPU/USB traffic, lower values catch a glitch faster.
  • Locale-aware — Portuguese (pt_BR) if that's your system locale, English everywhere else.
  • Remembers window size, sidebar width, theme and default device between launches.

Stack

  • Python 3.10+
  • GTK4 + libadwaita via PyGObject
  • liquidctl — used as a library, not shelled out to
  • AyatanaAppIndicator3 for the tray icon (runs in a small GTK3 helper subprocess, since GTK3 and GTK4 can't share a process and the tray menu API requires a GTK3 Gtk.Menu)
  • gettext for translations
  • No external UI/charting libraries — the curve editor is a Gtk.DrawingArea drawn with Cairo

Install

git clone https://github.com/weversonl/liquidctl-gtk
cd liquidctl-gtk
./install.sh

This creates an isolated virtualenv under ~/.local/share/liquidctl-gui, installs a liquidctl-gui launcher to ~/.local/bin, and registers the app + icon with GNOME (so it shows up in the app grid). Remove everything later with ./install.sh --uninstall (your saved curves/settings in ~/.config/liquidctl-gui are left alone).

Dependencies the installer expects to already be on your system (installed via your distro's package manager): GTK4, libadwaita, PyGObject, liquidctl's udev rules (installing the liquidctl package on most distros, e.g. Arch, sets these up for you — otherwise see liquidctl's udev docs), the AyatanaAppIndicator3 introspection bindings, and gettext.

Development

python -m venv .venv --system-site-packages
source .venv/bin/activate
pip install -e .
python -m liquidctl_gui

See docs/ARCHITECTURE.md for the module map, threading model, and where each feature lives.

License

GPL-3.0-or-later, matching liquidctl's own license.

About

Native GTK4/libadwaita GUI for liquidctl

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages