Files
ToastconcernandClaude Opus 5.5 fedadd5ae3 Updates: Frame Studio and Frame Home update themselves from GitHub
CI stamps every Studio build with its commit (FRAME_BUILD) and the
release gets latest.json: the commit, Frame Home's identity (a hash of
the headset programs in frame/payload) and the files in the release.

Frame Studio (studio/updater.h): checks a few seconds after start and
every 6 hours (Help > Check for Updates any time). A newer build shows
"Update Available" in the top bar; Download and Install fetches this
computer's build with the system's curl, unpacks it with tar, and swaps
each item in (the old one renamed aside first, so the running copy
keeps working and a failure rolls everything back). Restart Now closes
through the normal unsaved-changes prompt, then starts the new copy;
the next start deletes what was set aside. Local builds never update.
New platform calls: systemTool (System32's curl/tar on Windows) and
launch.

Frame Home (src/switcher.cpp): on the Steam Frame the Environments
panel checks a minute after it starts and every 6 hours. When the
installed programs' hash isn't the release's, "Update Frame Home"
shows beside Restart Frame Home; it downloads FrameHome-installer.zip
and runs its install.sh in its own session (which restarts Frame Home
and the panel), and the new panel says "Frame Home is updated". Also
frame-switcher --check-update / --update from a terminal.
frame/payload: frame-switcher rebuilt on the Steam Frame with this.

Tested: Studio's full cycle (check, download, unpack, swap, relaunch,
cleanup) and its rollback against a local fake release on Windows; the
headset's check and update against a fake release on the Frame (old
panel and Frame Home replaced, then up to date); Linux compile of
Studio; Studio --selftest unchanged (98 passed, same 6 known fails).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 11:40:23 -05:00

10 KiB

Using Frame Home on the headset

Once Frame Home is installed (see install-frame-home.md), your home is the Steam Frame's environment. It shows when no game is running, behind the Steam menu, and while games load.

The Environments panel

Frame Home adds a panel called Environments to the Steam menu. It starts with SteamVR on its own.

  1. Open the Steam menu.
  2. Choose Environments in the menu's bar.
  3. Point at the panel with a controller and click.

The panel has three pages: Environments, Settings and Debug. Its top right shows whether Frame Home is running, with a button:

The panel says The button What it does
Frame Home is running Restart Frame Home Reloads the home from its file
Frame Home isn't running Start Frame Home Starts it now
Off: it failed to start twice Turn Frame Home On Clears the off switch and starts it

Choosing an environment

The Environments page shows a card for every environment on the headset, with its name, its kind and a thumbnail. The one you are in says "Showing now".

  • Click a card to switch to it. Frame Home changes the environment live; you don't need to restart anything.
  • Delete a card with its delete button. The panel asks first ("Delete ...?"). Deleting removes the file from the headset, its thumbnail and its unpacked copy.

The kinds you may see:

Kind Meaning
Frame environment A .fenv file
Frame environment, footprint + vista A .fenv holding a room and the view outside it
Meta home A Meta Quest home .apk
Meta home, footprint only / vista only Half of a Meta home pair
Footprint + Vista Two .apk files listed as a pair (see below)

From a terminal

Over SSH (ssh frame) you can do the same with the panel's program:

~/frame-home/bin/frame-switcher --list          # the environments; the current one is marked with *
~/frame-home/bin/frame-switcher --set 3         # switch, by number from --list or by file name
~/frame-home/bin/frame-switcher --delete NAME   # delete one, like the panel's delete button
~/frame-home/bin/frame-switcher --check-update  # is there a newer Frame Home on GitHub?
~/frame-home/bin/frame-switcher --update        # download and install it now

Updates

The panel checks GitHub for a newer Frame Home a minute after it starts and every 6 hours after that. When there is one, Update Frame Home shows at the top of the panel, beside Restart Frame Home. Click it: the headset downloads the new version and installs it, and Frame Home and the panel restart a few seconds later with "Frame Home is updated". Your environments and settings stay as they are. If it can't finish, the panel says why; ~/frame-home/logs/update.log has the details.

Adding environments

Every environment lives in ~/frame-home/envs on the headset. Ways to put one there:

  • From Frame Studio: Headset > Send to Frame (the open home), or Headset > Install on Steam Frame... (any .fenv files).
  • With the stand-alone installer: drop .fenv files on Install Frame Home.bat, or list them after install-frame-home.sh. See install-frame-home.md.
  • By hand: copy the file into ~/frame-home/envs, for example scp my-home.fenv frame:frame-home/envs/.

The panel notices new files by itself. Then, in the background:

  • Each new .fenv is unpacked ahead of time. A big one takes about ten seconds. After that, switching to it is as quick as switching back to one you have used before.
  • Thumbnails are made while nobody is looking at Frame Home, for example while a game is running. Making one loads and draws the whole home, which would make the home you are standing in stutter. So a new environment can show without a picture for a while.

Meta home .apk files work too, but they load more slowly than a .fenv. Studio or fenv-tool converts them (see environments-and-fenv.md). To show a room .apk and its vista .apk together, add a line with both file names to ~/frame-home/pairs.txt:

haven2025.apk calming.apk

Moving around

Frame Home moves you the way Meta's homes do. You start at the home's spawn point, its floor on your real floor.

