Sessions

class libtmux.Session[source]

Bases: Obj, EnvironmentMixin, OptionsMixin, HooksMixin

tmux(1) Session [session_manual].

Holds Window objects.

Parameters:

server (Server)

Examples

>>> session
Session($1 ...)
>>> session.windows
[Window(@1 ...:..., Session($1 ...)]
>>> session.active_window
Window(@1 ...:..., Session($1 ...))
>>> session.active_pane
Pane(%1 Window(@1 ...:..., Session($1 ...)))

The session can be used as a context manager to ensure proper cleanup:

>>> with server.new_session() as session:
...     window = session.new_window()
...     # Do work with the window
...     # Session will be killed automatically when exiting the context

References

[session_manual]
tmux session. openbsd manpage for TMUX(1).

“When tmux is started it creates a new session with a single window and displays it on screen…”

“A session is a single collection of pseudo terminals under the management of tmux. Each session has one or more windows linked to it.”

https://man.openbsd.org/tmux.1#DESCRIPTION. Accessed April 1st, 2018.

When not a user (custom) option, scope can be implied.

refresh()[source]

Refresh session attributes from tmux.

Return type:

None

classmethod from_session_id(server, session_id)[source]

Create Session from existing session_id.

Return type:

Session

Parameters:
property windows: QueryList[Window]

Windows contained by session.

Can be accessed via .windows.get() and .windows.filter()

property panes: QueryList[Pane]

Panes contained by session’s windows.

Can be accessed via .panes.get() and .panes.filter()

cmd(cmd, *args, target=None)[source]

Execute tmux subcommand within session context.

Automatically binds target by adding -t for object’s session ID to the command. Pass target to keyword arguments to override.

Return type:

tmux_cmd

Parameters:

Examples

>>> session.cmd('new-window', '-P').stdout[0]
'libtmux...:....0'

From raw output to an enriched Window object:

>>> Window.from_window_id(window_id=session.cmd(
... 'new-window', '-P', '-F#{window_id}').stdout[0], server=session.server)
Window(@... ...:..., Session($1 libtmux_...))
Parameters:
  • target (str, optional) – Optional custom target override. By default, the target is the session ID.

  • cmd (str)

  • args (Any)

Return type:

server.cmd()

Notes

Changed in version 0.34: Passing target by -t is ignored. Use target keyword argument instead.

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

select_window(target_window)[source]

Select window and return the selected window.

Return type:

Window

Parameters:
  • window (str) – target_window can also be ‘last-window’ (-l), ‘next-window’ (-n), or ‘previous-window’ (-p)

  • target_window (str | int)

Return type:

Window

Notes

property active_pane: Pane | None

Return the active Pane object.

property active_window: Window

Return the active Window object.

attach(exit_=None, flags_=None)[source]

Return $ tmux attach-session aka alias: $ tmux attach.

Return type:

Session

Parameters:

Examples

>>> session = server.new_session()
>>> session not in server.attached_sessions
True
kill(all_except=None, clear=None)[source]

Kill Session, closes linked windows and detach all clients.

$ tmux kill-session.

Return type:

None

Parameters:
  • all_except (bool, optional) – Kill all sessions in server except this one.

  • clear (bool, optional) – Clear alerts (bell, activity, or silence) in all windows.

Examples

Kill a session:

>>> session_1 = server.new_session()
>>> session_1 in server.sessions
True
>>> session_1.kill()
>>> session_1 not in server.sessions
True

Kill all sessions except the current one:

>>> one_session_to_rule_them_all = server.new_session()
>>> other_sessions = server.new_session(
...     ), server.new_session()
>>> all([w in server.sessions for w in other_sessions])
True
>>> one_session_to_rule_them_all.kill(all_except=True)
>>> all([w not in server.sessions for w in other_sessions])
True
>>> one_session_to_rule_them_all in server.sessions
True
switch_client()[source]

Switch client to session.

Return type:

Session

Raises:

exc.LibTmuxException

rename_session(new_name)[source]

Rename session and return new Session object.

Return type:

Session

Parameters:

new_name (str) – new session name

Raises:

exc.BadSessionName

new_window(window_name=None, *, start_directory=None, attach=False, window_index='', window_shell=None, environment=None, direction=None, target_window=None)[source]

Create new window, returns new 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.

Return type:

Window

Parameters:
  • window_name (str, optional)

  • start_directory (str, optional) – working directory in which the new window is created.

  • attach (bool, optional) – 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, optional) –

    execute a command on starting the window. The window will close when the command exits.

    Note

    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.

  • direction (WindowDirection, optional) – Insert window before or after target window.

  • target_window (str, optional) – Used by Window.new_window() to specify the target window.

  • versionchanged: (..) – 0.28.0: attach default changed from True to False.

  • environment (dict[str, str] | None)

