# pi_slint_frontend Builds and installs `slint-frontend/` from the app repo - the native front-end that exists because the React UI is sluggish on the kiosk. Installed *alongside* the web UI, never instead of it, and the systemd unit is installed but not enabled: the device still boots into the kiosk browser. ```sh systemctl start musikdelfin # takes over the screen systemctl stop musikdelfin # back to the browser underneath ``` or over SSH, `DISPLAY=:0 /usr/local/bin/musikdelfin`. ## Why this builds on the device `pi_musicmouse` builds the web front-end on the control machine and rsyncs `dist/`, because npm output is portable and npm is not installed on the Pis. A Rust binary is not portable, so this role has a harder choice. The Pis run **32-bit armhf Raspbian on a 64-bit kernel** - `uname -m` says `aarch64` and `dpkg --print-architecture` says `armhf`, and the second one is the one that matters. The target is `armv7-unknown-linux-gnueabihf`. Cross-compiling to it from the control machine needs a sysroot, and the devices carry no `-dev` packages to build one out of, so it would have to be reconstructed from the Debian archive - and then kept in step with the devices' glibc forever. Spending the device's own CPU once is the smaller liability. A rebuild only happens when the commit changes. The same fact rules out the Skia renderer: rust-skia publishes no prebuilt binaries for armhf, so `--features kiosk` would mean compiling Skia from source on a Pi. This role builds `--features desktop` - winit, FemtoVG and the software renderer - and runs as an X client in the existing session rather than taking over KMS. `SLINT_BACKEND=winit-software musikdelfin` switches renderer without a rebuild, which is the thing to try first if the GPU path misbehaves. The FemtoVG bug that makes `kiosk` use Skia upstream (slint-ui/slint#11785) was reported on a Pi 5 with a 64-bit userland, so it may well not apply here - but it is worth checking that album covers actually appear before drawing conclusions about frame rate. ## First run Roughly 40 minutes: 570 crates on two cores. Later runs are incremental and usually seconds. The build is `nice`d and limited to two jobs, which bounds peak memory on musicdolphin's 1.8 GB.