wip: PinePhone: niri as the compositor, plus the shell work that follows #933
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "pinephone-niri"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Moves the PinePhone session from phoc to niri, and everything that fell out of that.
The detail is in the commit messages; the shape of it:
/run/niriwas root-only0700while niri runs as the user, so it silently fell back to defaults — it warns once to its own stderr and carries on.Also picks up the shell's shade/slider work and the scrollable notification list.
CI
The format check was failing on
lib/modules/nixos/pinephone-shell.nix;368b508ffixes it. Note that nixfmt also rewrapped pre-existingresidentUnits/pathcode, so the file had drifted before this — the unformatted block just made the check notice. Whitespace only.Verified by running the exact CI command (
nix fmt -- --check .) in a cleanjj workspacerather than in a working tree, which gives a false positive here because of a./resultsymlink into a build output.Morph works, and force-dark works — confirmed on the device with a page that is normally white rendering dark. Two earlier conclusions here were wrong, and both were bad testing rather than bad software: - `su daniel` without `-` keeps the working directory at /root, which daniel cannot read, so the process died before exec. That produced exit status 0 with no output whatsoever — not even for `--help` — which reads exactly like a broken build. It is not. - It also needs writable XDG directories and a session bus. Missing either fails the same silent way. The wrapper now sets all of that, and passes --app-id, which it wants as a Lomiri application. Recorded in the wrapper because it is the sort of thing that costs an afternoon twice: do NOT add --disable-gpu. QtWebEngine logs "eglCreateContext: Requested version is not supported" on Mali-400 — Chromium asks for a GL version this GPU does not have — but it falls back and renders correctly. Disabling the GPU makes it exit immediately. Measured against Firefox on the same page: 494 MB across 3 processes versus 1139 MB across 11. Less than half the memory on a 3 GB phone, which is the whole reason for wanting it. Still imperfect: force-dark applies to page content, not Morph's own chrome, so the URL bar stays white. That is a Morph theming setting rather than a Chromium flag.pathbab249bd85On the first encrypted boot mesa logged Failed to create /home/daniel/.cache for shader cache (Required key not available)---disabling. and turned the cache off for the whole session, so lima recompiled every shader on every launch. On a Mali-400 that is not a rounding error, and this project grades itself on latency. The cause is the same one that broke mmsd and the carrier settings: the shell starts before the home directory can be unlocked, so anything it touches at startup has to live outside it. MESA_SHADER_CACHE_DIR now points at /var/cache/pinephone-shell. A shader cache is not private in the way messages are — it holds compiled shaders from the shell own baked assets — so putting it outside the encrypted home costs nothing that matters. Counted while looking: 1088 mmsd-tng failures in a single boot, worse than the 315 measured earlier, and two nixos-activation failures from the same root cause. Both are fixed by the home-unlocked target; this was the third thing hiding behind it.Setting MESA_SHADER_CACHE_DIR on the shell fixed the shell and left the compositor still logging phoc: Failed to create /home/daniel/.cache for shader cache (Required key not available)---disabling. on every boot. phoc starts from the session service, not from the transient unit the shell runs in, so it never saw the variable — and it is the one that matters most, since every frame goes through it. Measured across the reboot: the message went from 9 occurrences to 3, all three phoc. This should take it to none.PinePhone: niri as the compositor, plus the shell work that followsto wip: PinePhone: niri as the compositor, plus the shell work that followsReported as "it scrolls with swiping but I can't tap an app to launch" -- which read as vicinae ignoring touch. It was not. The taps arrived and vicinae acted on every one of them: App started with command line "foot" Failed to start app: "Child process set up failed: execve: No such file or directory" It runs as a systemd user unit, which inherits almost nothing, and its path held only vicinae and coreutils. Nothing it could offer to launch was on it. The failure goes to vicinae's own log and nowhere the user can see, so a tap that cannot find its binary looks exactly like a tap that never landed. Fixed with the profiles rather than a list of applications: a launcher launches whatever is installed, so enumerating packages would mean every application added anywhere else had to be remembered here too -- and forgetting would be silent in precisely the same way.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.