Studio

Edit a deck on the canvas.

Studio changes the loaded .sld source. It does not create a second project format.

Open Studio

Start without a file to create a deck. Use --studio to edit an existing deck.

zig-out/bin/rayslides --studio talk.sld

You can also press E during a presentation.

The Studio workspace

The workspace keeps the slide visible. The main controls remain outside the 16:9 canvas.

Annotated Rayslides Studio workspace editing the current capabilities showcase 12345
The five main areas stay visible in a wide window. A narrow window shows one side panel at a time.
  1. 1Slides selects, adds, copies, removes, and moves slides.
  2. 2Library lists reusable items, groups, and slide templates.
  3. 3Canvas selects and moves the visible objects.
  4. 4Inspector shows the object list or exact properties.
  5. 5Timeline selects the transition, the base scene, a reveal build, or a morph state, and plays the preview.

Create an object

Choose a creation tool, then click the canvas. Studio returns to Select after one placement.

Studio toolbar with Select, Text, Bullets, Image, Video, Rectangle, Line, and Library tools
The creation buttons are source-native canvas tools. Each new object becomes source-backed content.
ButtonAction
V · SelectSelect, move, resize, or frame objects with a marquee.
T · TextPlace a text box with a suggested size.
B · BulletsPlace a bulleted text box.
IMG · ImageChoose an image file, then place it on the canvas.
VID · VideoChoose a video file, then place it on the canvas.
RECT · RectanglePlace a filled rectangle.
LINE · LinePlace a plain line; press A to place one with an end arrow.
LIB · LibraryChoose a reusable item, then place it on the canvas.

Image and Video share the same path behavior: macOS provides a native picker, every platform accepts manual path entry, and a file drop over the canvas creates the matching media item. Paths become deck-relative when the deck has a saved location and that conversion is safe.

SVG files follow the Image path, including picker, replacement, fitting, reusable ownership, diagnostics, and export. The embedded vector subset does not render SVG <text>; convert type to paths first.

Select and move objects

  1. Choose the Select tool.

    Press V or click the first toolbar button.

  2. Click an object.

    Studio draws a cyan painted-geometry outline plus resize and rotation handles.

  3. Drag the object.

    Magenta guides show nearby edges, centers, and snap points.

  4. Drag a handle.

    Use the corner to resize or the connected handle above the object to rotate. Shift keeps the aspect ratio or snaps rotation to 15°.

Use the arrow keys for a one-pixel nudge. Hold Shift for ten pixels.

Hold Cmd/Ctrl during a drag to bypass snapping. Press G to show the 20-pixel grid.

Studio with a rotated image selected, its painted outline and rotation handle visible, and rotation shown in Properties
Rotation is authored, not baked into the bitmap. The canvas handle and exact ROT value update the same source property.

Select more than one object

Shift-click Add or remove one object.
Marquee Drag empty canvas around objects.
Move as one Drag any selected member.
The cyan box is the selection bound. Alignment and distribution use this box.

Press Cmd/Ctrl + A to select every editable object in the current scene.

Hold Shift during a marquee to toggle its hits against the existing selection.

A group move or nudge creates one undo step. Studio keeps the selection order during layer changes.

Set exact values

Open the Properties tab after you select one object.

Edit its text, position, size, font size, alignment, corner or stroke style, rotation, opacity, and colors. Press Enter to save a value.

For an image or video, the first field shows IMAGE or VIDEO, the effective filename/path, and a separate ... replacement button. Click ..., or press Enter while Properties is visible, to choose a new file through the same picker and deck-relative path policy used for insertion. The object's geometry, ID, ordering, and other properties stay unchanged. An amber R beside a local source override restores the inherited asset.

Use Stretch to fill the box without preserving aspect ratio, Fit to show the complete picture inside the box, or Fill to cover the box with an aspect-preserving crop. FX and FY move that crop or fitted picture from 0 (left/top) to 1 (right/bottom); 0.5 is centered. Natural pixel dimensions remain visible beside the box size for images and videos alike.

For videos, choose Playback to edit Auto, Loop, Mute, poster time, volume, and opacity. The duration-aware scrubber previews the authored poster without changing the playback start. Slide cards, Library and Definition previews, Presenter preview, PNG screenshots, and PDF export use that immutable poster without interrupting live playback. Authored volume and mute return each time the slide is entered; presenter adjustments remain temporary for the current visit. Choose Layout to return to fitting and geometry. Amber R markers reset local source, Fit, focus, poster, volume, and playback-toggle overrides one at a time.

Studio with a rotated Big Buck Bunny video selected and the three-dot replacement, loop, mute, duration, poster, volume, rotation, and opacity controls visible
Video is a first-class Studio object. This selected bunny clip keeps a 6.2-second poster and a 3-degree rotation while its playback and replacement controls remain editable.

When media cannot load, Studio retains a selectable repair box while Properties keeps the filename and ... replacement action live. Diagnostics distinguish missing or unreadable files, unsupported image data, missing ffmpeg/ffprobe, probe or codec failures, and poster decode failures. Out-of-range or recoverable poster choices receive amber warnings while retaining their pixels, and silent videos are identified without being treated as broken. These overlays are editor-only and never appear on the projected or exported slide.