Examples

>>> window_initial = session.new_window(window_name='Example')
>>> window_initial
Window(@... 2:Example, Session($1 libtmux_...))
>>> window_initial.window_index
'2'
>>> 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_...))
>>> 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_...))
Returns:

The newly created window.

Return type:

Window

Parameters:
  • window_name (str | None)

  • start_directory (StrPath | None)

  • attach (bool)

  • window_index (str)

  • window_shell (str | None)

  • environment (dict[str, str] | None)

  • direction (WindowDirection | None)

  • target_window (str | None)

kill_window(target_window=None)[source]

Close a tmux window, and all panes inside it, $ tmux kill-window.

Kill the current window or the window at target-window. removing it from any sessions to which it is linked.

Return type:

None

Parameters:

target_window (str, optional) – Window to kill.

Raises:

libtmux.exc.LibTmuxException – If tmux returns an error.

property id: str | None

Alias of Session.session_id.

>>> session.id
'$1'
>>> session.id == session.session_id
True
property name: str | None

Alias of Session.session_name.

>>> session.name
'libtmux_...'
>>> session.name == session.session_name
True
property attached_pane: Pane | None

Return the active Pane object.

Notes

Deprecated since version 0.31: Deprecated in favor of active_pane().

property attached_window: Window

Return the active Window object.

Notes

Deprecated since version 0.31: Deprecated in favor of active_window().

attach_session()[source]

Return $ tmux attach-session aka alias: $ tmux attach.

Return type:

Session

Notes

Deprecated since version 0.30: Deprecated in favor of attach().

kill_session()[source]

Destroy session.

Return type:

None

Notes

Deprecated since version 0.30: Deprecated in favor of kill().

get(key, default=None)[source]

Return key-based lookup. Deprecated by attributes.

Deprecated since version 0.17: Deprecated by attribute lookup.e.g. session['session_name'] is now accessed via session.session_name.

Return type:

Any

Parameters:
  • key (str)

  • default (Any | None)

get_by_id(session_id)[source]

Return window by id. Deprecated in favor of windows.get().

Deprecated since version 0.16: Deprecated by windows.get().

Return type:

Window | None

Parameters:

session_id (str)

where(kwargs)[source]

Filter through windows, return list of Window.

Deprecated since version 0.17: Deprecated by windows.filter().

Return type:

list[Window]

Parameters:

kwargs (dict[str, Any])

find_where(kwargs)[source]

Filter through windows, return first Window.

Deprecated since version 0.17: Slated to be removed in favor of windows.get().

Return type:

Window | None

Parameters:

kwargs (dict[str, Any])

_list_windows()[source]

Return list of windows (deprecated in favor of windows).

Deprecated since version 0.17: Slated to be removed in favor of windows.

Return type:

list[dict[str, Any]]

property _windows: list[dict[str, Any]]

Property / alias to return Session._list_windows().

Deprecated since version 0.17: Slated to be removed in favor of windows.

