# libtmux._internal.constants.Hooks.from_stdout

- **Module:** libtmux._internal.constants
- **Package:** libtmux
- **Language:** Python
- **Kind:** method
- **Source:** https://github.com/tmux-python/libtmux/blob/38e368c11117fb4aeb2f082d552cd4f210eae06a/src/libtmux/_internal/constants.py#L563
- **Page:** https://libtmux.org/en/py/stable/reference/libtmux-_internal-constants-hooks-from_stdout/

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

```
libtmux._internal.constants.Hooks.from_stdout(
    cls, value: list[str]
) -> Hooks
```

Parse raw tmux hook output into a Hooks instance.

The parsing pipeline:

1. ``parse_options_to_dict()`` - Parse "key value" lines into dict
2. ``explode_arrays(force_array=True)`` - Extract array indices into SparseArray
3. ``explode_complex()`` - Handle complex option types
4. Rename keys: [`session-renamed`](/en/tmux/latest/catalog/hooks/session-renamed/) → ``session_renamed``

## Examples

Basic parsing:

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

```python
>>> raw = ["session-renamed[0] display-message 'renamed'"]
>>> hooks = Hooks.from_stdout(raw)
>>> hooks.session_renamed[0]
"display-message 'renamed'"
```

The pipeline preserves sparse indices:

```python
>>> raw = [
...     "after-select-window[0] refresh-client",
...     "after-select-window[10] display-message 'selected'",
... ]
>>> hooks = Hooks.from_stdout(raw)
>>> sorted(hooks.after_select_window.keys())
[0, 10]
```

Empty input returns empty SparseArrays:

```python
>>> hooks_empty = Hooks.from_stdout([])
>>> len(hooks_empty.session_renamed)
0
>>> hooks_empty.session_renamed.as_list()
[]
```

## Parameters

- `value` (`list[str]`): Raw tmux output lines from ``show-hooks`` command.

## Returns

Hooks
    Parsed hooks with SparseArray fields for each hook type.
