# tmux client library for Clojure

Source: https://libtmux.org/en/clojure/latest/core/

> tmux client library for Clojure. Control tmux, connect to and create servers, navigate sessions, windows, and panes, send keys, watch for changes via control mode, capture pane contents

The Clojure packages have not been published. Follow the source installation
steps in [Getting started](https://libtmux.org/en/clojure/latest/guides/getting-started/).Control tmux, connect to and create servers, navigate sessions, windows, and panes, send keys, watch for changes via control mode, capture pane contents.

## At a glance

| Function | Wraps |
| ---- | ----- |
| [`libtmux.core/open!`](https://libtmux.org/en/clojure/latest/reference/libtmux-core-open/) | A tmux server |
| [`libtmux.core/sessions!`](https://libtmux.org/en/clojure/latest/reference/libtmux-core-sessions/) | A session, ID `$n` |
| [`libtmux.data/windows`](https://libtmux.org/en/clojure/latest/reference/libtmux-data-windows/) | A window in a session, ID `@n` |
| [`libtmux.data/panes`](https://libtmux.org/en/clojure/latest/reference/libtmux-data-panes/) | A pane in a window, ID `%n` |

## Typed API

- Typed objects instead of parsed format strings: [`libtmux.data`](https://libtmux.org/en/clojure/latest/reference/libtmux-data/)
- Typed errors instead of exit codes and stderr: [`libtmux.core/error-summary`](https://libtmux.org/en/clojure/latest/reference/libtmux-core-error-summary/)

## What you get over the tmux CLI

- Connect to or start a tmux server: [`libtmux.core/open!`](https://libtmux.org/en/clojure/latest/reference/libtmux-core-open/)
- Traversal from a server down to its panes: [`libtmux.data/panes`](https://libtmux.org/en/clojure/latest/reference/libtmux-data-panes/)
- Send keys to a pane: [`libtmux.core/send-keys!`](https://libtmux.org/en/clojure/latest/reference/libtmux-core-send-keys/)
- Watch for changes through tmux control mode: [`libtmux.control/subscribe!`](https://libtmux.org/en/clojure/latest/reference/libtmux-control-subscribe/)
- Capture pane contents: [`libtmux.core/capture!`](https://libtmux.org/en/clojure/latest/reference/libtmux-core-capture/)
- Async operations: [`libtmux.async`](https://libtmux.org/en/clojure/latest/reference/libtmux-async/)

- [Guides](https://libtmux.org/en/clojure/latest/guides/): Install from source and work with captures, effects and streams.
- [API reference](https://libtmux.org/en/clojure/latest/reference/): Public namespaces, function arities and ownership contracts.
- [core.async adapter](https://libtmux.org/en/clojure/latest/guides/core-async/): Optional event channels with explicit cancellation and closure.