__init__(server, active_window_index=None, alternate_saved_x=None, alternate_saved_y=None, buffer_name=None, buffer_sample=None, buffer_size=None, client_cell_height=None, client_cell_width=None, client_discarded=None, client_flags=None, client_height=None, client_key_table=None, client_name=None, client_pid=None, client_termname=None, client_tty=None, client_uid=None, client_user=None, client_width=None, client_written=None, command_list_alias=None, command_list_name=None, command_list_usage=None, config_files=None, copy_cursor_line=None, copy_cursor_word=None, copy_cursor_x=None, copy_cursor_y=None, current_file=None, cursor_character=None, cursor_flag=None, cursor_x=None, cursor_y=None, history_bytes=None, history_limit=None, history_size=None, insert_flag=None, keypad_cursor_flag=None, keypad_flag=None, last_window_index=None, line=None, mouse_all_flag=None, mouse_any_flag=None, mouse_button_flag=None, mouse_sgr_flag=None, mouse_standard_flag=None, next_session_id=None, origin_flag=None, pane_active=None, pane_at_bottom=None, pane_at_left=None, pane_at_right=None, pane_at_top=None, pane_bg=None, pane_bottom=None, pane_current_command=None, pane_current_path=None, pane_dead_signal=None, pane_dead_status=None, pane_dead_time=None, pane_fg=None, pane_height=None, pane_id=None, pane_index=None, pane_left=None, pane_pid=None, pane_right=None, pane_search_string=None, pane_start_command=None, pane_start_path=None, pane_tabs=None, pane_top=None, pane_tty=None, pane_width=None, pid=None, scroll_position=None, scroll_region_lower=None, scroll_region_upper=None, search_match=None, selection_end_x=None, selection_end_y=None, selection_start_x=None, selection_start_y=None, session_activity=None, session_alerts=None, session_attached=None, session_attached_list=None, session_created=None, session_group=None, session_group_attached=None, session_group_list=None, session_group_size=None, session_id=None, session_last_attached=None, session_name=None, session_path=None, session_stack=None, session_windows=None, socket_path=None, start_time=None, uid=None, user=None, version=None, window_active=None, window_active_clients=None, window_active_sessions=None, window_activity=None, window_cell_height=None, window_cell_width=None, window_height=None, window_id=None, window_index=None, window_layout=None, window_linked=None, window_linked_sessions=None, window_linked_sessions_list=None, window_marked_flag=None, window_name=None, window_offset_x=None, window_offset_y=None, window_panes=None, window_raw_flags=None, window_stack_index=None, window_width=None, wrap_flag=None, default_option_scope=None, default_hook_scope=None)[source]

When not a user (custom) option, scope can be implied.

Parameters:
  • server (Server)

  • active_window_index (str | None)

  • alternate_saved_x (str | None)

  • alternate_saved_y (str | None)

  • buffer_name (str | None)

  • buffer_sample (str | None)

  • buffer_size (str | None)

  • client_cell_height (str | None)

  • client_cell_width (str | None)

  • client_discarded (str | None)

  • client_flags (str | None)

  • client_height (str | None)

  • client_key_table (str | None)

  • client_name (str | None)

  • client_pid (str | None)

  • client_termname (str | None)

  • client_tty (str | None)

  • client_uid (str | None)

  • client_user (str | None)

  • client_width (str | None)

  • client_written (str | None)

  • command_list_alias (str | None)

  • command_list_name (str | None)

  • command_list_usage (str | None)

  • config_files (str | None)

  • copy_cursor_line (str | None)

  • copy_cursor_word (str | None)

  • copy_cursor_x (str | None)

  • copy_cursor_y (str | None)

  • current_file (str | None)

  • cursor_character (str | None)

  • cursor_flag (str | None)

  • cursor_x (str | None)

  • cursor_y (str | None)

  • history_bytes (str | None)

  • history_limit (str | None)

  • history_size (str | None)

  • insert_flag (str | None)

  • keypad_cursor_flag (str | None)

  • keypad_flag (str | None)

  • last_window_index (str | None)

  • line (str | None)

  • mouse_all_flag (str | None)

  • mouse_any_flag (str | None)

  • mouse_button_flag (str | None)

  • mouse_sgr_flag (str | None)

  • mouse_standard_flag (str | None)

  • next_session_id (str | None)

  • origin_flag (str | None)

  • pane_active (str | None)

  • pane_at_bottom (str | None)

  • pane_at_left (str | None)

  • pane_at_right (str | None)

  • pane_at_top (str | None)

  • pane_bg (str | None)

  • pane_bottom (str | None)

  • pane_current_command (str | None)

  • pane_current_path (str | None)

  • pane_dead_signal (str | None)

  • pane_dead_status (str | None)

  • pane_dead_time (str | None)

  • pane_fg (str | None)

  • pane_height (str | None)

  • pane_id (str | None)

  • pane_index (str | None)

  • pane_left (str | None)

  • pane_pid (str | None)

  • pane_right (str | None)

  • pane_search_string (str | None)

  • pane_start_command (str | None)

  • pane_start_path (str | None)

  • pane_tabs (str | None)

  • pane_top (str | None)

  • pane_tty (str | None)

  • pane_width (str | None)

  • pid (str | None)

  • scroll_position (str | None)

  • scroll_region_lower (str | None)

  • scroll_region_upper (str | None)

  • search_match (str | None)

  • selection_end_x (str | None)

  • selection_end_y (str | None)

  • selection_start_x (str | None)

  • selection_start_y (str | None)

  • session_activity (str | None)

  • session_alerts (str | None)

  • session_attached (str | None)

  • session_attached_list (str | None)

  • session_created (str | None)

  • session_group (str | None)

  • session_group_attached (str | None)

  • session_group_list (str | None)

  • session_group_size (str | None)

  • session_id (str | None)

  • session_last_attached (str | None)

  • session_name (str | None)

  • session_path (str | None)

  • session_stack (str | None)

  • session_windows (str | None)

  • socket_path (str | None)

  • start_time (str | None)

  • uid (str | None)

  • user (str | None)

  • version (str | None)

  • window_active (str | None)

  • window_active_clients (str | None)

  • window_active_sessions (str | None)

  • window_activity (str | None)

  • window_cell_height (str | None)

  • window_cell_width (str | None)

  • window_height (str | None)

  • window_id (str | None)

  • window_index (str | None)

  • window_layout (str | None)

  • window_linked (str | None)

  • window_linked_sessions (str | None)

  • window_linked_sessions_list (str | None)

  • window_marked_flag (str | None)

  • window_name (str | None)

  • window_offset_x (str | None)

  • window_offset_y (str | None)

  • window_panes (str | None)

  • window_raw_flags (str | None)

  • window_stack_index (str | None)

  • window_width (str | None)

  • wrap_flag (str | None)

  • default_option_scope (OptionScope | None)

  • default_hook_scope (OptionScope | None)

