# libtmux._internal.constants.Hooks

- **Module:** libtmux._internal.constants
- **Package:** libtmux
- **Language:** Python
- **Kind:** class
- **Source:** https://github.com/tmux-python/libtmux/blob/38e368c11117fb4aeb2f082d552cd4f210eae06a/src/libtmux/_internal/constants.py#L296
- **Bases:** [`SkipDefaultFieldsReprMixin`](/en/py/stable/reference/libtmux-_internal-dataclasses-skipdefaultfieldsreprmixin/)
- **Page:** https://libtmux.org/en/py/stable/reference/libtmux-_internal-constants-hooks/

tmux catalog: [Hooks](/en/tmux/latest/catalog/hooks/)

tmux hooks data structure.

Parses tmux hook output into typed :class:`SparseArray` fields, preserving
array indices for hooks that can have multiple commands at different indices.

## Examples

Parse raw tmux hook output:

```python
>>> from libtmux._internal.constants import Hooks
```

```python
>>> raw = [
...     "session-renamed[0] set-option -g status-left-style bg=red",
...     "session-renamed[1] display-message 'session renamed'",
... ]
>>> hooks = Hooks.from_stdout(raw)
```

Access individual hook commands by index:

```python
>>> hooks.session_renamed[0]
'set-option -g status-left-style bg=red'
>>> hooks.session_renamed[1]
"display-message 'session renamed'"
```

Get all commands as a list (sorted by index):

```python
>>> hooks.session_renamed.as_list()
['set-option -g status-left-style bg=red', "display-message 'session renamed'"]
```

Sparse indices are preserved (gaps in index numbers):

```python
>>> raw_sparse = [
...     "pane-focus-in[0] refresh-client",
...     "pane-focus-in[5] display-message 'focus'",
... ]
>>> hooks_sparse = Hooks.from_stdout(raw_sparse)
>>> 0 in hooks_sparse.pane_focus_in
True
>>> 5 in hooks_sparse.pane_focus_in
True
>>> 3 in hooks_sparse.pane_focus_in
False
>>> sorted(hooks_sparse.pane_focus_in.keys())
[0, 5]
```

Iterate over values in index order:

```python
>>> for cmd in hooks_sparse.pane_focus_in.iter_values():
...     print(cmd)
refresh-client
display-message 'focus'
```

Multiple hook types in one parse:

```python
>>> raw_multi = [
...     "after-new-window[0] select-pane -t 0",
...     "after-new-window[1] send-keys 'clear' Enter",
...     "window-renamed[0] refresh-client -S",
... ]
>>> hooks_multi = Hooks.from_stdout(raw_multi)
>>> len(hooks_multi.after_new_window)
2
>>> len(hooks_multi.window_renamed)
1
```

## Members

### Common operations

- [`from_stdout`](/en/py/stable/reference/libtmux-_internal-constants-hooks-from_stdout/) (method): Parse raw tmux hook output into a Hooks instance.

### Other members