Control What it does
Left stick Walk in the direction you push it, relative to where you look. A light push strolls. Walls stop you and you slide along them; ramps and steps are followed.
Right stick left / right Turn: snap turns (30, 45 or 90 degrees) or smooth turning, as set in Settings
Right stick forward Aim a teleport arc from your right hand. A marker shows where you'll land. Let go to go there.
Point at a seat, pull the trigger Sit in it. Seats near you show a faint marker that lights up when you point at it.
Walk, teleport or step away while seated Stand up again

More details:

  • The teleport arc stops at the first thing it meets. A floor or a seat is a landing; a wall, a ceiling or the side of furniture is not, unless it is low, then you land at its foot.
  • Landing near a teleport hotspot snaps you onto it.
  • Seated, you can still turn, but you stay put.
  • Falling is real. If you fall further than the home's limit, you are put back at the spawn point.
  • Some homes have gravity zones (walls you can walk up, small planets).
  • With the Steam menu open, the controllers belong to the menu. Nothing moves you until you close it.

Settings

The Settings page has three groups. Frame Studio shows the same settings under Edit > Preferences..., in the "Steam Frame (Frame Home)" part, so you can change them from your computer too.

Settings are stored in ~/frame-home/settings.json on the headset. Frame Home reads it again whenever it changes.

Movement (applies right away)

Setting Choices Default What it does
Walking Off, Smooth Smooth Left stick walks you smoothly. Off: teleport only.
Teleport Off, Instant, Slide Instant Right stick forward, aim, let go. Instant blinks you there; Slide glides there.
Turning Snap, Smooth Snap What the right stick does left and right
Snap turn angle 30°, 45°, 90° 30° How far each snap turn goes
Walking speed Slow, Normal, Fast Normal How fast smooth walking moves you (1.4, 2 and 3 m/s)
Comfort vignette Off, Gentle, Strong Off Darkens the edges of view while the stick moves or turns you. Helps if smooth walking makes you queasy.
Seat markers Shown, Hidden Shown Markers on the seats near you. Hidden, pointing at a seat still finds it.

Environment (applies right away)

Setting Choices Default What it does
Volume Off, 25%, 50%, 75%, 100% 100% All of the environment's sound
Animations Play, Hold still Play Hold still stops the environment's moving parts; animated environments then cost less.

Graphics

The group's heading shows how Frame Home is doing right now: the GPU time a frame takes out of the time it has, the size drawn per eye and its resolution, and whether eye tracking is used. For example: "6.1 of 8.3 ms a frame, ... per eye (140%), eye tracking on". If it starts with "Too slow, lower Resolution", frames are late and the home stutters.

Setting Choices Default What it does
Resolution Auto, 80%, 100%, 120%, 140% Auto Share of SteamVR's recommended size per eye. Auto moves between 70% and 150% to keep every frame on time, sharper whenever the home is light enough.
Frame rate Full, Half Full Half draws the environment every other frame and turns it with your head in between, as Meta's home does: each frame gets twice the GPU time.
Anti-aliasing Off, 2x, 4x 4x Smooths jagged edges. 4x looks best; lower is faster.
Texture filtering 4x, 8x, 16x 8x Keeps floors and walls sharp at an angle. Higher looks better.
Foveated rendering Off, Fixed, Eye tracked Eye tracked Full detail where you look, coarser toward the edges. The time this frees goes to resolution (with Auto). Fixed keeps the sharp area at the lens centre; Eye tracked follows your gaze.
Foveation strength Gentle, Medium, Strong Medium How quickly detail falls off away from where you look
Keep cool Off, 80°, 86°, 90° 86° Above this temperature (°C), the edges of view give up a little detail at a time until the headset cools. Where you look stays sharp. A hot headset slows its GPU.
Behind the Steam menu Half rate, Full rate Full rate With the menu open, the environment is only a backdrop. Half rate leaves more GPU to the menu and its apps.

Anti-aliasing, texture filtering and turning foveation on or off restart Frame Home. That takes a few seconds. The others apply at once.

With eye-tracked foveation, the heading says "eye tracking waiting for your eyes" until the headset sees your gaze.

Per-environment settings. An environment can carry its own resolution, foveation strength, anti-aliasing and frame rate, tuned for that home. While you are in it, those win over the settings above. See environments-and-fenv.md and performance.md.

The Debug page

The Debug page is for finding out why a home looks or runs wrong. Its settings are not kept: they switch off when Frame Home restarts.

Item What it does
View Normal, Wireframe (every triangle edge), Meshes (each in its own colour), GPU cost (green is cheap, red is costly), Overdraw (bright where surfaces pile up)
World layer Shows where you can walk (green), surfaces and colliders, spawns, seats and gravity zones
See-through surfaces Leave out glass, water, glow and fog, to see whether they're what's slow
Cut-out surfaces Leave out leaves, grass and fences
Sky Leave out the sky
Costliest meshes The meshes that cost the GPU most, with their time
This environment The environment's report: problems found, if any (also in ~/frame-home/logs/report.txt)
Save a Picture Saves what you see to ~/frame-home/logs
Turn Debug Views Off Back to normal

The GPU cost view times every draw, which makes the GPU a little slower while it is on.

Studio can show and change the same page from your computer: Headset > Headset Debug....