Core LibraryalphaConcepts

Choose documentation 3

latest

Current version

latest
English

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

Edit this page on GitHub

Filtering and queries

Use a collection filter to find matching sessions, windows, or panes. Use an exactly-one lookup when your next operation requires a single target.

  • Filtering returns a collection; exactly-one lookup checks the result count. A filter returns zero or more matches. An exactly-one operation returns one object or reports a missing or ambiguous match.

  • Choose where to filter. Filter a snapshot in your program when you need several queries over the same data. A tmux format filter can reduce the rows returned by a live read. The cost depends on the data and queries you need.

Typed and local filters

Typed field operations let the compiler reject incompatible comparisons:

Compose FilterExpr values with &&, ||, and !. For example, pane::command.starts_with("nv") && pane::active is valid, while pane::active.starts_with("x") fails to compile.

Examples of typed and local filters:

// A filter is a value built from typed fields; `window::active.starts_with(...)`
// would not compile: a flag has no string operations.
const auto interesting =
libtmux::window::name.starts_with("e") || libtmux::window::name == "logs";
auto matched = *windows | libtmux::matching(interesting);
// "Exactly one, or say why not" is a question the library answers directly.
auto logs = *windows | libtmux::matching(libtmux::window::name == "logs");
if (const auto only = libtmux::exactly_one(logs); only.has_value()) {
std::printf("exactly one: %s\n", std::string{only->get().id()}.c_str());
}

Result counts

Filtering and querying shows exactly-one lookups and their error handling. Do not index the first result until the operation has established that a match exists.

Esc

Type to search.

Reference preview Open reference