# io.github.libtmux.control.ControlEvent.ControlEvent

- **Module:** io.github.libtmux.control.ControlEvent
- **Package:** io.github.libtmux:libtmux
- **Language:** Java
- **Kind:** struct
- **Source:** https://github.com/libtmux/libtmux-java/blob/842228310449e879ebcaa3f910597757c9dbffd6/libtmux/src/main/java/io/github/libtmux/control/ControlEvent.java#L25
- **Page:** https://libtmux.org/en/java/latest/reference/io-github-libtmux-control-controlevent-controlevent/

Something tmux volunteered, rather than an answer to a request.

A control client is told about changes as they happen — a window appearing, a session being
renamed, a layout moving — without anything asking. That is the difference between watching a
server and polling one.

Two readings of one line. {@link #notification()} is typed, for matching on: a sealed set of
what tmux sends, with a {@link Notification.Unknown} case so that a notification a newer tmux adds
still arrives rather than being dropped. {@link #kind()}, {@link #fields()} and {@link #value()}
are what tmux wrote, word by word, for anything the typed reading does not cover.

## Members

- `ControlEvent` (method): An event from its words, with the typed reading taken from them.
- `parse` (method): Reads one notification line.
- `subscription` (method): The name a subscription was registered under, for an event that came from one.
- `paneId` (method): The first field naming a pane, which is how an event says which pane it is about.
- `windowId` (method): The first field naming a window.
