Sessions¶
Bases:
Obj,EnvironmentMixin,OptionsMixin,HooksMixintmux(1) Session [session_manual].
Holds
Windowobjects.- Parameters:
server (
Server) – Server the session was queried from, and the connection every command and refresh runs over.
-
attributeattribute
Scope
OptionsMixinfalls back to when an option call leavesscopeunset.Nonesendsset-optionandshow-optionswith no scope flag, which tmux resolves as session scope;OptionScope.Sessionmaps to that same empty flag.
-
attributeattribute
Scope
HooksMixinfalls back to when a hook call leavesscopeunset.Nonesendsset-hookandshow-hookswith no scope flag, which tmux resolves as session scope.
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.
Server the object was queried from, and the connection every refresh re-runs its
list-*command over.
Refresh session attributes from tmux.
- Raises:
ValueError– Whensession_idis unset. Surfaces a clear error underpython -O, where anassertwould be stripped.- Return type:
Create Session from existing session_id.
- Parameters:
- Return type:
- Raises:
TmuxObjectDoesNotExist– When no such session exists on a reachable server.
Examples
>>> Session.from_session_id( ... server=session.server, session_id=session.session_id ... ) Session($1 ...)
Return the session this process’s pane belongs to.
The session id baked into
$TMUXis frozen at pane spawn and goes stale the moment the pane’s window is moved or linked elsewhere, so it is never read. tmux is asked instead: the pane row thatPane.from_env()fetches is stamped with the session tmux considers canonical for that pane’s window.- Parameters:
env (
typing.Mapping, optional) – Environment to read. Defaults toos.environ.- Return type:
- Raises:
NotInsideTmux– When$TMUXor$TMUX_PANEis unset or malformed.TmuxObjectDoesNotExist– When the pane named by$TMUX_PANEis gone.LibTmuxException– When the server named by$TMUXis unreachable.ValueError– When the resolved pane carries nosession_id. Surfaces a clear error underpython -O, where anassertwould be stripped.
Examples
Even a deliberately wrong session id in
$TMUXcannot mislead it:>>> env = {"TMUX": f"{socket_path},1,999", "TMUX_PANE": pane.pane_id} >>> Session.from_env(env).session_id == session.session_id True
>>> Session.from_env(env) Session($1 ...)
Added in version 0.62.
Windows contained by session.
Can be accessed via
.windows.get()and.windows.filter()
Panes contained by session’s windows.
Can be accessed via
.panes.get()and.panes.filter()
Windows in this session, optionally filtered by tmux.
Like
Session.windowsbut with afilterkwarg passed to$ tmux list-windows -t <session> -f <filter>.- Parameters:
filter (
str,optional) –tmux format expression (
-fflag).Warning
tmux silently expands a malformed filter (unclosed
#{...}, unknown format token) to empty, which the filter treats as false — every row is suppressed and no stderr is emitted. A bad filter is indistinguishable from “filter matched nothing”; verify filter syntax against the FORMATS section oftmux(1).Added in version 0.57.
- Return type:
See also
Session.windowsunfiltered
QueryListof every window in this session (Python-side.filter()runs against this).- Filtering before object creation
when to pick
search_*overQueryList.filter().
Examples
>>> _ = session.new_window(window_name='gap7s_target') >>> _ = session.new_window(window_name='other_window') >>> matches = session.search_windows(filter='#{m:gap7s_*,#{window_name}}') >>> [w.window_name for w in matches] ['gap7s_target']
Panes in this session, optionally filtered by tmux.
Like
Session.panesbut with afilterkwarg passed to$ tmux list-panes -s -t <session> -f <filter>.- Parameters:
filter (
str,optional) –tmux format expression (
-fflag).Warning
tmux silently expands a malformed filter (unclosed
#{...}, unknown format token) to empty, which the filter treats as false — every row is suppressed and no stderr is emitted. A bad filter is indistinguishable from “filter matched nothing”; verify filter syntax against the FORMATS section oftmux(1).Added in version 0.57.
- Return type:
See also
Session.panesunfiltered
QueryListof every pane in this session (Python-side.filter()runs against this).- Filtering before object creation
when to pick
search_*overQueryList.filter().
Examples
>>> target_pane = session.active_window.split() >>> matches = session.search_panes( ... filter=f'#{{m:{target_pane.pane_id},#{{pane_id}}}}' ... ) >>> [p.pane_id for p in matches] == [target_pane.pane_id] True
Execute tmux subcommand within session context.
Automatically binds target by adding
-tfor object’s session ID to the command. Passtargetto keyword arguments to override.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_...))
Notes
Changed in version 0.34: Passing target by
-tis ignored. Usetargetkeyword argument instead.Changed in version 0.8: Renamed from
.tmuxto.cmd.
Lock this session via
$ tmux lock-session.>>> session.lock_session()
- Return type:
Detach every client attached to this session.
Maps to
$ tmux detach-client -s <session_id>— the onlydetach-clientflag group that is genuinely session-scoped.See also
Server.detach_client()detach a specific client by name (
-tflag) — server-wide client lookup, not session-scoped.Server.detach_all_clients()detach every client on the server (
-aflag).
Examples
>>> with control_mode() as ctl: ... session.detach_client()
Select the last (previously selected) window.
Wraps
$ tmux last-window.- Returns:
The newly active window.
- Return type:
Examples
>>> w1 = session.new_window(window_name='lw_a') >>> w2 = session.new_window(window_name='lw_b', attach=True) >>> session.last_window() Window(...)
Select the next window.
Wraps
$ tmux next-window.- Returns:
The newly active window.
- Return type:
Examples
>>> w = session.new_window(window_name='nw_test') >>> session.next_window() Window(...)
Select the previous window.
Wraps
$ tmux previous-window.- Returns:
The newly active window.
- Return type:
Examples
>>> w = session.new_window(window_name='pw_test') >>> session.previous_window() Window(...)
Select window and return the selected window.
Return the active
Paneobject.
Return the active
Windowobject.
Return
$ tmux attach-sessionaka alias:$ tmux attach.Examples
>>> session = server.new_session()
>>> session not in server.attached_sessions True
Kill
Session, closes linked windows and detach all clients.$ tmux kill-session.- 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.group (
bool,optional) – Kill all sessions in this session’s group (-gflag). Requires tmux 3.7+. If used with tmux < 3.7, a warning is issued and the flag is ignored.
- Return type:
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 to session.
- Raises:
- Return type:
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.- 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 byWindow.new_window()to specify the target window.kill_existing (
bool,optional) –Destroy the window at the target index if it already exists (
-kflag).Added in version 0.56.
select_existing (
bool,optional) –If a window with the given name already exists, select it instead of creating a new one (
-Sflag).Added in version 0.56.
versionchanged: (
..) – 0.28.0:attachdefault changed fromTruetoFalse.
- Return type:
See also
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:
- Parameters:
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.- Parameters:
- Raises:
libtmux.exc.LibTmuxException– If tmux returns an error.- Return type:
Alias of
Session.session_name.>>> session.name 'libtmux_...'
>>> session.name == session.session_name True
Return the active
Paneobject.Notes
Deprecated since version 0.31: Deprecated in favor of
active_pane().
Return the active
Windowobject.Notes
Deprecated since version 0.31: Deprecated in favor of
active_window().
- Return type:
Return key-based lookup. Deprecated by attributes.
Deprecated since version 0.17: Deprecated by attribute lookup.e.g.
session['session_name']is now accessed viasession.session_name.
Return window by id. Deprecated in favor of
windows.get().Deprecated since version 0.16: Deprecated by
windows.get().
Filter through windows, return list of
Window.Deprecated since version 0.17: Deprecated by
windows.filter().
Filter through windows, return first
Window.Deprecated since version 0.17: Slated to be removed in favor of
windows.get().
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, bracket_paste_flag=None, buffer_name=None, buffer_sample=None, buffer_size=None, client_activity=None, client_cell_height=None, client_cell_width=None, client_control_mode=None, client_created=None, client_discarded=None, client_flags=None, client_height=None, client_key_table=None, client_last_session=None, client_mode_format=None, client_name=None, client_pid=None, client_prefix=None, client_readonly=None, client_session=None, client_termfeatures=None, client_termname=None, client_termtype=None, client_tty=None, client_uid=None, client_user=None, client_utf8=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=None, pane_dead_signal=None, pane_dead_status=None, pane_dead_time=None, pane_fg=None, pane_flags=None, pane_floating_flag=None, pane_format=None, pane_height=None, pane_id=None, pane_in_mode=None, pane_index=None, pane_input_off=None, pane_last=None, pane_left=None, pane_marked=None, pane_marked_set=None, pane_mode=None, pane_path=None, pane_pb_progress=None, pane_pb_state=None, pane_pid=None, pane_pipe=None, pane_pipe_pid=None, pane_right=None, pane_search_string=None, pane_start_command=None, pane_start_path=None, pane_synchronized=None, pane_tabs=None, pane_title=None, pane_top=None, pane_tty=None, pane_width=None, pane_x=None, pane_y=None, pane_z=None, pane_zoomed_flag=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_format=None, session_group=None, session_group_attached=None, session_group_attached_list=None, session_group_list=None, session_group_many_attached=None, session_group_size=None, session_grouped=None, session_id=None, session_last_attached=None, session_many_attached=None, session_marked=None, session_name=None, session_path=None, session_stack=None, session_windows=None, socket_path=None, start_time=None, synchronized_output_flag=None, uid=None, user=None, version=None, window_active=None, window_active_clients=None, window_active_clients_list=None, window_active_sessions=None, window_active_sessions_list=None, window_activity=None, window_activity_flag=None, window_bell_flag=None, window_bigger=None, window_cell_height=None, window_cell_width=None, window_end_flag=None, window_flags=None, window_format=None, window_height=None, window_id=None, window_index=None, window_last_flag=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_silence_flag=None, window_stack_index=None, window_start_flag=None, window_visible_layout=None, window_width=None, window_zoomed_flag=None, wrap_flag=None, default_option_scope=None, default_hook_scope=None)¶method[source]method[source]__init__(server, active_window_index=None, alternate_saved_x=None, alternate_saved_y=None, bracket_paste_flag=None, buffer_name=None, buffer_sample=None, buffer_size=None, client_activity=None, client_cell_height=None, client_cell_width=None, client_control_mode=None, client_created=None, client_discarded=None, client_flags=None, client_height=None, client_key_table=None, client_last_session=None, client_mode_format=None, client_name=None, client_pid=None, client_prefix=None, client_readonly=None, client_session=None, client_termfeatures=None, client_termname=None, client_termtype=None, client_tty=None, client_uid=None, client_user=None, client_utf8=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=None, pane_dead_signal=None, pane_dead_status=None, pane_dead_time=None, pane_fg=None, pane_flags=None, pane_floating_flag=None, pane_format=None, pane_height=None, pane_id=None, pane_in_mode=None, pane_index=None, pane_input_off=None, pane_last=None, pane_left=None, pane_marked=None, pane_marked_set=None, pane_mode=None, pane_path=None, pane_pb_progress=None, pane_pb_state=None, pane_pid=None, pane_pipe=None, pane_pipe_pid=None, pane_right=None, pane_search_string=None, pane_start_command=None, pane_start_path=None, pane_synchronized=None, pane_tabs=None, pane_title=None, pane_top=None, pane_tty=None, pane_width=None, pane_x=None, pane_y=None, pane_z=None, pane_zoomed_flag=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_format=None, session_group=None, session_group_attached=None, session_group_attached_list=None, session_group_list=None, session_group_many_attached=None, session_group_size=None, session_grouped=None, session_id=None, session_last_attached=None, session_many_attached=None, session_marked=None, session_name=None, session_path=None, session_stack=None, session_windows=None, socket_path=None, start_time=None, synchronized_output_flag=None, uid=None, user=None, version=None, window_active=None, window_active_clients=None, window_active_clients_list=None, window_active_sessions=None, window_active_sessions_list=None, window_activity=None, window_activity_flag=None, window_bell_flag=None, window_bigger=None, window_cell_height=None, window_cell_width=None, window_end_flag=None, window_flags=None, window_format=None, window_height=None, window_id=None, window_index=None, window_last_flag=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_silence_flag=None, window_stack_index=None, window_start_flag=None, window_visible_layout=None, window_width=None, window_zoomed_flag=None, wrap_flag=None, default_option_scope=None, default_hook_scope=None)¶
When not a user (custom) option, scope can be implied.
- Parameters:
server (
Server)default_option_scope (
OptionScope|None)default_hook_scope (
OptionScope|None)
- Return type:
Refresh dataclass fields from a single
list-*row.Used by the public
refresh()methods onPane,Window,Session, andClient. Each subclass guards its identity field (pane_id,window_id,session_id,client_name) againstNonebefore delegating here; this base method enforces the same precondition explicitly so the guarantee survivespython -O, where anassertwould be stripped.- Raises:
ValueError– Whenobj_idisNone. Surfaces a clear error underpython -O, matching the contract of the publicrefresh()methods.- Parameters:
- Return type:
Return value for the hook.
- Parameters:
hook (
str)global_ (
bool)scope (
OptionScope|_DefaultOptionScope|None)
- Raises:
- Return type:
Return option value for the target.
todo: test and return True/False for on/off string
- Parameters:
- Raises:
- Return type:
ConvertedValue|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().cmd('new-session', '-d') <libtmux.common.tmux_cmd object at ...>
>>> MyServer()._show_option('exit-unattached', global_=True) False
Return raw option output for target.
- Parameters:
- Raises:
- Return type:
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
Return a dict of options for the target.
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() {...}
Return dict of options for the target.
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
Return a dict of options for the target.
- Parameters:
g (
bool,optional) –Deprecated since version 0.50.0: Use
global_instead.quiet (
bool,optional) –Suppress errors silently (
-qflag).Added in version 0.56.
values_only (
bool,optional) –Return only option values without names (
-vflag).Added in version 0.56.
scope (
OptionScope|_DefaultOptionScope|None)
- Return type:
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 [...]
Resolve tmux_bin from self (Server) or self.server (Session/Window/Pane).
Index of the session’s active window.
Saved cursor X position for the pane’s alternate screen.
Saved cursor Y position for the pane’s alternate screen.
"1"when the pane’s terminal has bracketed paste mode enabled.
Name of the buffer.
Sample taken from the start of the buffer’s contents.
Size of the buffer, in bytes.
Time the client last had activity.
Height of one of the client’s terminal cells, in pixels.
Width of one of the client’s terminal cells, in pixels.
"1"when the client is running in control mode.
Time the client was created.
Bytes discarded because the client fell behind.
List of the client’s flags.
Height of the client, in cells.
Name of the key table the client is currently using.
Name of the session the client was attached to before its current one.
Default format string tmux’s client mode (
choose-client) renders each client row with.
Name of the client.
PID of the client process.
"1"while the prefix key has been pressed.
"1"when the client is attached read-only.
Name of the session the client is attached to.
Terminal features tmux detected for the client, if any.
Terminal name of the client.
Terminal type of the client, if available.
Path to the client’s pseudo terminal.
UID of the client process.
User the client process runs as.
"1"when the client supports UTF-8.
Width of the client, in cells.
Bytes written to the client.
Command alias, when listing commands.
Command name, when listing commands.
Command usage string, when listing commands.
List of the configuration files tmux loaded.
Text of the line the cursor sits on in copy mode.
Word under the cursor in copy mode.
Cursor X position in copy mode.
Cursor Y position in copy mode.
Configuration file currently being parsed.
Character at the pane’s cursor position.
"1"when the pane’s cursor is visible.
Cursor X position in the pane.
Cursor Y position in the pane.
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.
Bytes held in the pane’s scrollback history.
Maximum number of scrollback lines the pane keeps.
Lines currently held in the pane’s scrollback history.
"1"when the pane’s terminal is in insert mode.
"1"when the pane’s terminal is in application cursor key mode.
"1"when the pane’s terminal is in application keypad mode.
Index of the last window in the session.
Row number tmux assigns to the entry in the listing.
"1"when the pane’s terminal has all-motion mouse reporting enabled.
"1"when the pane’s terminal has any mouse reporting mode enabled.
"1"when the pane’s terminal has button-event mouse reporting enabled.
"1"when the pane’s terminal reports mouse events in SGR form.
"1"when the pane’s terminal has standard mouse reporting enabled.
Session ID tmux will give the next new session.
"1"when the pane’s terminal is in origin mode.
"1"when this is the active pane of its window.
"1"when the pane touches the bottom of the window.
"1"when the pane touches the left of the window.
"1"when the pane touches the right of the window.
"1"when the pane touches the top of the window.
Bottom edge of the pane, as a window row.
Command running in the pane, if available.
Working directory of the pane, if available.
"1"when the pane’s process has exited and the pane is dead.
Signal that killed the process in a dead pane.
Exit status of the process in a dead pane.
Time the process in a dead pane exited.
Pane flags:
*for the active pane,-for the last used,Zfor zoomed,Ffor floating.
"1"when the pane is floating.
"1"when the format is being evaluated for a pane.
Height of the pane, in cells.
Unique pane ID, e.g.
"%3"(the#Dalias).
Number of modes the pane is in.
Index of the pane within its window (the
#Palias).
"1"when input to the pane is disabled.
"1"when this is the window’s last used pane.
Left edge of the pane, as a window column.
"1"when this pane is the marked pane.
"1"when a marked pane is set on the server.
Name of the mode the pane is in, if any.
Path of the pane; the application running in it can set this.
Progress percentage of the pane’s progress bar; the application running in it can set this.
Pane progress bar state, one of
hidden,normal,error,indeterminate, orpaused; the application running in the pane can set this.
PID of the first process started in the pane.
"1"while the pane’s output is being piped.
PID of the pipe process, if any.
Right edge of the pane, as a window column.
Last search string used in the pane’s copy mode.
Command the pane was started with.
Working directory the pane was started in.
"1"when the pane hassynchronize-panesin effect.
Tab stop positions in the pane.
Title of the pane; the application running in it can set this (the
#Talias).
Top edge of the pane, as a window row.
Path to the pane’s pseudo terminal.
Width of the pane, in cells.
"1"when the pane is zoomed.
Remove environment variable
$ tmux set-environment -r <name>.- Parameters:
name (
str) – The environment variable name, e.g. ‘PATH’.- Raises:
ValueError– If tmux returns an error.- Return type:
Run a hook immediately. Useful for testing.
- Parameters:
hook (
str)scope (
OptionScope|_DefaultOptionScope|None)
- Return type:
Self
Scroll position in copy mode.
Bottom line of the pane’s scroll region.
Top line of the pane’s scroll region.
Search match in the pane’s copy mode, if any.
X position of the end of the copy-mode selection.
Y position of the end of the copy-mode selection.
X position of the start of the copy-mode selection.
Y position of the start of the copy-mode selection.
Time of the session’s last activity.
List of indexes of the session’s windows with alerts.
Number of clients attached to the session.
List of the clients attached to the session.
Time the session was created.
"1"when the format is being evaluated for a session.
Name of the session group the session belongs to.
Number of clients attached to sessions in the session group.
List of the clients attached to sessions in the session group.
List of the sessions in the session group.
"1"when more than one client is attached to sessions in the session group.
Number of sessions in the session group.
"1"when the session belongs to a session group.
Unique session ID, e.g.
"$1".
Time the session was last attached.
"1"when more than one client is attached to the session.
"1"when the session contains the marked pane.
Name of the session (the
#Salias).
Working directory of the session.
Indexes of the session’s windows, most recently used first.
Number of windows in the session.
Set environment
$ tmux set-environment <name> <value>.- Parameters:
- Raises:
ValueError– If tmux returns an error.- Return type:
Set hook for tmux target.
Wraps
$ tmux set-hook <hook> <value>.- Parameters:
- Raises:
- Return type:
Self
Set multiple indexed hooks at once.
- 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 0clear_existing (
bool) – If True, unset all existing hook values firstscope (
OptionScope|None) – Scope for the hook
- 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 for tmux target.
Wraps
$ tmux set-option <option> <value>.- 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 bygfor global, useglobal_instead.scope (
OptionScope|_DefaultOptionScope|None)
- Raises:
- Return type:
Self
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
$ 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:
Return value for a hook.
For array hooks (e.g.,
session-renamed), returns aSparseArraywith hook values at their original indices. Use.keys()for indices and.values()for values.- Parameters:
hook (
str) – Hook name to queryglobal_ (
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($...)
Return a dict of hooks for the target.
- Parameters:
global (
bool,optional) – Pass-gflag for global hooks, default False.scope (
OptionScope|_DefaultOptionScope|None,optional) – Hook scope (Server/Session/Window/Pane), defaults to object’s scope.
- 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($...)
Return option value for the target.
- Parameters:
- Raises:
- Return type:
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
Return all options for the target.
- Parameters:
global (
bool,optional) – Pass-gflag 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 (-Hflag).include_inherited (
bool,optional) – Include inherited options (-Aflag).quiet (
bool,optional) –Suppress errors silently (
-qflag).Added in version 0.56.
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
Path to the tmux server’s socket.
Time the tmux server started.
"1"when the pane’s terminal has synchronized output enabled.
Unset environment variable
$ tmux set-environment -u <name>.- Parameters:
name (
str) – The environment variable name, e.g. ‘PATH’.- Raises:
ValueError– If tmux returns an error.- Return type:
Unset hook for tmux target.
Wraps
$ tmux set-hook -u <hook>/$ tmux set-hook -U <hook>- Parameters:
hook (
str) – hook to unset, e.g. ‘after-show-environment’scope (
OptionScope|_DefaultOptionScope|None)
- Raises:
- Return type:
Self
Unset option for tmux target.
Wraps
$ tmux set-option -u <option>/$ tmux set-option -U <option>- Parameters:
option (
str) – option to unset, e.g. ‘aggressive-resize’scope (
OptionScope|_DefaultOptionScope|None)
- Raises:
- Return type:
Self
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
Version of the running tmux server.
"1"when the window is its session’s current window.
Number of clients viewing the window.
List of the clients viewing the window.
Number of sessions in which the window is the active one.
List of the sessions in which the window is the active one.
Time of the window’s last activity.
"1"when the window has an activity alert.
"1"when the window has a bell alert.
"1"when the window is larger than the client viewing it.
Height of one of the window’s cells, in pixels.
Width of one of the window’s cells, in pixels.
"1"when the window has the highest index in the session.
Window flags, with
#escaped as##(the#Falias).
"1"when the format is being evaluated for a window.
Height of the window, in cells.
Unique window ID, e.g.
"@2".
Index of the window in its session (the
#Ialias).
"1"when the window is the session’s last used one.
Window layout description, ignoring zoomed panes.
"1"when the window is linked across sessions.
Number of sessions the window is linked into.
List of the sessions the window is linked into.
"1"when the window contains the marked pane.
Name of the window (the
#Walias).
X offset into the window when it is larger than the client.
Y offset into the window when it is larger than the client.
Number of panes in the window.
Window flags, with nothing escaped.
"1"when the window has a silence alert.
Index of the window in its session’s most recently used stack.
"1"when the window has the lowest index in the session.
Window layout description, respecting zoomed panes.
Width of the window, in cells.
"1"when the window is zoomed.
"1"when the pane’s terminal wraps at the right margin.