# window.Window.selectLayout

- **Module:** window.Window
- **Package:** libtmux
- **Language:** TypeScript
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-ts/blob/3fe1ca654b81b8cbf4a13b777a001a3298c87a6f/packages/libtmux/src/window.ts#L505
- **Page:** https://libtmux.org/en/ts/latest/reference/window-window-selectlayout/

```
window.Window.selectLayout(layout: : string) -> Promise<void>
```

Apply a named or custom layout.

Applying any layout while a pane is zoomed unzooms the window first —
tmux's own behavior, not this method's.

A `window_layout` saved earlier and passed back here is not guaranteed
to put every pane back where it was. Before tmux 3.8, the classic
layout string restores the arrangement's shape but can rotate which
pane lands in which position; a JSON layout (3.8+, and only for a
reader that actually receives JSON — see {@link Server.connect}) restores
exactly.

Only a preset name, a layout string that parses here, or JSON on tmux
3.8+ is accepted: anything else is refused rather than sent, because two
ranges of tmux exit on a layout they cannot read and take every session
on the socket with them. tmux 3.3 and 3.3a die on a value with no
readable checksum, and 3.7 through 3.7d on one whose checksum is correct
and whose cells are not — so the checksum alone is not evidence, and the
layout is parsed in full before dispatch.

## Raises

- `TypeError`: when `layout` is ambiguous, or is neither a preset nor a layout string this package can parse.
- `VersionTooLowError`: when `layout` names a mirrored preset or JSON layout the running tmux is too old to apply.

## Example

```ts
await window.selectLayout("even-horizontal");
```
