# Libtmux.Operations

- **Package:** libtmux
- **Language:** OCaml
- **Kind:** module
- **Source:** https://github.com/libtmux/libtmux-ocaml/blob/205dfda49742592b479247049d186956e4a4cfe9/lib/libtmux.mli#L1073
- **Public owner:** Libtmux
- **Page:** https://libtmux.org/en/ocaml/latest/reference/libtmux-operations/

```ocaml
module Operations
```

Construct typed tmux operations for a backend client. Observations are immutable, mutations use explicit targets, and no command retries a mutation against another connection generation. Construction performs no I/O; the descriptions below state what execution does.

## Members

### Common operations

- [`set_option`](/en/ocaml/latest/reference/libtmux-operations-set_option/) (function): Validate the scope and scalar kind before admission. Array values require an index, or `append:true`. Without an index, tmux splits appended text using the option's separator and fills the lowest unused indexes. Text is literal; tmux format expansion is disabled. Hooks use a separate operation.

### Other members

- [`break_pane`](/en/ocaml/latest/reference/libtmux-operations-break_pane/) (function): Move the pane into a new window at an explicit session index. An occupied destination fails. The returned IDs describe the resulting context; the pane itself already existed.
- [`capture`](/en/ocaml/latest/reference/libtmux-operations-capture/) (function): Capture and validate the complete session/window-link/pane graph. The result records an acquisition interval, not an atomic server instant.
- [`capture_environment`](/en/ocaml/latest/reference/libtmux-operations-capture_environment/) (function): Acquire a bounded table through a read-only command process. Its response must identify the bound daemon while the original pidfd remains live. Unsupported external variable names fail decoding; they are not omitted.
- [`capture_hooks`](/en/ocaml/latest/reference/libtmux-operations-capture_hooks/) (function): Capture locally configured built-in hooks. Command values are tmux's printed representation, retained as data.
- [`capture_options`](/en/ocaml/latest/reference/libtmux-operations-capture_options/) (function): Acquire one bounded option table, excluding hooks. The default includes only local entries. Inherited table enumeration includes built-ins; inherited user options require `read_option` with their explicit name. Built-in descriptors cover every supported release from tmux 3.3a through 3.8; other versions return {!Error.Unsupported}.
- [`capture_text`](/en/ocaml/latest/reference/libtmux-operations-capture_text/) (function): Capture inclusive visible rows through an operation-owned temporary file. Require `0 <= start <= end_ < Pane.height pane`; scrollback is excluded. Retained bytes survive client close. The scratch directory must share the daemon filesystem.
- [`clear_history`](/en/ocaml/latest/reference/libtmux-operations-clear_history/) (function): Clear stored scrollback for this pane. The visible screen and running process remain; later captures cannot recover discarded history.
- [`clear_option_array`](/en/ocaml/latest/reference/libtmux-operations-clear_option_array/) (function): Set a local empty array, masking inheritance.
- [`create_session`](/en/ocaml/latest/reference/libtmux-operations-create_session/) (function): Create a detached session on the bound daemon. Name collisions fail.
- [`create_window`](/en/ocaml/latest/reference/libtmux-operations-create_window/) (function): Create detached, rejecting an occupied explicit index.
- [`cycle_layout`](/en/ocaml/latest/reference/libtmux-operations-cycle_layout/) (function): Select the next or previous tmux preset layout for this window.
- [`kill_pane`](/en/ocaml/latest/reference/libtmux-operations-kill_pane/) (function): Destroy the target pane and its running process. tmux removes a window that becomes empty and may remove its now-empty sessions.
- [`kill_session`](/en/ocaml/latest/reference/libtmux-operations-kill_session/) (function): Remove the session and its window links. Windows with no other links and their panes are destroyed. Removing the last session may stop tmux.
- [`kill_window`](/en/ocaml/latest/reference/libtmux-operations-kill_window/) (function): Destroy the window, all its session links and every contained pane. This acts on the global window, not a single contextual link.
- [`link_window`](/en/ocaml/latest/reference/libtmux-operations-link_window/) (function): Add a session-specific link to the global window at `index`, rejecting an occupied index. The source window and its panes stay shared.
- [`move_pane`](/en/ocaml/latest/reference/libtmux-operations-move_pane/) (function): Move the source pane beside another pane, optionally setting the split size. Both targets must belong to the same bound generation. An emptied source window is removed by tmux.
- [`move_window_at`](/en/ocaml/latest/reference/libtmux-operations-move_window_at/) (function): Move the source session's current link at `from_index`. Destination collisions fail.
- [`read_hook`](/en/ocaml/latest/reference/libtmux-operations-read_hook/) (function): Read an exact hook name. Inheritance is included by default; `None` means no entry under the selected policy. Missing targets remain errors.
- [`read_option`](/en/ocaml/latest/reference/libtmux-operations-read_option/) (function): Read one exact name, including user-option inheritance. `None` means no entry under the selected policy. An invalid target remains an error. The default follows inheritance; this does not identify the defining parent scope.
- [`refresh_client_at`](/en/ocaml/latest/reference/libtmux-operations-refresh_client_at/) (function): Request a redraw; no terminal-rendering completion is implied.
- [`remove_environment`](/en/ocaml/latest/reference/libtmux-operations-remove_environment/) (function): Store a removal marker, excluding the variable from future panes.
- [`remove_hook`](/en/ocaml/latest/reference/libtmux-operations-remove_hook/) (function): Remove the local hook or one indexed array entry. An inherited hook may become effective again; this does not stop work it already started.
- [`rename_session`](/en/ocaml/latest/reference/libtmux-operations-rename_session/) (function): Set the session name, rejecting a conflicting existing name. Bound IDs remain usable; existing snapshots retain their captured names.
- [`rename_window`](/en/ocaml/latest/reference/libtmux-operations-rename_window/) (function): Set the global window name. Every session link observes the new name on its next capture; existing snapshots retain the old value.
- [`request_detach_client_at`](/en/ocaml/latest/reference/libtmux-operations-request_detach_client_at/) (function): Request detachment of the client currently bearing this name. Success confirms request processing, not peer exit. Detaching the library's own primary lane can lose the response and retire its generation.
- [`resize_control_client_at`](/en/ocaml/latest/reference/libtmux-operations-resize_control_client_at/) (function): Set a control client's reported size. tmux rejects terminal clients.
- [`resize_pane`](/en/ocaml/latest/reference/libtmux-operations-resize_pane/) (function): Request positive cell dimensions, supplying at least one dimension. Omit either dimension to retain it. tmux can constrain the result to the available layout. Capture again to observe the actual dimensions.
- [`resize_window`](/en/ocaml/latest/reference/libtmux-operations-resize_window/) (function): Request positive cell dimensions, supplying at least one dimension. Omit either dimension to retain it. Client-size and window-size policies can affect subsequent sizing.
- [`respawn_pane`](/en/ocaml/latest/reference/libtmux-operations-respawn_pane/) (function): Start the supplied command in the existing pane. A running process causes failure unless `kill_running:true` explicitly replaces it. The pane ID remains unchanged.
- [`rotate_panes`](/en/ocaml/latest/reference/libtmux-operations-rotate_panes/) (function): Rotate pane positions in the selected direction. Pane identities and running processes remain attached to their panes.
- [`run_hook`](/en/ocaml/latest/reference/libtmux-operations-run_hook/) (function): Run the effective hook in an explicit session, window or pane context. A successful result follows completion of its synchronous command queue. Background work started by a hook has its own lifetime. A later hook failure returns an uncertain outcome; preceding effects remain. Named `@` hooks return `Unsupported` because tmux can hide their parse failures in the server log. Configuration and inspection remain available.
- [`select_layout`](/en/ocaml/latest/reference/libtmux-operations-select_layout/) (function): Apply a preset or validated custom layout to the window. Pane geometry follows tmux layout rules; capture again to observe the result.
- [`select_pane`](/en/ocaml/latest/reference/libtmux-operations-select_pane/) (function): Make the pane active in its containing window. This does not open or attach a terminal client.
- [`select_window_at`](/en/ocaml/latest/reference/libtmux-operations-select_window_at/) (function): Operate on the session's current index at execution, not an old link incarnation.
- [`send_keys`](/en/ocaml/latest/reference/libtmux-operations-send_keys/) (function): Send named tmux keys in order, without an implicit Enter. Use {!send_text} for literal bytes rather than key interpretation.
- [`send_text`](/en/ocaml/latest/reference/libtmux-operations-send_text/) (function): Literal bytes, without an implicit Enter. NUL is rejected at admission.
- [`set_environment`](/en/ocaml/latest/reference/libtmux-operations-set_environment/) (function): Set a local environment value for future pane processes. `hidden` defaults to false; hidden values remain internal to tmux. Existing processes keep their environment.
- [`set_hook`](/en/ocaml/latest/reference/libtmux-operations-set_hook/) (function): Set a hook to a nonempty command list. Without an index, replace the whole hook array, or fill the lowest free index when appending. An explicit `@name` custom hook stores command text as a user option; it requires complete replacement and has no array indexes. `read_hook` returns its `Options.Text` value; bulk hook capture includes built-ins. Commands may cause arbitrary tmux effects when triggered. Hooks that print output are outside the supported control transport contract.
- [`set_pane_title`](/en/ocaml/latest/reference/libtmux-operations-set_pane_title/) (function): Set the pane title as literal text, without tmux format expansion. A running terminal application can subsequently replace the title.
- [`signal`](/en/ocaml/latest/reference/libtmux-operations-signal/) (function): Signal a named tmux semaphore, releasing a waiter or retaining the signal for a later {!wait_for}. This does not signal an OS process.
- [`split_pane`](/en/ocaml/latest/reference/libtmux-operations-split_pane/) (function): Create a detached pane beside the target and return the IDs reported by tmux. Omitted `size` lets tmux choose the split; tmux rejects splits when no space remains.
- [`swap_panes`](/en/ocaml/latest/reference/libtmux-operations-swap_panes/) (function): Exchange pane positions without exchanging their identities or running processes. Both targets must belong to the same bound generation.
- [`switch_client_at`](/en/ocaml/latest/reference/libtmux-operations-switch_client_at/) (function): Switch the client currently bearing this name to the bound session. Environment updates are disabled by default. This can move either a terminal client or a control client; it does not open a new terminal.
- [`unlink_window_at`](/en/ocaml/latest/reference/libtmux-operations-unlink_window_at/) (function): Without `allow_kill`, tmux rejects removal of the last link to a window.
- [`unset_environment`](/en/ocaml/latest/reference/libtmux-operations-unset_environment/) (function): Remove the local entry, allowing a global value to apply to future panes.
- [`unset_option`](/en/ocaml/latest/reference/libtmux-operations-unset_option/) (function): Remove a local override or one array element. Global built-ins reset to their tmux defaults; this does not recursively unset child overrides.
- [`wait_for`](/en/ocaml/latest/reference/libtmux-operations-wait_for/) (function): Wait on a named tmux semaphore using a dedicated bound lane.
- [`zoom_pane`](/en/ocaml/latest/reference/libtmux-operations-zoom_pane/) (function): Toggle the window's zoom state around this pane.
