3.5 KiB · text History cc97953

Lambent Widget for Plasma 6

A Plasma 6 panel widget for LambentEx. It shows each place as a circle in its live colours, and lets you steer brightness, links and machines from the panel.

[✺] ◕ ● ○ ◑
  • Logo: opens a popup with everything. Scroll over it to step the global brightness clamp.
  • Circles: one per place (or per device you pick). Each lit circle is split into wedges, one for each preview pixel of the machine driving it, and dimmed by the global and place clamps. A hollow ring means nothing is linked there. A pulsing halo means a clamp is still fading toward its target. Hover a circle to see what’s linked to it. Click it to open just that place. Scroll over it to dim or brighten that place.

Popup

  • The brightness clamp for whatever is in focus: global, or the selected place. Dimmer, a slider over the server’s brightness ladder, brighter.
  • Links: the on/off switch (turning one on pauses any link overlapping it on that device), persist, remove. There’s also a quick machine → device row to make a new link on every channel.
  • Machines: the live preview strip, plus slower/faster, dimmer/brighter, persist and stop. There’s also a start from library row.
  • Devices: address, type, strand count, how many links are on, and Poke to flash a device so you can find it.
  • Places: every place’s clamp, with a button to clear it.

Selecting a circle filters every tab to that place.

Requirements

The widget talks over the Phoenix channels at /socket, the same ones the Android client uses (see docs/socket.md in lambent_ex). Plasma doesn’t ship a WebSocket by default, so install the QtWebSockets QML module:

Distro Package
openSUSE qt6-websockets-imports
Arch qt6-websockets
Debian/Ubuntu qml6-module-qtwebsockets

Restart plasmashell afterwards. If the module is missing, the widget still loads and tells you this, instead of failing.

Configuration

General

  1. LambentEx address: whatever the pairing QR in the web UI shows. A bare 172.16.13.5 is fine: port 8033 and plain http:// are assumed, the same as the Android app. There’s no login.
  2. Test Connection: joins the devices channel and lists the places and devices it finds.
  3. Circles: leave this empty to get one circle per place, sorted alphabetically. Otherwise, add places or individual devices and order them with ↑/↓.

Behavior

Setting Default
Draw live colours from machine previews on Subscribes to the preview firehose (32 px per machine, up to 4 Hz)
Scroll to dim or brighten on One notch is one rung of the ladder
Hide circles with nothing linked off

How it stays live

The server publishes whole state on a timer: machines and links every 400 ms, devices as deltas. The widget merges these pushes the way the LiveView and the Android app do, and repaints at most every 200 ms. A machine or link that stops publishing for 3 s is dropped. The socket sends a heartbeat every 30 s and reconnects with backoff. After a resume from suspend it reconnects straight away.

Install

kpackagetool6 --type Plasma/Applet --install .
kpackagetool6 --type Plasma/Applet --upgrade .     # after changes

./package.sh 0.1.0                                 # release archive

Test without installing:

plasmoidviewer -c org.kde.panel -a . -f horizontal -l topedge
plasmoidviewer -a .

License

GPL-3.0. See LICENSE.md.