# LibTmux.Pane.capture/3

- **Module:** LibTmux
- **Package:** libtmux
- **Language:** Elixir
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-elixir/blob/66b9b1c3f3f3186428abdfda2c76f5cf87446710/lib/libtmux/entities.ex#L369
- **Page:** https://libtmux.org/en/elixir/latest/reference/libtmux-pane-capture-3/

```
capture(connection, ref, options \\ [])
@spec capture(
        LibTmux.Action.connection(),
        LibTmux.Ref.t(),
        [capture_option()]
      ) ::
        {:ok, LibTmux.Action.result(binary())}
        | {:error, LibTmux.Error.t()}
```

Captures bounded screen bytes through explicit one-shot execution.

Returns bytes as `value` after acknowledged completion and native retirement.
Defaults: visible lines 0 through `:last`, no line joining, 65536 stdout
bytes, 65536 stderr bytes and 5000ms. `:last` is accepted only for `end_line`.
Negative line numbers include history;
tmux clamps the requested range to available lines. Output overflow is an
error, never a successful partial screen. This observes rendered screen
state, not the program's original output stream.

A Control argument returns `unsupported_transport`: arbitrary screen bytes
are not qualified for shared control framing. No fallback occurs.

    alias LibTmux.Pane

    Pane.capture(server, pane_ref, start_line: -100, max_bytes: 131_072)

## Parameters

- `connection` (`LibTmux.Action.connection()`)
- `ref` (`LibTmux.Ref.t()`)
- `options` (`[capture_option()]`)
