Files
Toastconcern--FrameStudio/docs/bundles.md
T
ToastconcernandClaude Opus 5.5 b0609d3664 Studio: movable areas and workspaces in Frame Studio's own Blender-like style
- ImGui's docking branch (1.91.5): the 3D Viewport, Outliner, Properties and Timeline are areas on a gutter, each
  with a header. Drag an area by its header's editor button to dock it elsewhere (as a tab, or splitting an area);
  click it to show another editor there. Layouts are kept between runs; Window > Reset Layout restores them.
- Workspaces in the top bar: Layout, Walking, Headset. Ctrl+Space maximizes the 3D Viewport.
- 3D Viewport header: Arrange / Draw Floor, View, Select, Add, Object menus, Global / Local, the world layer and
  shading (Material, Solid, Wireframe; GPU Cost, Overdraw, Leave Out in its menu). In the view: the toolbar (T), a
  chip naming the home and selection, navigation buttons under the axes, a sidebar (N: Item, Tool, View).
- Properties: tabs as icons down its left edge (Object, World, Environment, Bundle, Headset); sections are panels on
  lighter boxes; labels right-aligned in a column. Sound is part of the Environment tab.
- Timeline: transport in its header, a ruler in seconds with the playhead. Status bar: what the mouse does.
- Keys: Shift+A add menu, X asks before deleting, F3 menu search, Alt+A, Space, Numpad 1/3/7 views, T, N.
- Inter (SIL OFL) built in as the interface font; a palette of cool greys, one blue, Frame Studio's orange.
- ImGui patches (marked Frame Studio): the submenu triangle, and dropdown arrows drawn small on the field.
- Self-test: an area dragged to dock elsewhere, Reset Layout, workspaces, F3 (104/104).
- Guides follow the new menus.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 14:14:46 -05:00

4.8 KiB

Bundles

A bundle (.fbundle) is several environments in one file: a collection to share, or to install on the headset in one go. Each environment in it stays its own environment. On the headset, a bundle is unpacked into the .fenv files it holds, and the Environments panel lists each one separately.

Making a bundle in Frame Studio

Everything is in File > Bundle and on the Bundle tab in Properties.

  1. File > Bundle > New Bundle starts an empty one, and the Bundle tab opens.

  2. Give it a Name. It's the bundle's own name; each environment keeps its name.

  3. Add environments:

    • Add the Open Environment: the environment you have open, as it was last saved. Save first (Ctrl+S) to include your latest changes. A home that has never been saved can't be added yet.
    • My Environments ▾: anything you've saved.
    • Add .fenv...: any .fenv file. You can pick several at once.

    Each row shows the environment's picture, name and size. ▲ moves it up: the order is kept in the file. ✕ takes it out of the bundle; the .fenv file itself stays where it is. Double-click a row to open that environment.

  4. Save Bundle... writes the .fbundle. The environments are stored as they are, not packed a second time, so saving is quick, and the bundle is about as big as its environments together.

Opening a bundle

File > Bundle > Open Bundle..., File > Open..., or dropping a .fbundle on the window opens the bundle on the Bundle tab. Its environments are listed in place; nothing is unpacked yet.

  • Double-click an environment to open it. It is unpacked into a scratch folder first.
  • Add, remove or reorder environments, then Save Bundle (the same file) or Save Bundle As... (a new one).
  • Unpack into My Environments copies every environment out of the bundle into My Environments. An identical environment already there is skipped. A different one with the same name is kept, and the bundle's copy is added as "name 2".

Installing a bundle on the Steam Frame

  • From Studio: with the bundle saved, choose Install on Steam Frame... on the Bundle tab or in the Bundle menu. The bundle is added to the Headset tab's install list. Then choose Install Frame Home there. The Headset tab's Add .fenv or .fbundle... button adds bundles too.

  • Without Studio: give the bundle to the stand-alone installer like any environment (see install-frame-home.md):

    sh install-frame-home.sh --host steamos@frame my-collection.fbundle
    

    On Windows, drop it onto Install Frame Home.bat, or run powershell -ExecutionPolicy Bypass -File install-frame-home.ps1 my-collection.fbundle.

  • By hand: copy the .fbundle into ~/frame-home/envs on the headset.

On the headset, Frame Home's Environments panel unpacks any bundle in ~/frame-home/envs in the background. Each environment becomes its own .fenv, and the bundle is then deleted to save space. An environment already there is kept, as above. A bundle that's damaged, or still being copied, is left alone and tried again once it changes.

A bundle never changes which environment is shown. When you install .fenv files and bundles together, the first .fenv is the one shown.

From the command line

fenv-tool (built with Frame Home, see building.md) makes and reads bundles:

fenv-tool bundle "My collection.fbundle" --name "My collection" calm.fenv beach.fenv night.fenv
fenv-tool info "My collection.fbundle"                 # each environment: name, size, picture, damaged or not
fenv-tool unbundle "My collection.fbundle" out-folder  # the .fenv files, one each

What's inside

A .fbundle is a ZIP archive:

my-collection.fbundle
├── bundle.json                 the bundle's name and its environments, in order
└── environments/
    ├── calm.fenv               each environment, stored as it is
    ├── beach.fenv
    └── night.fenv
{
  "format": "fbundle",
  "version": 1,
  "name": "My collection",
  "environments": [
    { "file": "environments/calm.fenv", "name": "Calm", "size": 94371840 }
  ]
}
  • The .fenv files are stored, not compressed again: they're already compressed inside, so packing and unpacking are just copies, and each one can be read in place (Studio reads names and pictures without unpacking).
  • Bundles over 4 GB use ZIP64. Any ZIP tool can open a bundle.
  • Two environments with the same file name get "name 2"; names are compared without regard to case, so they unpack separately on Windows too.
  • Every member's checksum is verified when it's unpacked: a damaged bundle stops without leaving half a file.

The format is in src/fenv_bundle.h; .fenv itself is described in environments-and-fenv.md.