Skip to content

Boot flipctl on the panel instead of the flipctl2 prototype - #169

Open
Yury-MonZon wants to merge 1 commit into
soft-reboot-fixesfrom
flipctl-slint-default
Open

Boot flipctl on the panel instead of the flipctl2 prototype#169
Yury-MonZon wants to merge 1 commit into
soft-reboot-fixesfrom
flipctl-slint-default

Conversation

@Yury-MonZon

@Yury-MonZon Yury-MonZon commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Stacked on #168.

flipctl becomes what the image boots on the panel, in place of the flipctl2 prototype.

build-flipctl.sh builds it from flipctl-slint for arm64, natively on an arm64 builder and cross anywhere else, and stages the tree the ospack overlays onto /usr: /usr/bin/flipctl, its apps and remote-view assets under /usr/share/flipctl, and the unit the repository itself ships, so the image and a deploy from a checkout restart the same one. Nothing there links a C library (EGL and GBM are dlopened, wayland-client uses its Rust backend, slint renders in software), so a cross build needs only the aarch64 std and a linker.

slint 1.17.1 wants rustc 1.92 where trixie has 1.85, so the container and the documented prerequisites take cargo from trixie-backports with the arm64 std beside it, and the build stops with one line when either is missing rather than a hundred lines into the resolver.

sway is the only package added on flipctl's behalf, being the compositor it hosts apps in. What an app itself needs is left out: each manifest names its packages and flipctl offers to install them when that app is opened.

The prototype is unenabled rather than removed, so the Testing row can still hand the panel over: the two wants symlinks go, and cog-seat1 loses its [Install]. The other half of that, the node server's own [Install], is in flipperone-testing 02f67fd, which the ospack already stages from dev.

Verified on a Flipper One from a freshly flashed image: flipctl active on the panel and serving its remote view, cog-seat1 and fake-flipctl-node-server both loaded but not autostarted, and the Testing row able to hand the panel over.

Note for whoever builds this: the ospack step must actually rebuild, UPDATE_OSPACK=1 or a clean out/images/, or an existing debian-ospack.tar.zst is reused and none of this lands in the image.

@Yury-MonZon
Yury-MonZon marked this pull request as ready for review September 1, 2026 20:23
build-flipctl.sh builds flipctl from flipctl-slint for arm64, natively on an
arm64 builder and cross anywhere else, and stages the tree the ospack overlays
onto /usr: /usr/bin/flipctl, its apps and remote-view assets under
/usr/share/flipctl, and the unit the repository itself ships, so the image and a
deploy from a checkout run the same one. Nothing there links a C library, so a
cross build needs only the aarch64 std and a linker. slint 1.17.1 wants rustc
1.92 where trixie has 1.85, so the container and the prerequisites take cargo from
trixie-backports with the arm64 std beside it, and the build stops with one line
when either is missing rather than a hundred lines into the resolver. stage_repo is
split so the flipctl checkout is fetched without being copied: a copy would drag its
build tree into prebuilt/.

sway is the only package added on flipctl's behalf, being the compositor it hosts
apps in. What an app itself needs is left out: each manifest names its packages
and flipctl offers to install them when that app is opened.

The prototype is unenabled rather than removed, so the Testing row can still hand
the panel over: the two wants symlinks go, and cog-seat1 loses its [Install]
section. Dropping the symlinks alone would not hold. systemd makes a preset pass on
a profile's first boot, which every profile here has since the image ships no
machine-id, and boot-profile switches profiles with soft-reboot, where /etc is
writable and that pass succeeds rather than skipping as it does on a cold boot.
With no policy of ours its default is to enable anything carrying an [Install]
section, and the prototype's node server then held port 8899 before flipctl could
bind its own browser view. Nothing enables a static unit, and starting one still
works.
@Yury-MonZon
Yury-MonZon force-pushed the flipctl-slint-default branch from 25e6920 to 2b81278 Compare September 2, 2026 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant