# io.github.libtmux.transport.OutputDecoder.OutputDecoder

- **Module:** io.github.libtmux.transport.OutputDecoder
- **Package:** io.github.libtmux:libtmux
- **Language:** Java
- **Kind:** class
- **Source:** https://github.com/libtmux/libtmux-java/blob/c3517519ee799428a809ce6deb1708c8be289cd1/libtmux/src/main/java/io/github/libtmux/transport/OutputDecoder.java#L18
- **Page:** https://libtmux.org/reference/java/io-github-libtmux-transport-outputdecoder-outputdecoder/

Turns a drained pipe into lines the way callers already expect.

<p>tmux emits pane content, so the bytes are not guaranteed to be UTF-8. A malformed byte is
escaped as {@code \xNN} rather than replaced with U+FFFD, which keeps the original byte
recoverable and matches what CPython's {@code backslashreplace} produces.

<p>The two channels split differently: stdout keeps interior blank lines and drops only trailing
ones, stderr drops every blank wherever it appears. That asymmetry is not a tidy rule, it is the
observable shape callers depend on.

## Members

- `stdoutLines` (method)
- `stderrLines` (method)