- [`after_bind_key`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_bind_key/) (attribute)
- [`after_capture_pane`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_capture_pane/) (attribute)
- [`after_copy_mode`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_copy_mode/) (attribute)
- [`after_display_message`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_display_message/) (attribute)
- [`after_display_panes`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_display_panes/) (attribute)
- [`after_kill_pane`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_kill_pane/) (attribute)
- [`after_list_buffers`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_list_buffers/) (attribute)
- [`after_list_clients`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_list_clients/) (attribute)
- [`after_list_keys`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_list_keys/) (attribute)
- [`after_list_panes`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_list_panes/) (attribute)
- [`after_list_sessions`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_list_sessions/) (attribute)
- [`after_list_windows`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_list_windows/) (attribute)
- [`after_load_buffer`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_load_buffer/) (attribute)
- [`after_lock_server`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_lock_server/) (attribute)
- [`after_new_session`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_new_session/) (attribute)
- [`after_new_window`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_new_window/) (attribute)
- [`after_paste_buffer`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_paste_buffer/) (attribute)
- [`after_pipe_pane`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_pipe_pane/) (attribute)
- [`after_queue`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_queue/) (attribute)
- [`after_refresh_client`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_refresh_client/) (attribute)
- [`after_rename_session`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_rename_session/) (attribute)
- [`after_rename_window`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_rename_window/) (attribute)
- [`after_resize_pane`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_resize_pane/) (attribute)
- [`after_resize_window`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_resize_window/) (attribute)
- [`after_save_buffer`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_save_buffer/) (attribute)
- [`after_select_layout`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_select_layout/) (attribute)
- [`after_select_pane`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_select_pane/) (attribute)
- [`after_select_window`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_select_window/) (attribute)
- [`after_send_keys`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_send_keys/) (attribute)
- [`after_set_buffer`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_set_buffer/) (attribute)
- [`after_set_environment`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_set_environment/) (attribute)
- [`after_set_hook`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_set_hook/) (attribute)
- [`after_set_option`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_set_option/) (attribute)
- [`after_show_environment`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_show_environment/) (attribute)
- [`after_show_messages`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_show_messages/) (attribute)
- [`after_show_options`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_show_options/) (attribute)
- [`after_split_window`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_split_window/) (attribute)
- [`after_unbind_key`](/en/py/stable/reference/libtmux-_internal-constants-hooks-after_unbind_key/) (attribute)
- [`alert_activity`](/en/py/stable/reference/libtmux-_internal-constants-hooks-alert_activity/) (attribute)
- [`alert_bell`](/en/py/stable/reference/libtmux-_internal-constants-hooks-alert_bell/) (attribute)
- [`alert_silence`](/en/py/stable/reference/libtmux-_internal-constants-hooks-alert_silence/) (attribute)
- [`client_active`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_active/) (attribute)
- [`client_attached`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_attached/) (attribute)
- [`client_dark_theme`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_dark_theme/) (attribute)
- [`client_detached`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_detached/) (attribute)
- [`client_detached_control`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_detached_control/) (attribute)
- [`client_focus_in`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_focus_in/) (attribute)
- [`client_focus_out`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_focus_out/) (attribute)
- [`client_light_theme`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_light_theme/) (attribute)
- [`client_resized`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_resized/) (attribute)
- [`client_session_changed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_session_changed/) (attribute)
- [`client_session_changed_control`](/en/py/stable/reference/libtmux-_internal-constants-hooks-client_session_changed_control/) (attribute)
- [`command_error`](/en/py/stable/reference/libtmux-_internal-constants-hooks-command_error/) (attribute)
- [`config_error`](/en/py/stable/reference/libtmux-_internal-constants-hooks-config_error/) (attribute)
- [`continue_control`](/en/py/stable/reference/libtmux-_internal-constants-hooks-continue_control/) (attribute)
- [`exit_control`](/en/py/stable/reference/libtmux-_internal-constants-hooks-exit_control/) (attribute)
- [`extended_output`](/en/py/stable/reference/libtmux-_internal-constants-hooks-extended_output/) (attribute)
- [`layout_change`](/en/py/stable/reference/libtmux-_internal-constants-hooks-layout_change/) (attribute)
- [`message_control`](/en/py/stable/reference/libtmux-_internal-constants-hooks-message_control/) (attribute)
- [`output`](/en/py/stable/reference/libtmux-_internal-constants-hooks-output/) (attribute)
- [`pane_died`](/en/py/stable/reference/libtmux-_internal-constants-hooks-pane_died/) (attribute)
- [`pane_exited`](/en/py/stable/reference/libtmux-_internal-constants-hooks-pane_exited/) (attribute)
- [`pane_focus_in`](/en/py/stable/reference/libtmux-_internal-constants-hooks-pane_focus_in/) (attribute)
- [`pane_focus_out`](/en/py/stable/reference/libtmux-_internal-constants-hooks-pane_focus_out/) (attribute)
- [`pane_mode_changed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-pane_mode_changed/) (attribute)
- [`pane_set_clipboard`](/en/py/stable/reference/libtmux-_internal-constants-hooks-pane_set_clipboard/) (attribute)
- [`pane_title_changed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-pane_title_changed/) (attribute)
- [`paste_buffer_changed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-paste_buffer_changed/) (attribute)
- [`paste_buffer_deleted`](/en/py/stable/reference/libtmux-_internal-constants-hooks-paste_buffer_deleted/) (attribute)
- [`pause_control`](/en/py/stable/reference/libtmux-_internal-constants-hooks-pause_control/) (attribute)
- [`session_changed_control`](/en/py/stable/reference/libtmux-_internal-constants-hooks-session_changed_control/) (attribute)
- [`session_closed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-session_closed/) (attribute)
- [`session_created`](/en/py/stable/reference/libtmux-_internal-constants-hooks-session_created/) (attribute)
- [`session_renamed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-session_renamed/) (attribute)
- [`session_renamed_control`](/en/py/stable/reference/libtmux-_internal-constants-hooks-session_renamed_control/) (attribute)
- [`session_window_changed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-session_window_changed/) (attribute)
- [`sessions_changed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-sessions_changed/) (attribute)
- [`subscription_changed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-subscription_changed/) (attribute)
- [`unlinked_window_add`](/en/py/stable/reference/libtmux-_internal-constants-hooks-unlinked_window_add/) (attribute)
- [`unlinked_window_close`](/en/py/stable/reference/libtmux-_internal-constants-hooks-unlinked_window_close/) (attribute)
- [`unlinked_window_renamed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-unlinked_window_renamed/) (attribute)
- [`window_add`](/en/py/stable/reference/libtmux-_internal-constants-hooks-window_add/) (attribute)
- [`window_close`](/en/py/stable/reference/libtmux-_internal-constants-hooks-window_close/) (attribute)
- [`window_layout_changed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-window_layout_changed/) (attribute)
- [`window_linked`](/en/py/stable/reference/libtmux-_internal-constants-hooks-window_linked/) (attribute)
- [`window_pane_changed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-window_pane_changed/) (attribute)
- [`window_renamed`](/en/py/stable/reference/libtmux-_internal-constants-hooks-window_renamed/) (attribute)
- [`window_renamed_control`](/en/py/stable/reference/libtmux-_internal-constants-hooks-window_renamed_control/) (attribute)
- [`window_resized`](/en/py/stable/reference/libtmux-_internal-constants-hooks-window_resized/) (attribute)
- [`window_unlinked`](/en/py/stable/reference/libtmux-_internal-constants-hooks-window_unlinked/) (attribute)

## Inherited members

- [`__repr__`](/en/py/stable/reference/libtmux-_internal-constants-hooks-__repr__/) (method), inherited from `libtmux._internal.dataclasses.SkipDefaultFieldsReprMixin`: Omit default fields in object representation.
