# Observation and filter schema

Source: https://libtmux.org/en/elixir/latest/topics/schema/

> Fields, wire names, value categories and operators of each observed entity.

Generated from [`LibTmux.Schema`](<https://libtmux.org/en/elixir/latest/reference/libtmux-schema/>); regenerate with `mix run scripts/generate_schema.exs`.
All current fields use the tmux 3.3 capture baseline. Coverage must still be loaded.
Only `nullable_integer` admits [`nil`](<https://hexdocs.pm/elixir/typespecs.html#literals>); other unavailable or unloaded fields raise.
Link IDs are `{session_id, index, window_id}` locally and three-element arrays on the wire.
See [filtering](https://libtmux.org/en/elixir/latest/guides/filtering/) for Boolean, relation and error semantics.

## `session`

| Elixir field | Wire field | Value category | tmux format | Operators |
| --- | --- | --- | --- | --- |
| [`attached`](<https://libtmux.org/en/elixir/latest/reference/libtmux-session-attached/>) | [`attached`](<https://libtmux.org/en/elixir/latest/reference/libtmux-session-attached/>) | `:boolean` | Derived | `equals`, `not`, `in`, `not_in` |
| [`attached_count`](<https://libtmux.org/en/elixir/latest/reference/libtmux-session-attached_count/>) | `attachedCount` | `:integer` | [`session_attached`](https://libtmux.org/en/tmux/latest/catalog/formats/session_attached/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | `{:id, :session}` | [`session_id`](https://libtmux.org/en/tmux/latest/catalog/formats/session_id/) | `equals`, `not`, `in`, `not_in` |
| `name` | `name` | `:string` | [`session_name`](https://libtmux.org/en/tmux/latest/catalog/formats/session_name/) | `equals`, `not`, `in`, `not_in`, `contains`, `starts_with`, `ends_with` |

| Relation | Wire relation | Cardinality | Target | Operators |
| --- | --- | --- | --- | --- |
| [`active_window`](<https://libtmux.org/en/elixir/latest/reference/libtmux-session-active_window-2/>) | `activeWindow` | [`one`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-one-2/>) | `window` | `is`, `is_not` |
| `clients` | `clients` | `many` | `client` | `some`, `every`, [`none`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>), [`count`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-count-2/>) |
| `panes` | `panes` | `many` | `pane` | `some`, `every`, [`none`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>), [`count`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-count-2/>) |
| `window_links` | `windowLinks` | `many` | `window_link` | `some`, `every`, [`none`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>), [`count`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-count-2/>) |
| `windows` | `windows` | `many` | `window` | `some`, `every`, [`none`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>), [`count`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-count-2/>) |

## `window`

| Elixir field | Wire field | Value category | tmux format | Operators |
| --- | --- | --- | --- | --- |
| `height` | `height` | `:integer` | [`window_height`](https://libtmux.org/en/tmux/latest/catalog/formats/window_height/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | `{:id, :window}` | [`window_id`](https://libtmux.org/en/tmux/latest/catalog/formats/window_id/) | `equals`, `not`, `in`, `not_in` |
| [`layout`](<https://libtmux.org/en/elixir/latest/reference/libtmux-window-layout/>) | [`layout`](<https://libtmux.org/en/elixir/latest/reference/libtmux-window-layout/>) | `:string` | [`window_layout`](https://libtmux.org/en/tmux/latest/catalog/formats/window_layout/) | `equals`, `not`, `in`, `not_in`, `contains`, `starts_with`, `ends_with` |
| `name` | `name` | `:string` | [`window_name`](https://libtmux.org/en/tmux/latest/catalog/formats/window_name/) | `equals`, `not`, `in`, `not_in`, `contains`, `starts_with`, `ends_with` |
| `width` | `width` | `:integer` | [`window_width`](https://libtmux.org/en/tmux/latest/catalog/formats/window_width/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`zoomed`](<https://libtmux.org/en/elixir/latest/reference/libtmux-window-zoomed/>) | [`zoomed`](<https://libtmux.org/en/elixir/latest/reference/libtmux-window-zoomed/>) | `:boolean` | [`window_zoomed_flag`](https://libtmux.org/en/tmux/latest/catalog/formats/window_zoomed_flag/) | `equals`, `not`, `in`, `not_in` |

| Relation | Wire relation | Cardinality | Target | Operators |
| --- | --- | --- | --- | --- |
| `panes` | `panes` | `many` | `pane` | `some`, `every`, [`none`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>), [`count`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-count-2/>) |
| `sessions` | `sessions` | `many` | `session` | `some`, `every`, [`none`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>), [`count`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-count-2/>) |
| `window_links` | `windowLinks` | `many` | `window_link` | `some`, `every`, [`none`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>), [`count`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-count-2/>) |

## `window_link`

| Elixir field | Wire field | Value category | tmux format | Operators |
| --- | --- | --- | --- | --- |
| `active` | `active` | `:boolean` | [`window_active`](https://libtmux.org/en/tmux/latest/catalog/formats/window_active/) | `equals`, `not`, `in`, `not_in` |
| [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | `{:id, :window_link}` | Derived | `equals`, `not`, `in`, `not_in` |
| `index` | `index` | `:integer` | [`window_index`](https://libtmux.org/en/tmux/latest/catalog/formats/window_index/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`session_id`](https://libtmux.org/en/tmux/latest/catalog/formats/session_id/) | `sessionId` | `{:id, :session}` | [`session_id`](https://libtmux.org/en/tmux/latest/catalog/formats/session_id/) | `equals`, `not`, `in`, `not_in` |
| [`window_id`](https://libtmux.org/en/tmux/latest/catalog/formats/window_id/) | `windowId` | `{:id, :window}` | [`window_id`](https://libtmux.org/en/tmux/latest/catalog/formats/window_id/) | `equals`, `not`, `in`, `not_in` |

| Relation | Wire relation | Cardinality | Target | Operators |
| --- | --- | --- | --- | --- |
| `session` | `session` | [`one`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-one-2/>) | `session` | `is`, `is_not` |
| `window` | `window` | [`one`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-one-2/>) | `window` | `is`, `is_not` |

## `pane`

| Elixir field | Wire field | Value category | tmux format | Operators |
| --- | --- | --- | --- | --- |
| `active` | `active` | `:boolean` | [`pane_active`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_active/) | `equals`, `not`, `in`, `not_in` |
| [`current_command`](<https://libtmux.org/en/elixir/latest/reference/libtmux-pane-current_command/>) | `currentCommand` | `:string` | [`pane_current_command`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_current_command/) | `equals`, `not`, `in`, `not_in`, `contains`, `starts_with`, `ends_with` |
| [`current_path`](<https://libtmux.org/en/elixir/latest/reference/libtmux-pane-current_path/>) | `currentPath` | `:string` | [`pane_current_path`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_current_path/) | `equals`, `not`, `in`, `not_in`, `contains`, `starts_with`, `ends_with` |
| [`dead`](<https://libtmux.org/en/elixir/latest/reference/libtmux-pane-dead/>) | [`dead`](<https://libtmux.org/en/elixir/latest/reference/libtmux-pane-dead/>) | `:boolean` | [`pane_dead`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_dead/) | `equals`, `not`, `in`, `not_in` |
| [`exit_status`](<https://libtmux.org/en/elixir/latest/reference/libtmux-pane-exit_status/>) | `exitStatus` | `:nullable_integer` | [`pane_dead_status`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_dead_status/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| `height` | `height` | `:integer` | [`pane_height`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_height/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | `{:id, :pane}` | [`pane_id`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_id/) | `equals`, `not`, `in`, `not_in` |
| `index` | `index` | `:integer` | [`pane_index`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_index/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`pid`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>) | [`pid`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>) | `:nullable_integer` | [`pane_pid`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_pid/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`title`](<https://libtmux.org/en/elixir/latest/reference/libtmux-pane-title/>) | [`title`](<https://libtmux.org/en/elixir/latest/reference/libtmux-pane-title/>) | `:string` | [`pane_title`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_title/) | `equals`, `not`, `in`, `not_in`, `contains`, `starts_with`, `ends_with` |
| `width` | `width` | `:integer` | [`pane_width`](https://libtmux.org/en/tmux/latest/catalog/formats/pane_width/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`window_id`](https://libtmux.org/en/tmux/latest/catalog/formats/window_id/) | `windowId` | `{:id, :window}` | [`window_id`](https://libtmux.org/en/tmux/latest/catalog/formats/window_id/) | `equals`, `not`, `in`, `not_in` |

| Relation | Wire relation | Cardinality | Target | Operators |
| --- | --- | --- | --- | --- |
| `window` | `window` | [`one`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-one-2/>) | `window` | `is`, `is_not` |

## `client`

| Elixir field | Wire field | Value category | tmux format | Operators |
| --- | --- | --- | --- | --- |
| [`control_mode`](<https://libtmux.org/en/elixir/latest/reference/libtmux-client-control_mode/>) | `controlMode` | `:boolean` | [`client_control_mode`](https://libtmux.org/en/tmux/latest/catalog/formats/client_control_mode/) | `equals`, `not`, `in`, `not_in` |
| `height` | `height` | `:nullable_integer` | [`client_height`](https://libtmux.org/en/tmux/latest/catalog/formats/client_height/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | [`id`](<https://libtmux.org/en/elixir/latest/reference/libtmux-ref-id-0/>) | `{:id, :client}` | [`client_name`](https://libtmux.org/en/tmux/latest/catalog/formats/client_name/) | `equals`, `not`, `in`, `not_in` |
| [`pid`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>) | [`pid`](<https://hexdocs.pm/elixir/typespecs.html#basic-types>) | `:integer` | [`client_pid`](https://libtmux.org/en/tmux/latest/catalog/formats/client_pid/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |
| [`session_id`](https://libtmux.org/en/tmux/latest/catalog/formats/session_id/) | `sessionId` | `{:id, :session}` | [`session_id`](https://libtmux.org/en/tmux/latest/catalog/formats/session_id/) | `equals`, `not`, `in`, `not_in` |
| `width` | `width` | `:integer` | [`client_width`](https://libtmux.org/en/tmux/latest/catalog/formats/client_width/) | `equals`, `not`, `in`, `not_in`, `lt`, `lte`, `gt`, `gte` |

| Relation | Wire relation | Cardinality | Target | Operators |
| --- | --- | --- | --- | --- |
| `session` | `session` | [`one`](<https://libtmux.org/en/elixir/latest/reference/libtmux-selection-one-2/>) | `session` | `is`, `is_not` |
