12 · Docs — layout, themes & power

Shape the office to the terminal it's in.

The same floor runs in a widescreen and in an ssh session half that wide. Layouts set the geometry, themes set the paint, and the power governor decides how hard the office renders when nothing on it is moving.

Layouts

Normal is the floor plan. Everything else is a slash command.

The desktop layout has three panes: project floors on the far left, the office in the middle, and transcript and eight tools tabs on the right. Ctrl+E focuses floors; Ctrl+W expands tools while retaining the navigator. Below 100 columns, floors use a drawer. See workspaces for the complete workflow.

theboringfloor normal layout: full sidebar with spelled-out tab names next to the floor
normal — the default layout, full sidebar, full composer

/compact on narrows the sidebar to 30 columns, swaps the tab labels for short letters and drops the input to two rows — for narrow windows and side-by-side terminals. It holds for this session; if you want it to stick, /mode compact is the same choice persisted to brain.json (/mode normal walks back).

theboringfloor compact layout: 30-column sidebar, short tab letters, two-row input
compact — 30-column sidebar, short tab letters, two-row input

/wide <n> sets the sidebar width directly — 26 to 100 columns, 0 restores the default of 80 — and persists. /zen goes the other way: fullscreen floor, minimal chrome, the sidebar entirely out of the way, any key exits. /focus floor is its alias.

theboringfloor wide layout: sidebar widened beyond the 80-column default
/wide 100 — the sidebar stretched past its 80-column default
Themes

Fourteen palettes. Bring your own, too.

Every palette uses the same cockpit: tactical floor, live task meter, agent network, dispatches and numbered tool consoles. Instruments collapse when the terminal is small. Dark terminals default to Cockpit; light terminals use Paper. Pick a palette at launch with --theme tokyo-night, or save a choice in-app with /theme <name>. /themes lists them all.

The pleasant part is the try-on: arrowing through the slash popover's /theme matches applies each one as a live preview while you pass it. enter commits what you land on. You never switch a theme blind.

01 / 14Dark

Cockpit

Midnight blue. Phosphor instruments. Your command deck, ready for anything.

MAKE IT YOURS
/theme cockpit

Run this command inside theboringfloor.

theboringfloor / cockpitFull size
The actual theboringfloor cockpit in Cockpit: project navigation, tactical floor, agent operations, and command console.
ACTUAL INTERFACESIMULATED DEMO MISSION

Import a VS Code theme

Use /theme import "/path/to/My Theme.json" or launch with --import-theme ./my-theme.jsonc. The imported palette appears in the picker as custom-my-theme and your choice is saved. Installed VS Code extensions usually keep their files under ~/.vscode/extensions/<extension>/themes/; the extension's package.json lists them in contributes.themes.

Edit any palette

Run /theme export ~/my-theme.json, edit its name, colors or tokenColors, then /theme import ~/my-theme.json. Reimport the same name to update it live. Exports require a new destination file. Saved imports live in ~/.config/theboringfloor/themes/, or under $XDG_CONFIG_HOME when set. Edit those files directly and use /theme reload to refresh the library.

JSON/JSONC comments, trailing commas, relative local includes, transparent hex colors and common TextMate scopes for diff syntax are supported. Editor, status bar, border, button, terminal ANSI and diff colors map to the cockpit; missing slots use light or dark defaults. VS Code-specific components, semantic-token rules, complex language selectors and .tmTheme references do not transfer. Import the JSON theme file itself, rather than an extension package.

Power governor

The office goes cheap when nothing moves.

/power auto|performance|saver sets the render cadence and writes back to brain.json. Auto is the default and the one most people should keep: it reads whether anything is live — streaming, pending replies, walkers, open modals, ambient bubbles — and slows the tick the moment the floor goes quiet.

modebusyidledrift (1 min quiet)
auto (default)180ms ticks1s3s
performance150ms flat——
saver400ms2s—

What saver actually slows is the cadence the ambience rides: walk cycles, tea-machine steam, server LEDs, the typing pulse. It never drops events and never slows the boss — the backend keeps its own pace regardless. Underneath all three modes the renders are memoized (a frame digest on the app; (size, planGen, tick, renderRev) on the floor), and the agentmemory board poll backs off 2× after five quiet syncs, capped at 4× and reset on change. Battery on a laptop is a render problem, and performance is 150ms flat for when it isn't.

/power autoread the room, default/power saver400ms busy, 2s idle/power performance150ms flat
Ceilings

What this doesn't do yet.

  • /compact narrows the sidebar, not the floor. The office floor's own plan is fixed — resizing the building is not a command yet.
  • /zen is a view, not a screensaver. Any key exits, so it will not stay parked on your second monitor.
  • Saver changes cadence, not capability. The floor animates slower; the work behind it does not.