# libtmux.Server.display_menu

- **Module:** libtmux
- **Package:** libtmux
- **Language:** Python
- **Kind:** method
- **Source:** https://github.com/tmux-python/libtmux/blob/38e368c11117fb4aeb2f082d552cd4f210eae06a/src/libtmux/server.py#L1334
- **Page:** https://libtmux.org/en/py/stable/reference/libtmux-server-display_menu/

tmux command: [`display-menu`](/en/tmux/latest/manual/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`](/en/tmux/latest/manual/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`.

## Examples

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'
```

## Parameters

- `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+.

## In other ports

### Show a menu over a client

- Rust: [`server.Server.display_menu`](/en/rs/latest/reference/server-server-display_menu/) (method)
- Go: [`tmux.Server.DisplayMenu`](/en/go/latest/reference/tmux-server-displaymenu/) (method)