Text boxes provide left/center/right and top/middle/bottom alignment. Rectangle Radius is measured in logical pixels. Lines expose stroke width, up/down direction, and no/start/end/both arrow heads; their endpoint handles follow the painted stroke. ROT accepts any finite clockwise degree value around the object's effective center. These values remain source-native through reusable definitions, local overrides, morph states, Showtime, and export.

Press Esc to cancel the current value. Invalid values stay in the field and show an explanation.

FieldAccepted valueExample
X, Y, W, HA logical pixel value120
FG, BGA hex color or none#61dafbff
OpacityA value from 0 to 1, or a percent75%
FontA positive font size52
Radius, StrokeA non-negative radius or positive stroke width24
ROTA finite clockwise degree value-12.5
FX, FYA normalized media focal position from 0 to 10.75
PosterSeconds from 0 through the video's duration6.2
VolumeA value from 0 to 10.65

Use the Properties actions

Properties panel with Duplicate, Delete, Reuse, Lock, geometry, color, rotation, opacity, alignment, and layer controls
The scope appears below the fields. This example edits a shared group definition.
Dup
Clone the selection in one undo step.
Del
Remove direct content or hide an inherited object locally.
Reuse
Promote authored content, make a group, or detach a safe instance.
Lock
Protect the selection from canvas changes. Use the Objects list to unlock it.
FG and BG
Choose a swatch or enter an exact hex color.
None
Remove the selected object's background fill.

Duplicate and Delete can act on a multi-selection. Compatible common Properties also commit to the complete selection as one source transaction. Mixed values remain explicit, and Studio rejects the complete action when any member is unsafe.

Align and distribute objects

Select one object to align it to a slide edge or center.

Select two or more objects to align them inside the current selection bounds.

Alignment uses the selected bounds. Equal Gap keeps the outside bounds and spaces the objects between them.
ButtonResult
L · HC · RAlign left, center horizontally, or align right.
T · VC · BAlign top, center vertically, or align bottom.
H Equal GapGive three or more objects equal horizontal gaps.
V Equal GapGive three or more objects equal vertical gaps.

Each alignment or distribution action creates one undo step.

Use the Objects list

The Objects tab lists the paint order from front to back.

The list also includes hidden, transparent, and locked objects. Use it when the canvas cannot select an object.

Objects list beside the Studio canvas while editing the current capabilities showcase
Each row shows the source name and object type. Use Vis and U to change visibility or locking.

The Back, Down, Up, and Front buttons change the paint order. Studio makes each layer change one undo step.

Author motion

The third inspector tab, Motion, edits the selected object's reveal, the active morph state's timing, or the slide's incoming transition. Each choice writes the matching .sld keys in one undo step.

The timeline shows an IN transition chip, BASE, one BUILD card per reveal, and the STATE cards. Its transport plays the slide on the canvas: click Play or press Shift + Space, drag the scrubber, and press Esc or Stop to return to the selected scene.

See Author motion in Studio for the complete workflow.

Copy, paste, and duplicate

Cmd/Ctrl + CCopyStore the selected source items in Studio.
Cmd/Ctrl + VPasteCreate new IDs and offset the objects by 20 pixels.
Cmd/Ctrl + DDuplicateClone the selection without a separate copy step.
Studio uses its own authoring clipboard. A paste keeps the copied paint order.

Copy supports literal base-scene objects and component instances. Other generated content can remain read-only.

A failed multi-copy, duplicate, or delete changes nothing. The status bar explains which source rule blocked the action.

Set the grid

Press G to show the grid and enable grid snapping.

The grid uses 20 logical pixels. Every fifth line or dot is stronger.

Grid appearance
AutoDarkLight
Contrast40%
Style
LinesDots
The down-arrow beside Grid opens these settings. A setting change also enables the grid.
SettingResult
AutoAdjust the grid against the slide content.
Dark · LightUse a fixed dark or light grid.
ContrastChange the grid strength.
Lines · DotsChoose continuous lines or grid points.

Smart guides take priority near an edge or center.

Hold Cmd/Ctrl during a drag to bypass the grid and smart guides.

Measure the layout

Open Commands and enable rulers, safe areas, or measurements. These tools do not change the deck.

Rulers use the 1920×1080 slide space. Measurements show the selected object's source values.

Use Cmd/Ctrl with the mouse wheel to zoom around the pointer. Use the plain wheel to pan.

Press Cmd/Ctrl + 0 to fit the complete slide.

Change the workspace view

Wide window Both side panels and the timeline stay visible.
Focus Canvas Tab hides the permanent chrome. Editing stays active.
Narrow window Slides and Inspector open one side panel at a time.
The canvas keeps the same slide coordinates. Compact layouts only change the surrounding controls.

Click Slides or Inspector to open a hidden dock. Click Focus or press Tab to restore the complete workspace.

Read the status drawer

A handle sits at the centre of the bottom edge. Hover it, click it, or press F1 to raise the status drawer over the morph timeline.

