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
- LambentEx address: whatever the pairing QR in the web UI shows. A bare
172.16.13.5is fine: port 8033 and plainhttp://are assumed, the same as the Android app. There’s no login. - Test Connection: joins the
deviceschannel and lists the places and devices it finds. - 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.