Server.Sessions
Sessions materializes the server's sessions. Failures, including ErrNoServer, remain errors rather than empty results.
Source and package
- Qualified name
-
tmux.Server. Sessions - Package
- tmux
- Declared in
Server- Distribution
- github.com/libtmux/libtmux-go/tmux
- Source
- tmux/hierarchy.go
- Other languages
- Perlmethod Erlangfunction PowerShellcmdlet Juliafunction Elixirfunction Haskell Common Lispfunction PythonRubyLuaTypeScriptRustJavaC#C++SwiftKotlinScalaOCamlfunction F#function Clojurefunction
-
Examples#
List all sessions on a private server. Sessions reads a fresh snapshot; an absent daemon is an error, not an empty list. Names are sorted here only to make the example output independent of tmux ordering. Use Go 1.26 or newer and tmux 3.3a or newer on a Unix system, with
tmuxandcatonPATH. In a new directory, create a module and add the library from the Go module proxy:Terminal window $ go mod init example.com/libtmux-api && \go get github.com/libtmux/libtmux-go@latestSave this complete example as
example_test.go. It creates a private temporary socket and stops its server before removing the directory. Cleanup failure fails the example and retains the socket directory. View sourcepackage tmux_testimport ("context""errors""fmt""os""path/filepath""slices""time""github.com/libtmux/libtmux-go/tmux")// List all sessions on a private server. Sessions reads a fresh snapshot;// an absent daemon is an error, not an empty list. Names are sorted here// only to make the example output independent of tmux ordering.func ExampleServer_Sessions_complete() {run := func() (runErr error) {directory, err := os.MkdirTemp("", "libtmux-go-api-")if err != nil {return fmt.Errorf("create socket directory: %w", err)}server, err := tmux.NewServer(tmux.ServerOptions{SocketPath: filepath.Join(directory, "tmux.sock"),ConfigFile: "/dev/null",})if err != nil {return errors.Join(err, os.RemoveAll(directory))}defer func() {// Cleanup has its own deadline because the operation may have timed out.cleanup, cancel := context.WithTimeout(context.Background(), 5*time.Second)defer cancel()if err := server.Kill(cleanup); err != nil && !errors.Is(err, tmux.ErrNoServer) {runErr = errors.Join(runErr, fmt.Errorf("stop server at %s: %w", directory, err))return}runErr = errors.Join(runErr, os.RemoveAll(directory))}()ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)defer cancel()for _, name := range []string{"work", "docs"} {if _, err = server.NewSession(ctx, tmux.NewSessionRequest{Name: name, WindowName: name + "-editor", Command: "cat", Width: 100, Height: 30,}); err != nil {return fmt.Errorf("create %s session: %w", name, err)}}sessions, err := server.Sessions(ctx)if err != nil {return fmt.Errorf("list sessions: %w", err)}names := make([]string, 0, len(sessions))for _, session := range sessions {name, ok := session.Name()if !ok {return fmt.Errorf("session %s has no name", session.ID())}names = append(names, name)}slices.Sort(names)fmt.Println(names)return nil}if err := run(); err != nil {panic(err)}// Output:// [docs work]}Run the saved file. Go checks the Output comment and fails on different output or an operation or cleanup error:
Terminal window $ go test -count=1 -v example_test.go- Parameters
Guides#
Pages that discuss Sessions.
- Concepts
- Topics
In other ports#
List the server’s sessions
| Language | Equivalent |
|---|---|
| Python | libtmux |
| Ruby | Lib |
| Lua | libtmux |
| PowerShell | Lib Acquires sessions through -Server, with optional exact -Id and -Name selectors. |
| Julia | Lib sessions reads membership from a captured Snapshot without contacting tmux. |
| Erlang | tmux Returns captured rows without tmux I/O. |
| Elixir | Lib Returns a Selection of captured sessions without contacting tmux. |
| Haskell | No public Haskell equivalent is implemented; the current modules expose scalar values and version parsing. |
| Common Lisp | libtmux: sessions returns a fresh vector from a captured snapshot without contacting tmux. |
| TypeScript | server |
| Rust | server |
| Java | io |
| Clojure | libtmux Acquires a new captured graph and returns its session maps; acquisition failure throws. |
| Kotlin | io |
| Scala | io |
| C# | Lib |
| F# | Lib Builds a deferred session query on LibTmux.Server. Query.list acquires the results; it does not traverse the handle’s captured membership. |
| C++ | libtmux:: |
| Swift | Server |
| OCaml | Libtmux Reads an immutable array of already captured sessions without I/O. |
| Perl | Lib Reads captured membership locally, preserving order. |