The Studio status drawer raised over the morph timeline, showing the selection count, primary object, source line, geometry, and the view and grid shortcuts
This object is direct content on line 31. The same line shows its x, y, width, and height.
  • The selection count and primary ID identify the active objects.
  • The scope says direct, local instance, shared template, group, or definition.
  • The source line points to the directive that owns the change.
  • Clicking the handle or pressing F1 pins the drawer open while you work.

Notices do not wait for the drawer. A save, refusal, or error appears on its own above the timeline, so nothing that needs your attention stays hidden.

The selected object also carries its own x, y, width, and height on the canvas, so you can read geometry while dragging without opening anything.

Organize slides

Slides panel with Add, Duplicate, Delete, Up, Down, Template, Find, Previous, and Next controls plus showcase thumbnails
A slide card shows its title, item count, and state count. Click the card to load it.
+
Append a blank slide.
Dup
Duplicate the complete current slide.
Del
Delete the current slide. A deck must keep one slide.
Up · Down
Move the current slide earlier or later.
Tpl
Promote the current slide to a reusable slide template.
Find
Filter by title, slide number, item count, or state count.
Prev · Next
Show the previous or next page of cards or matches.

Each slide action changes the .sld source in one undo step.

Undo and redo

Studio records each successful visual or structural source change as one history step. Undo restores both the source and the slide you were working on.

  • Press Cmd/Ctrl + Z to undo one source edit.
  • Press Shift + Cmd/Ctrl + Z to redo it.
  • Use Undo or Redo in the Commands menu when you prefer the mouse.

The starter chooser is part of normal history. After choosing Studio, Folio, Ember, or Signal, one Undo returns to the pristine picker. Redo restores the chosen deck unless you make a different edit first.

Find a command

Press Cmd/Ctrl + K to open the command list.

Type an action, tool, category, or shortcut. Disabled commands stay visible and explain why they cannot run.

The Present commands include speaker notes, private Presenter Companion pairing, Choose presentation display, Showtime preflight, and Create portable show. The display picker names and identifies active screens before you explicitly choose one; it never assumes an external monitor is the projector. Showtime checks the exact parser, renderer, assets, reusable definitions, display, and local services without changing the deck or playback. Portable show writes an ordinary copied .sld and assets, then independently re-opens and preflights the copy.

Studio command list showing save, history, authoring, presentation, and tool commands
The list uses the current context. It can explain an unavailable action without changing the source.
Showtime preflight overlay reporting eight slides, twelve scenes, four assets, three reusable definitions, and venue notes
Showtime checks the exact deck before the room does. It separates deck blockers from actionable venue warnings and Presenter status.

Reuse a composition

The Library contains reusable items, groups, and slide templates.

Select an entry to preview it. The preview does not change the deck.

Library panel with current Item, Group, and Slide entries plus management controls
Each row shows its type and use count. An unused entry can still be a deliberate asset.
Item
A reusable element. Choose Use, then click the canvas.
Group
A reusable composition with editable member objects.
Slide
A template that creates a new slide.
Find
Filter by name, type, use count, or availability.
Prev · Next
Show the previous or next page of entries or matches.
Read-only preview of a reusable group with its resolved member objects listed
Preview mode is read-only. Inspect the resolved group before you use it.
Definition mode with a reusable group title selected and its shared Properties open
Definition mode edits shared members. Select an object, then change its Properties.
  1. Select a Library entry.

    Studio opens a read-only preview on the canvas.

  2. Choose Use.

    Studio places an item or group, or creates a slide from a template.

  3. Choose Edit.

    Studio opens the shared definition and shows its member objects.

  4. Choose Back.

    Studio returns to the deck and keeps the source changes in history.

Manage Library entries

ButtonActionLimit
RenRename the definition and its safe source uses.The new name must be unique.
DelDelete one unused definition.Later uses block deletion. Slide-template deletion is not source-safe yet.
CleanPreview every safely unreachable definition.Studio leaves blocked definitions unchanged.

Clean is a two-step action. The first click reports safe and blocked counts in the status bar.

The button then changes to Apply. The second click removes only the safe definitions.

Local and shared edits

A normal edit changes the selected instance. An inherited template item gets a local override.

Hold Alt to edit the shared template definition. Every resolved use can then change.

Image and video source, fit, focal position, opacity, and video playback properties follow the same ownership rules. A GROUP member on an ordinary slide is edited through its shared Definition or after Detach; a morph scene can override that member through its qualified ID.

LOCAL INSTANCE

One use changes. Studio writes an override beside that instance.

SHARED · AFFECTS 3 USES

All resolved uses can change. Studio edits the reusable definition.
The affected-use count appears before a shared edit. Local overrides still win over shared values.

Check the status bar before a shared edit. It states whether the action is local or shared.

Save and recover work

An asterisk beside STUDIO means that the source has unsaved changes.

  • Press Cmd/Ctrl + S to save the current file.
  • Press Shift + Cmd/Ctrl + S to save a copy.

Rayslides writes a recovery copy when you quit with unsaved work.

Next guideAnimate a deck