Skip to content

Manual Layout

Every view is either in manual or auto layout mode. In manual mode, you position elements yourself by dragging them; in auto mode, one of the layout engines positions everything automatically on each render.

A view is in auto mode only if its DSL explicitly includes an autoLayout statement:

systemContext mySystem "Context" {
include *
autoLayout
}

Without an autoLayout statement, the view defaults to manual — this follows Structurizr DSL semantics, where the absence of autoLayout means positions are taken from the view’s saved layout data rather than computed.

Toggle the mode from the Inspector’s Layout tab when the view itself is selected (click empty canvas space to deselect any element first).

Manual layout positions are not written into the .dsl file itself. They live in a separate sidecar file next to it: workspace.dsl → workspace.dsl.layout.json. The DSL file stays the canonical source of the model; the sidecar only records where things sit on the canvas.

Switching a view from manual to auto and back doesn’t lose your manual positions — they stay in the sidecar and are restored when you switch back to manual. There’s no confirmation prompt for this toggle because it’s fully reversible.

  • Dragging a leaf element repositions just that element.
  • Dragging a container or group that has child elements moves the whole group together, and the frame automatically resizes to keep all children inside its boundary.
  • Edges stay attached to whichever side of an element is closest to the other end, recalculated as you drag.