# libtmux.Pane.split

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

tmux command: [`split-window`](/en/tmux/latest/manual/split-window/)

```
libtmux.Pane.split(
    self,
    target: int | str | None = None,
    start_directory: StrPath | None = None,
    attach: bool = False,
    direction: PaneDirection | None = None,
    full_window_split: bool | None = None,
    zoom: bool | None = None,
    shell: str | None = None,
    size: str | int | None = None,
    percentage: int | None = None,
    environment: dict[str, str] | None = None,
    empty: bool | None = None,
    style: str | None = None,
    active_border_style: str | None = None,
    inactive_border_style: str | None = None,
    message: str | None = None,
    keep: bool | None = None,
) -> Pane
```

Split window and return :class:`Pane`, by default beneath current pane.

## Examples

```python
>>> (pane.at_left, pane.at_right,
...  pane.at_top, pane.at_bottom)
(True, True,
True, True)
```

```python
>>> new_pane = pane.split()
```

```python
>>> (new_pane.at_left, new_pane.at_right,
...  new_pane.at_top, new_pane.at_bottom)
(True, True,
False, True)
```

```python
>>> right_pane = pane.split(direction=PaneDirection.Right)
```

```python
>>> (right_pane.at_left, right_pane.at_right,
...  right_pane.at_top, right_pane.at_bottom)
(False, True,
True, False)
```

```python
>>> left_pane = pane.split(direction=PaneDirection.Left)
```

```python
>>> (left_pane.at_left, left_pane.at_right,
...  left_pane.at_top, left_pane.at_bottom)
(True, False,
True, False)
```

```python
>>> top_pane = pane.split(direction=PaneDirection.Above)
```

```python
>>> (top_pane.at_left, top_pane.at_right,
...  top_pane.at_top, top_pane.at_bottom)
(False, False,
True, False)
```

```python
>>> pane = session.new_window().active_pane
```

```python
>>> top_pane = pane.split(direction=PaneDirection.Above, full_window_split=True)
```

```python
>>> (top_pane.at_left, top_pane.at_right,
...  top_pane.at_top, top_pane.at_bottom)
(True, True,
True, False)
```

```python
>>> bottom_pane = pane.split(
... direction=PaneDirection.Below,
... full_window_split=True)
```

```python
>>> (bottom_pane.at_left, bottom_pane.at_right,
...  bottom_pane.at_top, bottom_pane.at_bottom)
(True, True,
False, True)
```

## Parameters

- `target` (`int | str | None`): Optional, custom *target-pane*, used by :meth:`Window.split`.
- `start_directory` (`StrPath | None`): specifies the working directory in which the new window is created.
- `attach` (`bool`): make new window the current window after creating it, default
True.
- `direction` (`PaneDirection | None`): split in direction. If none is specified, assume down.
- `full_window_split` (`bool | None`): split across full window width or height, rather than active pane.
- `zoom` (`bool | None`): expand pane
- `shell` (`str | None`): execute a command on splitting the window.  The pane will close
when the command exits.
NOTE: When this command exits the pane will close.  This feature
is useful for long-running processes where the closing of the
window upon completion is desired.
- `size` (`str | int | None`): Cell/row count to occupy with respect to current window.
- `percentage` (`int | None`): Percentage (0-100) of the window to occupy (``-p`` flag).
Mutually exclusive with *size*. (added 0.56)
- `environment` (`dict[str, str] | None`): Environmental variables for new pane. Passthrough to ``-e``.
- `empty` (`bool | None`): Create an empty pane with no command (``-E`` flag) instead of
spawning the default shell. Requires tmux 3.7+. If used with
tmux < 3.7, a warning is issued and the flag is ignored.
- `style` (`str | None`): Style for the new pane (``-s``). Requires tmux 3.7+.
- `active_border_style` (`str | None`): Active-pane border style (``-S``). Requires tmux 3.7+.
- `inactive_border_style` (`str | None`): Inactive-pane border style (``-R``). Requires tmux 3.7+.
- `message` (`str | None`): Keep the pane open (until a key is pressed) after exit, showing this
``remain-on-exit-format`` message (``-m``). Requires tmux 3.7+.
- `keep` (`bool | None`): Keep the pane open until a key is pressed after exit (``-k``).
Requires tmux 3.7+. These 3.7 flags warn and are ignored below 3.7.

## In other ports

### Split a pane in two

- Ruby: [`LibTmux::Pane#split`](/en/ruby/latest/reference/libtmux-pane-split/) (method)
- Lua: [`libtmux.Pane:split`](/en/lua/latest/reference/libtmux-pane-split/) (method)
- TypeScript: [`pane.Pane.split`](/en/ts/latest/reference/pane-pane-split/) (method)
- Rust: [`pane.Pane.split`](/en/rs/latest/reference/pane-pane-split/) (method)
- Go: [`tmux.Pane.Split`](/en/go/latest/reference/tmux-pane-split/) (method)
- Java: [`io.github.libtmux.Pane.Pane.split`](/en/java/latest/reference/io-github-libtmux-pane-pane-split/) (method)
- C#: [`LibTmux.Pane.SplitAsync`](/en/csharp/latest/reference/libtmux-pane-splitasync/) (method)
- Swift: [`Server.split(_:direction:size:startDirectory:)`](/en/swift/latest/reference/server-split(_-direction-size-startdirectory-)/) (method)
- Kotlin: [`io.github.libtmux.kotlin.Pane.split`](/en/kotlin/latest/reference/io-github-libtmux-kotlin-pane-split/) (method)
- Scala: [`io.github.libtmux.scaladsl.Pane.split`](/en/scala/latest/reference/io-github-libtmux-scaladsl-pane-split/) (method)