Return type:

None

_show_hook(hook, global_=False, scope=<libtmux.constants._DefaultOptionScope object>)[source]

Return value for the hook.

Return type:

list[str] | None

Parameters:
Raises:
_show_option(option, global_=False, g=False, scope=<libtmux.constants._DefaultOptionScope object>, ignore_errors=None, include_hooks=None, include_inherited=None)[source]

Return option value for the target.

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

Return type:

str | int | bool | None

Parameters:
  • option (str)

  • g (bool, optional) –

    Deprecated since version 0.50.0: Use global_ instead.

  • global_ (bool)

  • scope (OptionScope | _DefaultOptionScope | None)

  • ignore_errors (bool | None)

  • include_hooks (bool | None)

  • include_inherited (bool | None)

Raises:

Examples

>>> import typing as t
>>> from libtmux.common import tmux_cmd
>>> from libtmux.constants import OptionScope
>>> class MyServer(OptionsMixin):
...     socket_name = server.socket_name
...     def cmd(self, cmd: str, *args: object):
...         cmd_args: t.List[t.Union[str, int]] = [cmd]
...         if self.socket_name:
...             cmd_args.insert(0, f"-L{self.socket_name}")
...         cmd_args.insert(0, "-f/dev/null")
...         return tmux_cmd(*cmd_args, *args)
...
...     default_option_scope = OptionScope.Server
>>> MyServer().cmd('new-session', '-d')
<libtmux.common.tmux_cmd object at ...>
>>> MyServer()._show_option('exit-unattached', global_=True)
False
_show_option_raw(option, global_=False, g=False, scope=<libtmux.constants._DefaultOptionScope object>, ignore_errors=None, include_hooks=None, include_inherited=None)[source]

Return raw option output for target.

Return type:

tmux_cmd

Parameters:
  • option (str)

  • g (bool, optional) –

    Deprecated since version 0.50.0: Use global_ instead.

  • global_ (bool)

  • scope (OptionScope | _DefaultOptionScope | None)

  • ignore_errors (bool | None)

  • include_hooks (bool | None)

  • include_inherited (bool | None)

Raises:

Examples

