# LibTmux.Server.withServer

- **Package:** libtmux-haskell
- **Language:** Haskell
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-haskell/blob/663e212622a02aa74a9bdc8ff71e2b45fcb1d4d5/src/LibTmux/Server.hs#L149
- **Page:** https://libtmux.org/en/haskell/latest/reference/libtmux-server-v-withserver/

```haskell
withServer :: ServerConfig -> (Server -> IO a) -> IO a
```

Signature types: [`ServerConfig`](/en/haskell/latest/reference/libtmux-server-t-serverconfig/), [`Server`](/en/haskell/latest/reference/libtmux-server-t-server/), [`IO`](https://hackage.haskell.org/package/base-4.22.0.0/docs/Prelude.html#t:IO).

Open one handle, run the callback, then perform bounded owned cleanup.
 Cleanup never replaces a callback exception. Incomplete cleanup raises
 [`CleanupFailed`](/en/haskell/latest/reference/libtmux-server-v-cleanupfailed/) after success, or annotates the original callback failure
 with a reachable [`CleanupRecovery`](/en/haskell/latest/reference/libtmux-server-t-cleanuprecovery/). No daemon shutdown is requested.

## Referenced declarations

- [`LibTmux.Server.Server`](/en/haskell/latest/reference/libtmux-server-t-server/) (data type)
- [`LibTmux.Server.ServerConfig`](/en/haskell/latest/reference/libtmux-server-t-serverconfig/) (data type)

## Guides

Pages that discuss `withServer`.

- [Capture and navigate](/en/haskell/latest/guides/capture/)
