Prerelease This site documents an alpha of libtmux. Its structure, URLs and APIs are subject to change.

Create sessions, windows and panes

Lua
  • Python Unavailable
  • Ruby Unavailable
  • Lua
  • TypeScript Unavailable
  • Rust Unavailable
  • Go Unavailable
  • Java Unavailable
  • .NET Unavailable
  • C++ Unavailable
  • Swift Unavailable

Server:new_session, Session:new_window and Pane:split return a Request<Creation>. Await inside the adapter’s managed coroutine, or register on_complete(value, err). See connections and runtime ownership for setup and cancellation.

The receipt contains session, window, pane and window_link handles made from tmux’s returned IDs. Its created sequence names the objects this operation created: all four for a session, window/pane/link for a window, and only the pane for a split. Other handles describe the containing context. Creating a pane proves neither application readiness nor command success.

Commands and literal valuesLink to section

Pass argv for a literal command, or shell for explicitly authored tmux shell text. They are mutually exclusive. Multiple arguments use tmux’s native argument execution. A singleton executable uses /usr/bin/env -- to avoid tmux’s single-argument shell interpretation; it requires that utility and rejects executable names containing =. Use explicit shell text for that case. Omitting both fields uses tmux’s configured default command or shell.

Names, directories and environment values stay literal, including tmux format-looking text. Session names reject :, ., and control bytes because tmux would otherwise change them. environment maps portable variable names to string values and applies to the created session or pane process through tmux’s -e semantics. It does not change the caller’s environment.

An explicit cwd must be an absolute existing directory. The asynchronous preflight rejects a missing directory before sending the creation command. Filesystem changes after validation remain possible. Input is copied and validated before dispatch, including nested process options.

Placement and selectionLink to section

Sessions start detached and accept name, window_name, width and height. Windows accept name, an optional nonnegative index, and select; their parent is the Session handle’s exact ID. A supplied occupied index fails rather than replacing the existing window.

Splits accept direction (left, right, up or down), optional positive size in cells or percent from 1 through 99, full_size, and select. The default direction is down. New windows and splits leave selection unchanged unless select=true. Handle references cannot be edited to redirect an operation.

Errors and limitsLink to section

process accepts timeout, deadline, max_output_bytes, kill_timeout and drain_timeout; see command completion. It cannot replace the bound socket, process environment, input stream or working directory. Creation accepts at most 1024 argv items, 128 environment entries and one MiB of encoded input, subject to the runtime’s shared byte capacity.

Errors preserve whether the command was not sent, may have taken effect, or completed. A malformed receipt reports invalid_result with completed effect and retained command output. Canceling the tmux client cannot undo a creation already accepted by the daemon. Creation does not retry or remove partial state. Closing the Server connection leaves created sessions running.

The public creation fixture exercises the same API through luv and Neovim with literal arguments, environment and directory values, returned IDs, explicit shell text and missing directories.

Esc

Type to search.