>>> import typing as t
>>> from libtmux.common import tmux_cmd
>>> from libtmux.constants import OptionScope
>>> class MyServer(OptionsMixin):
...     socket_name = server.socket_name
...     def cmd(self, cmd: str, *args: object):
...         cmd_args: t.List[t.Union[str, int]] = [cmd]
...         if self.socket_name:
...             cmd_args.insert(0, f"-L{self.socket_name}")
...         cmd_args.insert(0, "-f/dev/null")
...         return tmux_cmd(*cmd_args, *args)
...
...     default_option_scope = OptionScope.Server
>>> MyServer().cmd('new-session', '-d')
<libtmux.common.tmux_cmd object at ...>
>>> MyServer()._show_option_raw('exit-unattached', global_=True)
<libtmux.common.tmux_cmd object at ...>
>>> MyServer()._show_option_raw('exit-unattached', global_=True).stdout
['exit-unattached off']
>>> isinstance(MyServer()._show_option_raw('exit-unattached', global_=True).stdout, list)
True
>>> isinstance(MyServer()._show_option_raw('exit-unattached', global_=True).stdout[0], str)
True
_show_options(g=False, global_=False, scope=<libtmux.constants._DefaultOptionScope object>, include_hooks=None, include_inherited=None)[source]

Return a dict of options for the target.

Return type:

dict[str, str | int | list[str | int] | dict[str, list[str | int]] | SparseArray[str | int] | None]

Parameters:
  • g (bool, optional) –

    Deprecated since version 0.50.0: Use global_ instead.

  • global_ (bool | None)

  • scope (OptionScope | _DefaultOptionScope | None)

  • include_hooks (bool | None)

  • include_inherited (bool | None)

Examples

>>> import typing as t
>>> from libtmux.common import tmux_cmd
>>> from libtmux.constants import OptionScope
>>> class MyServer(OptionsMixin):
...     socket_name = server.socket_name
...     def cmd(self, cmd: str, *args: object):
...         cmd_args: t.List[t.Union[str, int]] = [cmd]
...         if self.socket_name:
...             cmd_args.insert(0, f"-L{self.socket_name}")
...         cmd_args.insert(0, "-f/dev/null")
...         return tmux_cmd(*cmd_args, *args)
...
...     default_option_scope = OptionScope.Server
>>> MyServer()._show_options()
{...}
_show_options_dict(g=False, global_=False, scope=<libtmux.constants._DefaultOptionScope object>, include_hooks=None, include_inherited=None)[source]

Return dict of options for the target.

Return type:

dict[str, str | None]

Parameters:
  • g (bool, optional) –

    Deprecated since version 0.50.0: Use global_ instead.

  • global_ (bool | None)

  • scope (OptionScope | _DefaultOptionScope | None)

  • include_hooks (bool | None)

  • include_inherited (bool | None)

Examples

>>> import typing as t
>>> from libtmux.common import tmux_cmd
>>> from libtmux.constants import OptionScope
>>> class MyServer(OptionsMixin):
...     socket_name = server.socket_name
...     def cmd(self, cmd: str, *args: object):
...         cmd_args: t.List[t.Union[str, int]] = [cmd]
...         if self.socket_name:
...             cmd_args.insert(0, f"-L{self.socket_name}")
...         cmd_args.insert(0, "-f/dev/null")
...         return tmux_cmd(*cmd_args, *args)
...
...     default_option_scope = OptionScope.Server
>>> MyServer()._show_options_dict()
{...}
>>> isinstance(MyServer()._show_options_dict(), dict)
True
_show_options_raw(g=False, global_=False, scope=<libtmux.constants._DefaultOptionScope object>, include_hooks=None, include_inherited=None)[source]

Return a dict of options for the target.

Return type:

tmux_cmd

Parameters:
  • g (bool, optional) –

    Deprecated since version 0.50.0: Use global_ instead.

  • global_ (bool | None)

  • scope (OptionScope | _DefaultOptionScope | None)

  • include_hooks (bool | None)

  • include_inherited (bool | None)

Examples

