# libtmux.Server.display_menu

- **Module:** libtmux.Server
- **Package:** libtmux
- **Language:** Python
- **Kind:** method
- **Source:** https://github.com/tmux-python/libtmux/blob/036c521c4b83ce6e434eb50afe2a0d08a6a05e46/src/libtmux/server.py#L1337
- **Page:** https://libtmux.org/reference/py/libtmux-server-display_menu/

```
libtmux.Server.display_menu(self, items: str, title: str | None = None, target_pane: str | None = None, target_client: str | None = None, x: int | str | None = None, y: int | str | None = None, starting_choice: int | str | None = None, border_lines: str | None = None, style: str | None = None, border_style: str | None = None, selected_style: str | None = None, mouse: bool | None = None, stay_open: bool | None = None) -> None
```

Display a popup menu via ``$ tmux display-menu``.

Requires a TTY-backed attached client. Control-mode clients have
``tty.sy=0``, which causes ``menu_prepare()`` to return NULL.
This method cannot be tested with
:class:`~libtmux._internal.control_mode.ControlMode`.

## Parameters

- `self`
- `items` (str)
- `title` (str | None) — Menu title (``-T`` flag).
- `target_pane` (str | None) — Target pane for format expansion (``-t`` flag).
- `target_client` (str | None) — Target client (``-c`` flag).
- `x` (int | str | None) — Menu x position (``-x`` flag).
- `y` (int | str | None) — Menu y position (``-y`` flag).
- `starting_choice` (int | str | None) — Pre-selected item index (``-C`` flag). Use ``-`` for none.
Requires tmux 3.4+.
- `border_lines` (str | None) — Border line style (``-b`` flag). Requires tmux 3.4+.
- `style` (str | None) — Menu style (``-s`` flag). Requires tmux 3.4+.
- `border_style` (str | None) — Border style (``-S`` flag). Requires tmux 3.4+.
- `selected_style` (str | None) — Style for the currently selected menu item (``-H`` flag).
Requires tmux 3.4+.
- `mouse` (bool | None) — Always enable mouse handling in the menu (``-M`` flag).
Requires tmux 3.5+.
- `stay_open` (bool | None) — Keep the menu open when the mouse is released (``-O`` flag).
Requires tmux 3.2+.

## Example

Cannot run end-to-end (requires a TTY-backed client; see the ``tty.sy=0`` note above). For broader coverage, see ``tests/test_server.py::test_display_menu_flags``.

```python
>>> captured = []
>>> def fake_cmd(name, *args, **_kw):
...     captured.append((name, args))
...     return type('R', (), {'stderr': [], 'stdout': []})()
>>> monkeypatch.setattr(server, 'cmd', fake_cmd)
>>> server.display_menu('First', '1', 'select-pane', title='menu')
>>> captured[0][0]
'display-menu'
```
