contents

Workspaces & monitors#

Workspaces#

Workspaces are created on demand: switch to workspace 5 and workspaces up to 5 exist from then on. Each workspace owns its own layout (a dwindle tree or a scrolling strip), floating stack, and fullscreen slot, and remembers which output it was born on.

  • focus-workspace N switches (bind argument and burrow are 1-based).
  • focus-workspace "+1" / "-1" step relative to the current one and wrap around the ends.
  • move-to-workspace N moves the focused window and follows; send-to-workspace N (or focus=#false) moves it and stays.

Sending a window to a workspace that does not exist yet creates it on the spot, so burrow send-to-workspace 7 from a script is all it takes to launch something onto workspace 7.

Each workspace also keeps its own layout mode. The set-layout action flips the focused one between the dwindle tree and the scrolling strip live, with move animations carrying the windows to their new places; the config mode only sets what new workspaces start with. The workspace stack has a direction too: workspace-axis in the layout config picks horizontal or vertical switching for all-dwindle sessions, and while any workspace runs the scrolling strip, switches go vertical regardless. The strip owns left and right, so the workspace stack moves up and down.

Monitors#

Outputs tile left to right in one global coordinate space, and each output shows one workspace. Switching to a workspace that lives on another output moves focus to that output and drags the cursor along, unless the pointer is already there. Clicking or moving the pointer onto another output focuses it and its visible workspace.

Per-output settings (mode, vrr) live in the output config section. Connector names come from burrow monitors.

Hotplug#

Displays connect and disconnect live; carrot re-probes, reassigns display pipes, and re-arranges the layout. All heads come up in a single atomic commit so the kernel validates the combined bandwidth, and if a mode does not fit, carrot steps refresh rates down rather than failing the whole topology. Input devices hotplug on the same netlink socket.

For scripts and bars#

burrow workspaces reports index, window count, active state, owning output, and each workspace's layout. burrow subscribe streams {"workspace":N} events on every switch; see burrow & IPC.