Files
PixelplanetandCopilot 6f9a9ac6b5 feat(ui): unified spatial UI with video thumbnails and richer settings
- Add ThumbnailCache: a worker thread extracts 256x144 thumbnails and media
  metadata with FFmpeg, SBS-aware cropping, and an on-disk cache under
  ~/.cache/pixelvr/thumbs.
- Draw thumbnails on browser cards through a new rounded-corner thumb.frag
  pipeline with per-card descriptor sets.
- Redesign the browser as a sidebar + card grid, with horizontal stick
  navigation and direct shortcuts to Network/Home/Videos/Downloads/Drives.
- Expand Settings: screen curvature, UI text scale and colour, accent colour
  and UI distance, organised into sections.
- Downloads window: per-job state, progress, speed and ETA, plus pause/resume
  and cancel-active controls.
- Decoder: multi-threaded software decode and four V4L2 output buffers.
- docs: unified UI concept, redesign plan and mockups.

Release packaging is now reproducible: tools/run.sh is the shipped launcher,
tools/package-release.sh assembles the tarball, and a GitHub Actions workflow
builds it natively on ARM64 for every v* tag. Stop committing release tarballs;
they are attached to releases instead.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-17 09:55:48 +02:00

60 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Capture an aarch64 sysroot from a Steam Frame so the cross-build links against
# the exact FFmpeg / Vulkan / X11 / PulseAudio SONAMEs present on the device.
#
# This is the reliable path to a runtime-compatible binary: SteamOS ships
# different library versions than Ubuntu's arm64 multiarch packages, so linking
# against the device's own libraries avoids "cannot open shared object file" and
# version-mismatch failures at launch.
#
# ./tools/fetch-sysroot.sh [ssh-host] [sysroot-dir]
#
# Defaults: host "steamos@frame", sysroot dir "sysroot".
# Then build with it:
# PIXELVR_SYSROOT="$PWD/sysroot" ./tools/build.sh --aarch64
set -euo pipefail
cd "$(dirname "$0")/.."
HOST="${1:-${FRAME_HOST:-steamos@frame}}"
SYSROOT="${2:-sysroot}"
[[ "${HOST}" == *@* ]] || HOST="steamos@${HOST}"
SSH_KEY="${FRAME_SSH_KEY:-}"
RSYNC_RSH="ssh -o ConnectTimeout=10"
[[ -n "${SSH_KEY}" ]] && RSYNC_RSH+=" -i ${SSH_KEY}"
echo "Capturing aarch64 sysroot from ${HOST} into ${SYSROOT}/ ..."
mkdir -p "${SYSROOT}"
# Runtime libraries (the .so files the linker resolves against) and, where
# present, their pkg-config metadata. Headers usually come from the host's
# arm64 -dev packages or the x86 packages of the same API version.
paths=(
/usr/lib
/lib
/usr/include
/opt/steamvr/bin/linuxarm64
)
for p in "${paths[@]}"; do
src="${HOST}:${p%/}/"
dst="${SYSROOT}${p%/}/"
echo " ${p}"
mkdir -p "${dst}"
# -L would copy symlink targets; keep symlinks (-l) and copy their targets
# only when they are relative within the tree to keep the sysroot small.
rsync -az --copy-unsafe-links --prune-empty-dirs \
--include='*/' \
--include='*.so' --include='*.so.*' \
--include='*.h' --include='*.hpp' \
--include='*.pc' \
--exclude='*' \
-e "${RSYNC_RSH}" "${src}" "${dst}" || echo " (skipped ${p})"
done
echo
echo "Sysroot ready at ${SYSROOT}/"
echo "Build against it with:"
echo " PIXELVR_SYSROOT=\"\$PWD/${SYSROOT}\" ./tools/build.sh --aarch64"