class libtmux.Window(session=None, **kwargs)

Bases: libtmux.common.TmuxMappingObject, libtmux.common.TmuxRelationalObject

A tmux(1) window [1].

Holds Pane objects.

Parameters:session (Session) –


tmux window. openbsd manpage for TMUX(1).
“Each session has one or more windows linked to it. A window occupies the entire screen and may be split into rectangular panes…” Accessed April 1st, 2018.

child_id_attribute = u'pane_id'

unique child ID key for TmuxRelationalObject

formatter_prefix = u'window_'

namespace used TmuxMappingObject

cmd(cmd, *args, **kwargs)

Return Server.cmd() defaulting target_window as target.

Send command to tmux with window_id as target-window.

Specifying ('-t', 'custom-target') or ('-tcustom_target') in args will override using the object’s window_id as target.

Return type:Server.cmd


Changed in version 0.8: Renamed from .tmux to .cmd.


Wrapper for $ tmux select-layout <layout>.

Parameters:layout (str, optional) –

string of the layout, ‘even-horizontal’, ‘tiled’, etc. Entering None (leaving this blank) is same as select-layout with no layout. In recent tmux versions, it picks the most recently set layout.

Panes are spread out evenly from left to right across the window.
Panes are spread evenly from top to bottom.
A large (main) pane is shown at the top of the window and the remaining panes are spread from left to right in the leftover space at the bottom.
Similar to main-horizontal but the large pane is placed on the left and the others spread from top to bottom along the right.
Panes are spread out as evenly as possible over the window in both rows and columns.
custom dimensions (see tmux(1) manpages).
set_window_option(option, value)

Wrapper for $ tmux set-window-option <option> <value>.

  • option (str) – option to set, e.g. ‘aggressive-resize’
  • value (str) – window option value. True/False will turn in ‘on’ and ‘off’, also accepts string of ‘on’ or ‘off’ directly.
show_window_options(option=None, g=False)

Return a dict of options for the window.

For familiarity with tmux, the option option param forwards to pick a single option, forwarding to Window.show_window_option().

  • option (str, optional) – show a single option.
  • g (str, optional) – Pass -g flag for global variable, default False.

Return type:


show_window_option(option, g=False)

Return a list of options for the window.

todo: test and return True/False for on/off string

  • option (str) –
  • g (bool, optional) – Pass -g flag, global. Default False.

Return type:

str, int


Return Window object $ tmux rename-window <new_name>.

Parameters:new_name (str) – name of the window

Kill the current Window object. $ tmux kill-window.

move_window(destination=u'', session=None)

Move the current Window object $ tmux move-window.

  • destination (str, optional) – the target window or index to move the window to, default: empty string
  • session (str, optional) – the target session or index to move the window to, default: current session.

Select window. Return self.

To select a window object asynchrously. If a window object exists and is no longer longer the current window, w.select_window() will make w the current window.

Return type:Window

Return selected Pane through $ tmux select-pane.

Parameters:target_pane (str) – ‘target_pane’, ‘-U’ ,’-D’, ‘-L’, ‘-R’, or ‘-l’.
Return type:Pane

Return last pane.

split_window(target=None, start_directory=None, attach=True, vertical=True, shell=None)

Split window and return the created Pane.

Used for splitting window and holding in a python object.

  • attach (bool, optional) – make new window the current window after creating it, default True.
  • start_directory (str, optional) – specifies the working directory in which the new window is created.
  • target (str) – target_pane to split.
  • vertical (str) – split vertically
  • shell (str, optional) –

    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.


Return type:



tmux(1) will move window to the new pane if the split-window target is off screen. tmux handles the -d the same way as new-window and attach in Session.new_window.

By default, this will make the window the pane is created in active. To remain on the same window and split the pane in another target window, pass in attach=False.


Return the attached Pane.

Return type:Pane

Property / alias to return _list_panes().


Return list of Pane for the window.

Return type:list of Pane

Property / alias to return list_panes().


Alias panes for TmuxRelationalObject

clear() → None. Remove all items from D.

Return object on first match.

Changed in version 0.4: Renamed from .findWhere to .find_where.

get(k[, d]) → D[k] if k in D, else d. d defaults to None.

Return object based on child_id_attribute.

Parameters:val (str) –
Return type:object


Based on .get() from backbone.js.

items() → list of D's (key, value) pairs, as 2-tuples
iteritems() → an iterator over the (key, value) items of D
iterkeys() → an iterator over the keys of D
itervalues() → an iterator over the values of D

Return list of keys.

pop(k[, d]) → v, remove specified key and return the corresponding value.

If key is not found, d is returned if given, otherwise KeyError is raised.

popitem() → (k, v), remove and return some (key, value) pair

as a 2-tuple; but raise KeyError if D is empty.

setdefault(k[, d]) → D.get(k,d), also set D[k]=d if k not in D
update([E, ]**F) → None. Update D from mapping/iterable E and F.

If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v

values() → list of D's values
where(attrs, first=False)

Return objects matching child objects properties.

Parameters:attrs (dict) – tmux properties to match values of
Return type:list