# libtmux.workspace:make-workspace

**Workspace Manager concept example** A working example of the core library. It can change without notice.

- **Package:** libtmux/workspace
- **Language:** Common Lisp
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-lisp/blob/c2e5fc4ed3befda21f45dfa5d5868c38fd138311/src/workspace.lisp#L376
- **Public owner:** libtmux.workspace
- **Page:** https://libtmux.org/en/lisp/latest/workspace/reference/libtmux-workspace-make-workspace/

```
(make-workspace data &key (max-windows 100) (max-panes 1000) (max-argv 256) (max-environment 256))
```

Validate closed native DATA and return an owned WORKSPACE without I/O.
DATA is a keyword plist in schema libtmux.lisp.workspace/1. Lists and vectors
must be finite. MAX-WINDOWS, MAX-PANES, and MAX-ARGV bound retained topology and
commands. MAX-ENVIRONMENT bounds session (name . value) string pairs; tmux
stores them in the session environment inherited by later panes. Pane :COMMAND
is argv; :SHELL-COMMAND is explicit shell source, mutually exclusive with argv.
Window :LAYOUT is a named keyword or (:CUSTOM string) validated by tmux on apply.
Names reject characters tmux would rewrite. Unknown/duplicate keys, invalid
types or limits signal INVALID-WORKSPACE. Mutable inputs are copied.

See also: `libtmux:new-session`, `libtmux.workspace:parse-workspace`, `libtmux.workspace:plan-workspace`, `libtmux:select-layout`, `libtmux.workspace:workspace-data`.

## Parameters

- `data`
- `max-windows?`
- `max-panes?`
- `max-argv?`
- `max-environment?`

## Guides

Pages that discuss `make-workspace`.

- [Workspace guide](/en/lisp/latest/workspace/source-guide/)
