Core Library0.xAPI Reference

Choose documentation 3

latest

Current version

latest
English

Early release libtmux is released, and its APIs may still change between releases. This site's structure and URLs may change too.

method libtmux-swift latest

Server.capture(_:includingHistory:)

The pane's visible contents, one line per row. The source read is capped at 1 MiB; use incremental capture for a large scrollback instead of collecting its entire history.

Source and package
Qualified name
Server.capture(_:includingHistory:)
Declared in
Server
Package
libtmux-swift
Source
Sources/LibTmux/PaneInteraction.swift
Other languages
Perlmethod Erlang PowerShell Julia Elixir Haskell Common Lisp PythonRubyLuaTypeScriptRustGoJavaC#C++KotlinScalaOCamlF#Clojure

Description#

  • Parameters:
    • pane: the pane to read.
    • includingHistory: reads the scrollback too, from its start.

Examples#

Send input and capture its output. Type a printf command literally, send Enter as a key, and wait for its output. Compare a complete output row so terminal echo cannot satisfy the check. The five-second deadline bounds the example; the 25-millisecond pause avoids busy polling. Use Swift 6.2 or newer and tmux 3.3a or newer on Linux or macOS. In an empty directory, save this consumer package as Package.swift; SwiftPM fetches the library from release 0.1.1:

// swift-tools-version: 6.2
import PackageDescription
let package = Package(
name: "ApiExample",
platforms: [.macOS(.v13)],
dependencies: [
.package(url: "https://github.com/libtmux/libtmux-swift.git", from: "0.1.1")
],
targets: [
.executableTarget(
name: "ApiExample",
dependencies: [
.product(name: "LibTmux", package: "libtmux-swift"),
.product(name: "TmuxFixture", package: "libtmux-swift"),
],
path: "Sources"
)
]
)

Create a Sources directory and save this complete program as Sources/Example.swift. The withTmuxServer fixture owns a private tmux server and stops it after success or failure. Ordinary application code uses Server for its own socket; these examples use the fixture until their setup moves to ordinary server objects. View source

import Foundation
import LibTmux
import TmuxFixture
@main
struct ApiCapture {
static func main() async {
do {
try await withTmuxServer { @Sendable server in
guard let pane = try await server.panes().first else {
throw ExampleError.paneMissing
}
let marker = "libtmux-swift-api"
try await server.sendKeys(["printf '%s\\n' \(marker)"], to: pane, literally: true)
try await server.sendKeys(["Enter"], to: pane)
let clock = ContinuousClock()
let deadline = clock.now.advanced(by: .seconds(5))
while clock.now < deadline {
let lines = try await server.capture(pane, includingHistory: true)
if lines.contains(marker) {
print(marker)
return
}
try await Task.sleep(for: .milliseconds(25))
}
throw ExampleError.outputTimedOut
}
} catch {
FileHandle.standardError.write(Data("Example failed: \(error)\n".utf8))
exit(EXIT_FAILURE)
}
}
enum ExampleError: Error {
case paneMissing
case outputTimedOut
}
}

Build and run the saved program. An operation or cleanup error produces a failing exit status. Set LIBTMUX_TMUX_BIN to an absolute executable path to select a tmux version:

Terminal window
$ swift run ApiExample

Expected output:

libtmux-swift-api
Parameters
Raises

tmux command#

The tmux commands behind capture(_:includingHistory:).

tmux C API#

The C declarations in tmux that implement these commands.

In other ports#

Read a pane’s visible contents

Equivalents of Read a pane’s visible contents in other languages
Language Equivalent
Python libtmux.Pane.capture_pane
Ruby LibTmux::Pane#capture
Lua libtmux.Pane:capture
Erlang tmux_pane:capture/2
Haskell No public Haskell equivalent is implemented; the current modules expose scalar values and version parsing.
TypeScript pane.Pane.capture
Rust pane.Pane.capture
Go tmux.Pane.Capture
Java io.github.libtmux.Pane.capture
Clojure libtmux.core/capture!
Kotlin io.github.libtmux.kotlin.Pane.capture
Scala io.github.libtmux.scaladsl.Pane.capture
C# LibTmux.Pane.CaptureAsync
F# LibTmux.FSharp.Pane.capture
C++ libtmux::Pane::capture
OCaml Libtmux_unix.Client.capture_text
Perl LibTmux::Server::capture_pane Explicit Server operation. Captured entities remain local observations; use a new snapshot to observe changes.

No equivalent is recorded in PowerShell, Julia, Elixir or Common Lisp.

Esc

Type to search.

Reference previewOpen reference