>>> import typing as t
>>> from libtmux.common import tmux_cmd
>>> from libtmux.constants import OptionScope
>>> class MyServer(OptionsMixin):
...     socket_name = server.socket_name
...     def cmd(self, cmd: str, *args: object):
...         cmd_args: t.List[t.Union[str, int]] = [cmd]
...         if self.socket_name:
...             cmd_args.insert(0, f"-L{self.socket_name}")
...         cmd_args.insert(0, "-f/dev/null")
...         return tmux_cmd(*cmd_args, *args)
...
...     default_option_scope = OptionScope.Server
>>> MyServer()._show_options_raw()
<libtmux.common.tmux_cmd object at ...>
>>> MyServer()._show_options_raw().stdout
[...]
getenv(name)[source]

Show environment variable $ tmux show-environment -t [session] <name>.

Return the value of a specific variable if the name is specified.

Added in version 0.13.

Parameters:

name (str) – the environment variable name. such as ‘PATH’.

Returns:

Value of environment variable

Return type:

str

Return type:

str | bool | None

list_windows()[source]

Return a list of Window from the tmux(1) session.

Deprecated since version 0.17: Slated to be removed in favor of windows.

Return type:

list[Window]

remove_environment(name)[source]

Remove environment variable $ tmux set-environment -r <name>.

Return type:

None

Parameters:

name (str) – The environment variable name, e.g. ‘PATH’.

Raises:

ValueError – If tmux returns an error.

run_hook(hook, global_=None, scope=<libtmux.constants._DefaultOptionScope object>)[source]

Run a hook immediately. Useful for testing.

Return type:

Self

Parameters:
set_environment(name, value)[source]

Set environment $ tmux set-environment <name> <value>.

Return type:

None

Parameters:
  • name (str) – The environment variable name, e.g. ‘PATH’.

  • value (str) – Environment value.

Raises:

ValueError – If tmux returns an error.

set_hook(hook, value, unset=None, run=None, append=None, g=None, global_=None, scope=<libtmux.constants._DefaultOptionScope object>)[source]

Set hook for tmux target.

Wraps $ tmux set-hook <hook> <value>.

Return type:

Self

Parameters:
  • hook (str) – hook to set, e.g. ‘aggressive-resize’

  • value (int | str) – hook command.

  • unset (bool | None)

  • run (bool | None)

  • append (bool | None)

  • g (bool | None)

  • global_ (bool | None)

  • scope (OptionScope | _DefaultOptionScope | None)

Raises:
set_hooks(hook, values, *, clear_existing=False, global_=None, scope=<libtmux.constants._DefaultOptionScope object>)[source]

Set multiple indexed hooks at once.

Return type:

Self

Parameters:
  • hook (str) – Hook name, e.g. ‘session-renamed’

  • values (HookValues) – Values to set. Can be: - dict[int, str]: {0: ‘cmd1’, 1: ‘cmd2’} - explicit indices - SparseArray[str]: preserves indices from another hook - list[str]: [‘cmd1’, ‘cmd2’] - sequential indices starting at 0

  • clear_existing (bool) – If True, unset all existing hook values first

  • global (bool | None) – Use global hooks

  • scope (OptionScope | None) – Scope for the hook

  • global_ (bool | None)

Returns:

Returns self for method chaining.

Return type:

Self

Examples

Set hooks with explicit indices:

>>> session.set_hooks('session-renamed', {
...     0: 'display-message "hook 0"',
...     1: 'display-message "hook 1"',
... })
Session($...)
>>> hooks = session.show_hook('session-renamed')
>>> sorted(hooks.keys())
[0, 1]
>>> session.unset_hook('session-renamed')
Session($...)

Set hooks from a list (sequential indices):

>>> session.set_hooks('after-new-window', [
...     'select-pane -t 0',
...     'send-keys "clear" Enter',
... ])
Session($...)
>>> hooks = session.show_hook('after-new-window')
>>> sorted(hooks.keys())
[0, 1]

Replace all existing hooks with clear_existing=True:

>>> session.set_hooks(
...     'session-renamed',
...     {0: 'display-message "new"'},
...     clear_existing=True,
... )
Session($...)
>>> hooks = session.show_hook('session-renamed')
>>> sorted(hooks.keys())
[0]
>>> session.unset_hook('session-renamed')
Session($...)
>>> session.unset_hook('after-new-window')
Session($...)
set_option(option, value, _format=None, prevent_overwrite=None, ignore_errors=None, suppress_warnings=None, append=None, g=None, global_=None, scope=<libtmux.constants._DefaultOptionScope object>)[source]

