Muxy

Layout Schema

A layout is a tree. Each leaf is one terminal (tab). Each branch splits its panes side by side or stacked. The whole tree opens as one tab, titled after its first terminal.

A single terminal

tab:
  name: editor
  command: nvim .

A bare string is a command:

tab: htop

Splits

layout: horizontal
panes:
  - tab:
      name: editor
      command: nvim .
  - layout: vertical
    panes:
      - tab: npm run dev
      - tab:
          name: shell

Splits can nest up to 32 levels. Panes in a split share its space evenly.

Fields

FieldDescription
layouthorizontal (side by side) or vertical (stacked). Defaults to horizontal.
panesA non-empty list of child nodes. Makes the node a split.
tabThe terminal of a leaf: a command string, or an object with name and command.
tab.nameOptional title. Defaults to the command's first word, or Terminal.
tab.commandOptional command, or a list of commands joined with &&. Runs in the project folder.
tab:
  name: setup
  command:
    - npm install
    - npm run dev

Legacy tabs

Older layouts with a tabs list still load. The first entry fills the leaf; the others open as separate tabs. Use tab in new layouts.

tabs:
  - name: editor
    command: nvim .
  - name: shell

JSON

The same schema works in .json files:

{
  "layout": "horizontal",
  "panes": [
    { "tab": { "name": "editor", "command": "nvim ." } },
    { "tab": "npm run dev" }
  ]
}

Limits

A layout file can be up to 256 KiB, nest up to 32 levels, and hold up to 64 terminals.