# libtmux.Session.new_window

- **Module:** libtmux.Session
- **Package:** libtmux
- **Language:** Python
- **Kind:** method
- **Source:** https://github.com/tmux-python/libtmux/blob/036c521c4b83ce6e434eb50afe2a0d08a6a05e46/src/libtmux/session.py#L794
- **Page:** https://libtmux.org/reference/py/libtmux-session-new_window/

```
libtmux.Session.new_window(self, window_name: str | None = None, start_directory: StrPath | None = None, attach: bool = False, window_index: str = "", window_shell: str | None = None, environment: dict[str, str] | None = None, direction: WindowDirection | None = None, target_window: str | None = None, kill_existing: bool | None = None, select_existing: bool | None = None) -> Window
```

Create new window, returns new :class:`Window`.

By default, this will make the window active. For the new window
to be created and not set to current, pass in ``attach=False``.

## Parameters

- `self`
- `window_name` (str | None)
- `start_directory` (StrPath | None) — working directory in which the new window is created.
- `attach` (bool) — make new window the current window after creating it, default True.
- `window_index` (str) — create the new window at the given index position. Default is empty
string which will create the window in the next available position.
- `window_shell` (str | None) — execute a command on starting the window.  The window will close
when the command exits.
When this command exits the window will close.  This feature is
useful for long-running processes where the closing of the
window upon completion is desired. Note:
- `environment` (dict[str, str] | None)
- `direction` (WindowDirection | None) — Insert window before or after target window.
- `target_window` (str | None) — Used by :meth:`Window.new_window` to specify the target window.
- `kill_existing` (bool | None) — Destroy the window at the target index if it already exists
(``-k`` flag).
- `select_existing` (bool | None) — If a window with the given name already exists, select it instead
of creating a new one (``-S`` flag).

## Returns

:class:`Window`
    The newly created window.

## Example

```python
>>> window_initial = session.new_window(window_name='Example')
>>> window_initial
Window(@... 2:Example, Session($1 libtmux_...))
>>> window_initial.window_index
'2'
```

## Example

```python
>>> window_before = session.new_window(
... window_name='Window before', direction=WindowDirection.Before)
>>> window_initial.refresh()
>>> window_before
Window(@... 1:Window before, Session($1 libtmux_...))
>>> window_initial
Window(@... 3:Example, Session($1 libtmux_...))
```

## Example

```python
>>> window_after = session.new_window(
... window_name='Window after', direction=WindowDirection.After)
>>> window_initial.refresh()
>>> window_after.refresh()
>>> window_after
Window(@... 3:Window after, Session($1 libtmux_...))
>>> window_initial
Window(@... 4:Example, Session($1 libtmux_...))
>>> window_before
Window(@... 1:Window before, Session($1 libtmux_...))
```