Set option for tmux target.

Wraps $ tmux set-option <option> <value>.

Return type:

Self

Parameters:
  • option (str) – option to set, e.g. ‘aggressive-resize’

  • value (str) – option value. True/False will turn in ‘on’ and ‘off’, also accepts string of ‘on’ or ‘off’ directly.

  • deprecated: (..) – 0.28: Deprecated by g for global, use global_ instead.

  • _format (bool | None)

  • prevent_overwrite (bool | None)

  • ignore_errors (bool | None)

  • suppress_warnings (bool | None)

  • append (bool | None)

  • g (bool | None)

  • global_ (bool | None)

  • scope (OptionScope | _DefaultOptionScope | None)

Raises:

Examples

>>> import typing as t
>>> from libtmux.common import tmux_cmd
>>> from libtmux.constants import OptionScope
>>> from libtmux._internal.sparse_array import SparseArray
>>> class MyServer(OptionsMixin):
...     socket_name = server.socket_name
...     def cmd(self, cmd: str, *args: object):
...         cmd_args: t.List[t.Union[str, int]] = [cmd]
...         if self.socket_name:
...             cmd_args.insert(0, f"-L{self.socket_name}")
...         cmd_args.insert(0, "-f/dev/null")
...         return tmux_cmd(*cmd_args, *args)
...
...     default_option_scope = OptionScope.Server
>>> MyServer().set_option('escape-time', 1250)
<libtmux.options.MyServer object at ...>
>>> MyServer()._show_option('escape-time')
1250
>>> MyServer().set_option('escape-time', 495)
<libtmux.options.MyServer object at ...>
>>> MyServer()._show_option('escape-time')
495
show_environment()[source]

Show environment $ tmux show-environment -t [session].

Return dict of environment variables for the session.

Changed in version 0.13: Removed per-item lookups. Use libtmux.common.EnvironmentMixin.getenv().

Returns:

environmental variables in dict, if no name, or str if name entered.

Return type:

dict

Return type:

dict[str, bool | str]

show_hook(hook, global_=False, scope=<libtmux.constants._DefaultOptionScope object>)[source]

Return value for a hook.

For array hooks (e.g., session-renamed), returns a SparseArray with hook values at their original indices. Use .keys() for indices and .values() for values.

Return type:

str | int | SparseArray[str] | None

Parameters:
  • hook (str) – Hook name to query

  • global_ (bool)

  • scope (OptionScope | _DefaultOptionScope | None)

Returns:

Hook value. For array hooks, returns SparseArray.

Return type:

str | int | SparseArray[str] | None

Raises:

Examples

>>> session.set_hook('session-renamed[0]', 'display-message "test"')
Session($...)
>>> hooks = session.show_hook('session-renamed')
>>> isinstance(hooks, SparseArray)
True
>>> sorted(hooks.keys())
[0]
>>> session.unset_hook('session-renamed')
Session($...)
show_hooks(global_=False, scope=<libtmux.constants._DefaultOptionScope object>)[source]

Return a dict of hooks for the target.

Return type:

dict[str, Any]

Parameters:
  • global (bool, optional) – Pass -g flag for global hooks, default False.

  • scope (OptionScope | _DefaultOptionScope | None, optional) – Hook scope (Server/Session/Window/Pane), defaults to object’s scope.

  • global_ (bool | None)

Returns:

Dictionary mapping hook names to their values.

Return type:

HookDict

Examples

>>> session.set_hook('session-renamed[0]', 'display-message "test"')
Session($...)
>>> hooks = session.show_hooks()
>>> isinstance(hooks, dict)
True
>>> 'session-renamed[0]' in hooks
True
>>> session.unset_hook('session-renamed')
Session($...)
show_option(option, global_=False, g=False, scope=<libtmux.constants._DefaultOptionScope object>, ignore_errors=None, include_hooks=None, include_inherited=None)[source]

Return option value for the target.

Return type:

Any | None

