tmuxp.workspace.builder.ClassicWorkspaceBuilder
-
Load workspace from workspace
dictobject.Description#
Build tmux workspace from a configuration. Creates and names windows, sets options, splits windows into panes.
Examples#
>>> import yaml>>> session_config = yaml.load('''... session_name: sample workspace... start_directory: '~'... windows:... - window_name: editor... layout: main-vertical... panes:... - shell_command:... - cmd: vim... - shell_command:... - cmd: echo "hey"...... - window_name: logging... panes:... - shell_command:... - cmd: tail | echo 'hi'...... - window_name: test... panes:... - shell_command:... - cmd: htop... ''', Loader=yaml.Loader)>>> builder = ClassicWorkspaceBuilder(session_config=session_config, server=server)New session:
>>> builder.build()>>> new_session = builder.session>>> new_session.name == 'sample workspace'True>>> len(new_session.windows)3>>> sorted([window.name for window in new_session.windows])['editor', 'logging', 'test']Existing session:
>>> len(session.windows)1>>> builder.build(session=session)_Caveat:_ Preserves old session name:
>>> session.name == 'sample workspace'False>>> len(session.windows)3>>> sorted([window.name for window in session.windows])['editor', 'logging', 'test']Progress callback:
>>> calls: list[str] = []>>> progress_cfg = {... "session_name": "progress-demo",... "windows": [{"window_name": "main", "panes": [{"shell_command": []}]}],... }>>> builder = ClassicWorkspaceBuilder(... session_config=progress_cfg,... server=server,... on_progress=calls.append,... )>>> builder.build()>>> "Workspace built" in callsTrueBefore-script hook:
>>> hook_calls: list[bool] = []>>> no_script_cfg = {... "session_name": "hook-demo",... "windows": [{"window_name": "main", "panes": [{"shell_command": []}]}],... }>>> builder = ClassicWorkspaceBuilder(... session_config=no_script_cfg,... server=server,... on_before_script=lambda: hook_calls.append(True),... )>>> builder.build()>>> hook_calls # no before_script in config, callback not fired[]Script output hook:
>>> script_lines: list[str] = []>>> no_script_cfg2 = {... "session_name": "script-output-demo",... "windows": [{"window_name": "main", "panes": [{"shell_command": []}]}],... }>>> builder = ClassicWorkspaceBuilder(... session_config=no_script_cfg2,... server=server,... on_script_output=script_lines.append,... )>>> builder.build()>>> script_lines # no before_script in config, callback not fired[]Build events hook:
>>> events: list[dict] = []>>> event_cfg = {... "session_name": "events-demo",... "windows": [{"window_name": "main", "panes": [{"shell_command": []}]}],... }>>> builder = ClassicWorkspaceBuilder(... session_config=event_cfg,... server=server,... on_build_event=events.append,... )>>> builder.build()>>> [e["event"] for e in events]['session_created', 'window_started', 'pane_creating','window_done', 'workspace_built']>>> next(e for e in events if e["event"] == "session_created")["session_pane_total"]1Build events with before_script:
before_script_startedfires before the script runs;before_script_donefires infinally(success or failure).>>> script_events: list[dict] = []>>> script_event_cfg = {... "session_name": "script-events-demo",... "before_script": "echo hello",... "windows": [{"window_name": "main", "panes": [{"shell_command": []}]}],... }>>> builder = ClassicWorkspaceBuilder(... session_config=script_event_cfg,... server=server,... on_build_event=script_events.append,... )>>> builder.build()>>> event_names = [e["event"] for e in script_events]>>> "before_script_started" in event_namesTrue>>> "before_script_done" in event_namesTrue>>> bs_start = event_names.index("before_script_started")>>> bs_done = event_names.index("before_script_done")>>> win_start = event_names.index("window_started")>>> bs_start < bs_done < win_startTrue
Guides#
Pages that discuss ClassicWorkspaceBuilder.
Members15#
Common operations1#
- build method Build tmux workspace in session.
Other members14#
- server: Server attribute
- session_name: str attribute
- on_progress: t
.Callable [[str], None] | None attribute - on_before_script: t
.Callable [[], None] | None attribute - on_script_output: t
.Callable [[str], None] | None attribute - on_build_event: t
.Callable [[dict[str, t.Any ]], None] | None attribute - __init__ method Initialize workspace loading.
- session property Return tmux session using in workspace builder session.
- session_exists method Return true if tmux session already exists.
- iter_create_windows method Return
libtmux.Windowiterating through session config dict. - iter_create_panes method Return
libtmux.Paneiterating through window config dict. - config_after_window method Actions to apply to window after window and pane finished.
- find_current_attached_session method Return current attached session.
- first_window_pass method Return True first window, used when iterating session windows.