Ownership and cleanup
A tmux session, window, or pane normally remains until you kill it. Scope-based cleanup can kill it when your code leaves a block, including after an exception. See Workspaces for a temporary layout example.
Release connections and kill owned sessions¶
Control connections and notification streams implement [Symbol.asyncDispose].
await using releases those handles; it leaves the watched session and panes
running. Use finally to kill a session your program owns:
const session = await server.newSession({ name: "work" });try { const window = await session.newWindow({ name: "editor" }); await window.panes.at(0)?.sendKeys("echo hi");} finally { await session.kill();}Testing cleanup¶
Use explicit cleanup for objects whose handles have no disposal hook. For an entire disposable test server, prefer your port’s test fixture or server guard; see Testing with libtmux.