# server.Server.panes

- **Module:** server
- **Package:** libtmux
- **Language:** TypeScript
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-ts/blob/46cccfef2a546de55ce8b308249b8c76339089a0/packages/libtmux/src/server.ts#L731
- **Page:** https://libtmux.org/en/ts/latest/reference/server-server-panes/

```
async panes(): Promise<Selection<Pane>>
```

Every pane on the server.

Save this complete program as `panes.ts`. With Bun 1.4.2 or newer,
tmux 3.2a or newer, and `libtmux` installed, run `bun run panes.ts`.
It creates and stops a private tmux server. A failed operation or cleanup
exits with an error; a cleanup error names the retained socket directory.

## Examples

```ts
import { strict as assert } from "node:assert";
import { mkdtemp, readdir, rm } from "node:fs/promises";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { Server, PaneDirection } from "libtmux";

const directory = await mkdtemp(join(tmpdir(), "ltx-example-"));
const server = new Server({
  socketPath: join(directory, "tmux.sock"),
  configFile: "/dev/null",
  timeoutMs: 5_000,
});
const failures: unknown[] = [];
try {
  const session = await server.newSession({
    name: "work",
    windowName: "editor",
    shellCommand: "cat",
  });
  const pane = session.panes.one();
  await pane.split({ direction: PaneDirection.Below, shellCommand: "cat" });
  const panes = await server.panes();
  assert.equal(panes.count(), 2);
  const active = panes.where({ active: true });
  assert.equal(active.count(), 1);
  console.log("panes:", panes.count(), "active:", active.count());
  for (const item of panes) {
    assert.equal(item.session?.name, "work");
    assert.equal(item.window?.name, "editor");
    console.log("location:", item.session?.name, item.window?.name);
  }
} catch (error) {
  failures.push(error);
} finally {
  try {
    if ((await readdir(directory)).includes("tmux.sock")) await server.kill();
    await rm(directory, { recursive: true });
  } catch (error) {
    failures.push(new Error(`Cleanup failed; inspect ${directory}`, { cause: error }));
  }
}
if (failures.length > 0) throw new AggregateError(failures, "Example failed");
```

## Guides

Pages that discuss `panes`.

- [Filtering and queries](/en/ts/latest/concepts/queries/)

## In other ports

List the server's panes

| Language | Equivalent |
| --- | --- |
| Python | [`libtmux.Server.panes`](/en/py/latest/reference/libtmux-server-panes/) (property) |
| Ruby | [`LibTmux::Server#list_panes`](/en/ruby/latest/reference/libtmux-server-list_panes/) (method) |
| Lua | [`libtmux.Snapshot.panes`](/en/lua/latest/reference/libtmux-snapshot-panes/) (attribute) |
| PowerShell | [`LibTmux\Get-TmuxPane`](/en/powershell/latest/reference/libtmux-get-tmuxpane/) (cmdlet). Use the [`-Server`](/en/powershell/latest/reference/libtmux-get-tmuxpane/#LibTmux%5CGet-TmuxPane.parameter.Server) parameter set to acquire panes across the server. |
| Julia | [`LibTmux.panes`](/en/julia/latest/reference/libtmux-panes/) (function). `panes` with a `Snapshot` reads every captured physical pane. Use `paneoccurrences` for session placements. |
| Elixir | [`LibTmux.Snapshot.panes/1`](/en/elixir/latest/reference/libtmux-snapshot-panes-1/) (function). Returns a `Selection` of every captured physical pane without contacting tmux. |
| Rust | [`server.Server.panes`](/en/rs/latest/reference/server-server-panes/) (method) |
| Go | [`tmux.Server.Panes`](/en/go/latest/reference/tmux-server-panes/) (method) |
| Java | [`io.github.libtmux.Server.panes`](/en/java/latest/reference/io-github-libtmux-server-server-panes/) (method) |
| Kotlin | [`io.github.libtmux.kotlin.Server.panes`](/en/kotlin/latest/reference/io-github-libtmux-kotlin-server-panes/) (method) |
| Scala | [`io.github.libtmux.scaladsl.Server.panes`](/en/scala/latest/reference/io-github-libtmux-scaladsl-server-panes/) (method) |
| C# | [`LibTmux.Server.Panes`](/en/csharp/latest/reference/libtmux-server-panes/) (property) |
| F# | [`LibTmux.FSharp.Server.panes`](/en/fsharp/latest/reference/libtmux-fsharp-server-panes/) (function). Builds a deferred pane query on the shared .NET `LibTmux.Server`. `Query.list` acquires panes across that server. |
| C++ | [`libtmux::Server::panes`](/en/cxx/latest/reference/libtmux-server-panes/) (method) |
| Swift | [`Server.panes()`](/en/swift/latest/reference/server-panes()/) (method) |
