# tmux.ClientFilter

- **Module:** tmux
- **Package:** github.com/libtmux/libtmux-go/tmux
- **Language:** Go
- **Kind:** struct
- **Source:** https://github.com/libtmux/libtmux-go/blob/5f808882015a975a65acc7f9da5b3ff0d5cbdc91/tmux/filter_generated.go#L164
- **Page:** https://libtmux.org/reference/go/tmux-clientfilter/

ClientFilter matches materialized [Client] values without tmux I/O. Its zero value matches every non-nil candidate. Criteria are ANDed; AnyOf adds an OR requirement and Not excludes. Field and relation criteria correspond to [Client.Name], [Client.ReadOnly], [Client.AttachedSession], [Client.AttachedWindow], and [Client.AttachedPane]. [ClientFilter.Validate] and methods that consume the filter reject invalid criteria with [ErrInvalidFilter].

## Members

- `Name` (attribute) — Name exactly matches the stable tmux client name from Client.Name. A nil pointer leaves Name unset; a non-nil pointer applies it, including when it points to the zero value.
- `NameIn` (attribute) — NameIn lists accepted values for the stable tmux client name from Client.Name. A candidate matches when its materialized value equals one listed value. A nil slice leaves NameIn unset; a non-nil empty slice is invalid.
- `NameContains` (attribute) — NameContains requires the stable tmux client name from Client.Name to contain the pointed-to substring. A nil pointer leaves NameContains unset; a non-nil pointer applies it, and an empty string matches every available string.
- `NameRegex` (attribute) — NameRegex requires the stable tmux client name from Client.Name to match Go regular expression syntax. An empty string leaves NameRegex unset.
- `ReadOnly` (attribute) — ReadOnly exactly matches the materialized read-only state from Client.ReadOnly. A nil pointer leaves ReadOnly unset; a non-nil pointer applies it, including when it points to the zero value.
- `AnyOf` (attribute) — AnyOf additionally requires at least one branch to match after ordinary criteria match. A nil slice leaves AnyOf unset; a non-nil empty slice is invalid.
- `Not` (attribute) — Not excludes a candidate when its nested filter matches. A nil pointer leaves Not unset.
- `Session` (attribute) — Session traverses the materialized attachment returned by Client.AttachedSession. A nil pointer leaves the relation criterion unset.
- `Window` (attribute) — Window traverses the materialized attachment returned by Client.AttachedWindow. A nil pointer leaves the relation criterion unset.
- `Pane` (attribute) — Pane traverses the materialized attachment returned by Client.AttachedPane. A nil pointer leaves the relation criterion unset.
- `Validate` (method) — Validate checks structure, regular expressions, and contradictory criteria; failures wrap [ErrInvalidFilter].
- `MarshalJSON` (method) — MarshalJSON validates and encodes the client filter; failures wrap [ErrInvalidFilter].
- `Predicate` (method) — Predicate validates the client filter and returns a local predicate for [Client] values materialized by a [Snapshot]; it never runs tmux. It traverses only loaded relations and returns false for a nil candidate.
- `UnmarshalJSON` (method) — UnmarshalJSON clears the receiver, strictly decodes a client filter, then validates it. Unknown or duplicate fields, trailing data, and semantic failures wrap [ErrInvalidFilter]; the receiver may retain decoded state on error.
