Core LibraryExamples

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

Attach and send keys

Get a session handle, send a command to a pane, and capture output. These examples use libtmux from your program; to attach your terminal interactively, see Attaching to tmux.

The examples include setup, error handling, and cleanup. Source and verification identifies their files and checks.

using System.Runtime.Versioning;
namespace LibTmux.Examples.Snippets;
/// <summary>The default mode: one command, one client, one materialized object.</summary>
[UnsupportedOSPlatform("windows")]
public static class OneShot
{
/// <summary>Connects, builds a hierarchy, and types into the pane it made.</summary>
[Example("Connect, build a session and window, and type into a pane")]
public static async Task ConnectAndBuild()
{
#region ConnectAndBuild
// Requires a tmux server already listening on this socket:
// ConnectAsync() discovers one, it never starts one. With nothing
// running yet, call Server.CreateOwnedAsync() instead.
Server server = await Server.ConnectAsync();
Session session = await server.CreateSessionAsync(new NewSessionRequest { Name = "build" });
Window window = await session.CreateWindowAsync(new NewWindowRequest { Name = "tests" });
Pane pane = (await window.GetPanesAsync())[0];
await pane.SendTextAsync("dotnet test");
#endregion
}
/// <summary>Creates a window and prints what tmux answered about it.</summary>
[Example("One command, one materialized window")]
public static async Task CreateWindow(Session session, CancellationToken ct)
{
#region CreateWindow
Window window = await session.CreateWindowAsync(new NewWindowRequest { Name = "build" }, ct);
Console.WriteLine($"{window.Id} {window.Index}:{window.Name}");
#endregion
}
}

Finding an existing session instead

For a script that runs repeatedly, look up a session before creating it. Attaching to tmux shows that pattern, and Filtering and querying, in practice covers absent and ambiguous matches.

Where this comes from

Source: examples/LibTmux.Examples/Snippets/OneShot.cs

In this page: read whole from the file

Checked by: its ConnectAndBuild region is mirrored into README.md and checked by sync_snippets.py --check; the mirrored csharp run block is additionally compiled and run by ReadmeExampleTests

Source inclusion

A file="..." fence reads the named source during the site build. Hand-quoted excerpts are copies; their source files and regions are listed above.

Esc

Type to search.