ba4a5d234656762515b7853b2f24b138c119dacd
Replace the static config.json with a dynamic pairing flow: the TV shows a 6-digit PIN, the user enters it on the HA pairing web page, and the TV polls for the provisioned token. On success the token is persisted and the WS connection fetches entity config via luma/get_config. New modules: - ha_token: atomic read/write/remove of HA credentials file - ha_pairing: background HTTP poll service with getrandom PIN generation Key changes: - Settings UI: new HA section with URL entry, connect/disconnect, PIN display - ha_client: WS config fetch (luma/get_config), Option<u64> pending tracking - main.rs: token-based startup, pairing effects consolidated into effects() - renderer: cached GL uniform locations (u_aa, u_texture, u_clip_rounded, u_clip_radius, u_edge_fade) — no more per-batch GetUniformLocation calls - view.rs: extracted card_glow() helper, slider_card_target() method - Pairing thread detached (no join in Drop) to avoid blocking the render loop Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Luma Home
Fork of Luma — a native launcher for rooted LG webOS TVs — with a Home Assistant integration tab and webOS 5/6 Home button support.
What's different from upstream
- Home Assistant tab — a fourth nav tab ("Home") with glass cards for controlling HA entities (lights, climate, scenes, vacuum, etc.) directly from the TV remote
- webOS 5/6 Home trampoline — bind-mount overlay that redirects the Home button to Luma on older webOS versions (see
trampoline/) - Settings app theme — transparent overlay for the webOS Settings app (see
settings-theme/)
Structure
| Directory | What |
|---|---|
src/ |
Rust source (SDL2 + OpenGL ES 2 renderer) |
assets/ |
Generated artwork, fonts, wallpapers |
ha-home/ |
HA tab config schema and default config |
trampoline/ |
webOS 5/6 Home button redirect (boot hook, watcher, overlay) |
settings-theme/ |
Transparent Settings app theme |
Building
See development.md for the full build guide. Quick summary:
nix develop # enter the dev shell with cross-compilation toolchain
pnpm install # install JS tooling for asset generation
pnpm assets # generate native artwork
cargo build --release --features webos --target armv7-unknown-linux-gnueabi
Target TV
- LG 65NANO813PA, webOS 6.5.3-47
- Rooted via Homebrew Channel v0.7.3
- Luma installed as
com.ecklf.luma
License
Upstream Luma is MIT licensed. See license file.