Parameters:
  • option (str)

  • g (bool, optional) –

    Deprecated since version 0.50.0: Use global_ instead.

  • global_ (bool)

  • scope (OptionScope | _DefaultOptionScope | None)

  • ignore_errors (bool | None)

  • include_hooks (bool | None)

  • include_inherited (bool | None)

Raises:

Examples

>>> import typing as t
>>> from libtmux.common import tmux_cmd
>>> from libtmux.constants import OptionScope
>>> class MyServer(OptionsMixin):
...     socket_name = server.socket_name
...     def cmd(self, cmd: str, *args: object):
...         cmd_args: t.List[t.Union[str, int]] = [cmd]
...         if self.socket_name:
...             cmd_args.insert(0, f"-L{self.socket_name}")
...         cmd_args.insert(0, "-f/dev/null")
...         return tmux_cmd(*cmd_args, *args)
...
...     default_option_scope = OptionScope.Server
>>> MyServer().cmd('new-session', '-d')
<libtmux.common.tmux_cmd object at ...>
>>> MyServer().show_option('exit-unattached', global_=True)
False
show_options(global_=False, scope=<libtmux.constants._DefaultOptionScope object>, include_hooks=None, include_inherited=None)[source]

Return all options for the target.

Return type:

dict[str, str | int | list[str | int] | dict[str, list[str | int]] | SparseArray[str | int] | None]

Parameters:
  • global (bool, optional) – Pass -g flag for global options, default False.

  • scope (OptionScope | _DefaultOptionScope | None, optional) – Option scope (Server/Session/Window/Pane), defaults to object’s scope.

  • include_hooks (bool, optional) – Include hook options (-H flag).

  • include_inherited (bool, optional) – Include inherited options (-A flag).

  • global_ (bool)

Returns:

Dictionary with all options, arrays exploded and values converted.

Return type:

ExplodedComplexUntypedOptionsDict

Raises:

Examples

>>> options = server.show_options()
>>> isinstance(options, dict)
True
>>> 'buffer-limit' in options
True
unset_environment(name)[source]

Unset environment variable $ tmux set-environment -u <name>.

Return type:

None

Parameters:

name (str) – The environment variable name, e.g. ‘PATH’.

Raises:

ValueError – If tmux returns an error.

unset_hook(hook, global_=None, scope=<libtmux.constants._DefaultOptionScope object>)[source]

Unset hook for tmux target.

Wraps $ tmux set-hook -u <hook> / $ tmux set-hook -U <hook>

Return type:

Self

Parameters:
  • hook (str) – hook to unset, e.g. ‘after-show-environment’

  • global_ (bool | None)

  • scope (OptionScope | _DefaultOptionScope | None)

Raises:
unset_option(option, unset_panes=None, global_=None, ignore_errors=None, scope=<libtmux.constants._DefaultOptionScope object>)[source]

Unset option for tmux target.

Wraps $ tmux set-option -u <option> / $ tmux set-option -U <option>

Return type:

Self

Parameters:
  • option (str) – option to unset, e.g. ‘aggressive-resize’

  • unset_panes (bool | None)

  • global_ (bool | None)

  • ignore_errors (bool | None)

  • scope (OptionScope | _DefaultOptionScope | None)

Raises:

Examples

>>> import typing as t
>>> from libtmux.common import tmux_cmd
>>> from libtmux.constants import OptionScope
>>> class MyServer(OptionsMixin):
...     socket_name = server.socket_name
...     def cmd(self, cmd: str, *args: object):
...         cmd_args: t.List[t.Union[str, int]] = [cmd]
...         if self.socket_name:
...             cmd_args.insert(0, f"-L{self.socket_name}")
...         cmd_args.insert(0, "-f/dev/null")
...         return tmux_cmd(*cmd_args, *args)
...
...     default_option_scope = OptionScope.Server
>>> MyServer().set_option('escape-time', 1250)
<libtmux.options.MyServer object at ...>
>>> MyServer()._show_option('escape-time')
1250
>>> MyServer().unset_option('escape-time')
<libtmux.options.MyServer object at ...>
>>> isinstance(MyServer()._show_option('escape-time'), int)
True
property children: QueryList[Window]

Was used by TmuxRelationalObject (but that’s longer used in this class).

Deprecated since version 0.17: Slated to be removed in favor of windows.