Add curl-based Frame Home installer

Add a Steam Frame bootstrap that downloads and validates the selected release installer,
then runs the existing payload installer. Document latest and versioned install commands.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
KevinandCopilot committed 2026-10-24 18:54:18 +02:00
1 parent 8e3bb2e1ea
commit ce49cecd6a
2 files changed
+63 -7

No files matched your search

+25 -7
View File
@@ -1,10 +1,10 @@
# Installing Frame Home
Frame Home is the part that runs on the Steam Frame. There are three ways to install it. All three do the same
Frame Home is the part that runs on the Steam Frame. There are four ways to install it. All four do the same
thing on the headset: they copy the files and run the same installer (`install.sh`).
Before you start, the headset needs developer mode and SSH: see [headset-setup.md](headset-setup.md). The third way
(on the headset itself) needs no SSH.
Before you start, the headset needs developer mode and SSH for the computer-based methods: see
[headset-setup.md](headset-setup.md). The two methods on the headset itself need no SSH.
## Way 1: from Frame Studio
@@ -23,10 +23,28 @@ Environments already on the headset with the same name and size are not copied a
Studio connects without asking for passwords, so it needs an SSH key (see [headset-setup.md](headset-setup.md)).
## Way 2: with FrameHome-installer.zip, from any computer
## Way 2: Install script from GitHub on the Steam Frame
Download `FrameHome-installer.zip` from the Releases page (see [getting-started.md](getting-started.md#download))
and unpack it. Inside are:
In Desktop Mode, open Konsole and run:
```sh
curl -fsSL https://raw.githubusercontent.com/Toastconcern/FrameStudio/main/frame/install-frame-home-online.sh | bash
```
This downloads the installer from the shared **Latest build** release. To install a versioned release instead, set
`FRAME_HOME_TAG` to its tag, for example:
```sh
curl -fsSL https://raw.githubusercontent.com/Toastconcern/FrameStudio/main/frame/install-frame-home-online.sh | FRAME_HOME_TAG=v1.0 bash
```
The bootstrap requires `curl` and `unzip`, verifies the downloaded ZIP, and runs the same `payload/install.sh` used
by the other install methods. Put `.fenv` files in `~/frame-home/envs`; the Environments panel lists them.
## Way 3: with FrameHome-installer.zip, from any computer
Download `FrameHome-installer.zip` from **Latest build** or a `v*` version release, then unpack it. Frame Home and
Studio share the same releases and tags, but this ZIP contains only Frame Home files. Inside are:
| File | For |
|---|---|
@@ -78,7 +96,7 @@ sh install-frame-home.sh --host steamos@192.168.1.50 my-home.fenv another.fenv
Copied environments get a headset-friendly name: lower case, spaces become dashes, and only letters, digits, `.`,
`_` and `-` are kept. `My Home.fenv` becomes `my-home.fenv`.
## Way 3: directly on the headset
## Way 4: from a downloaded folder on the headset
1. Switch the headset to Desktop Mode.
2. Copy the unpacked `FrameHome-installer` folder to the headset (USB stick, network share, or a download in the
+38
View File
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ "$(uname -m)" != aarch64 ]]; then
echo "Frame Home must be installed on the Steam Frame (ARM64)." >&2
exit 1
fi
for tool in curl unzip; do
command -v "$tool" >/dev/null 2>&1 || {
echo "Missing required command: $tool" >&2
exit 1
}
done
tag=${FRAME_HOME_TAG:-latest}
if [[ -z "$tag" || "$tag" == *[^a-zA-Z0-9._-]* ]]; then
echo "Invalid release tag: $tag" >&2
exit 1
fi
url="https://github.com/Toastconcern/FrameStudio/releases/download/$tag/FrameHome-installer.zip"
tmp=$(mktemp -d "${TMPDIR:-/tmp}/frame-home-install.XXXXXXXX")
trap 'rm -rf "$tmp"' EXIT
archive="$tmp/FrameHome-installer.zip"
echo "Downloading Frame Home release $tag..."
curl --fail --location --silent --show-error --retry 2 --output "$archive" "$url"
unzip -tq "$archive"
unzip -q "$archive" -d "$tmp"
installer="$tmp/FrameHome-installer/payload"
if [[ ! -f "$installer/install.sh" || ! -x "$installer/bin/frame-home" ]]; then
echo "The downloaded release does not contain a valid Frame Home installer." >&2
exit 1
fi
sh "$installer/install.sh" "$@"