id = "tmuxp" name = "tmuxp" homepage = "https://tmuxp.git-pull.com" description = "Session manager for tmux: save and load your tmux sessions through declarative workspace files." # The project's own logo, from its documentation site. icon = "https://tmuxp.git-pull.com/_static/img/tmuxp.svg" executables = ["tmuxp"] platforms = ["macos", "linux"] [dotfiles] # The project README, under "User-level configurations": "tmuxp checks for # configs in user directories: $TMUXP_CONFIGDIR, if set; $XDG_CONFIG_HOME, # usually $HOME/.config/tmuxp/; $HOME/.tmuxp/" — and then "Load your tmuxp # config from anywhere by using the filename, assuming # ~/.config/tmuxp/mysession.yaml (or .json)". # # The XDG one is the variable, not the ~/.config default, so it is written as # [configHome]; the older ~/.tmuxp/ is a literal dot-directory beside it. Both # hold the same thing — one workspace file per session — so both are listed and # a consumer skips whichever is absent. # # The per-project .tmuxp.yaml / .tmuxp.json that tmuxp loads from a directory # are repository files, not user config, so they are not here. paths = [ "[configHome]/tmuxp/", "~/.tmuxp/", ] # A workspace file is a session name, windows, panes and the shell commands to # run in them. Nothing in one is a credential. secret = [] # No machine_lines. `start_directory` and a pane's `cd` are absolute paths, but # tmuxp's own examples use them for the project checkout the workspace is # about, and a workspace file whose start_directory was stripped would open in # the wrong place — the paths are the workspace, not machine noise. # tmuxp reads the workspace file when it loads a session and exits. side_effect = false [commands] format = 1 label = "Load a tmux workspace" description = "Load one or more tmuxp workspace files (or project folders) as tmux sessions. Socket, config file, color and progress options are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "help" kind = "help" url = "https://tmuxp.git-pull.com/cli/load.html" revision = "2026-10-27" evidence = """ usage: tmuxp load [-h] [-L socket_name] [-S socket_path] [-f tmux_config_file] [-s new_session_name] [--yes] [-d] [-a] [-2 | -8] [--log-file file_path] [--progress-format FORMAT] [--progress-lines N] [--no-progress] workspace-file [workspace-file ...] -s new_session_name start new session with new session name --yes, -y always answer yes -d load the session without attaching it -a, --append load workspace, appending windows to the current session --log-file file_path file to log errors/output to --no-progress Disable the animated progress spinner. """ [[commands.subcommand]] path = ["load"] label = "Load a workspace" [[commands.subcommand.source]] id = "help" kind = "help" url = "https://tmuxp.git-pull.com/cli/load.html" revision = "2026-10-27" evidence = """ usage: tmuxp load [-h] [-L socket_name] [-S socket_path] [-f tmux_config_file] [-s new_session_name] [--yes] [-d] [-a] [-2 | -8] [--log-file file_path] [--progress-format FORMAT] [--progress-lines N] [--no-progress] workspace-file [workspace-file ...] -s new_session_name start new session with new session name --yes, -y always answer yes -d load the session without attaching it -a, --append load workspace, appending windows to the current session --log-file file_path file to log errors/output to --no-progress Disable the animated progress spinner. """ [[commands.subcommand.field]] id = "workspace" label = "Workspace file or project" description = "A workspace file, a folder holding .tmuxp.yaml, or a name in the tmuxp workspace directory." type = "path" path = { kind = "any", role = "input" } position = 0 multiple = true min = 1 sources = ["help"] [[commands.subcommand.field]] id = "session_name" label = "New session name" type = "string" option = ["-s"] sources = ["help"] [[commands.subcommand.field]] id = "detach" label = "Do not attach" type = "boolean" option = ["-d"] sources = ["help"] [[commands.subcommand.field]] id = "append" label = "Append to current session" type = "boolean" option = ["--append", "-a"] sources = ["help"] [[commands.subcommand.field]] id = "yes" label = "Answer yes to prompts" type = "boolean" option = ["--yes", "-y"] sources = ["help"] [[commands.subcommand.field]] id = "log_file" label = "Log file" type = "path" path = { kind = "file", role = "output" } option = ["--log-file"] sources = ["help"] [[commands.subcommand.field]] id = "no_progress" label = "No progress spinner" type = "boolean" option = ["--no-progress"] sources = ["help"] [[commands.subcommand.task]] id = "load" label = "Load and attach" fields = ["workspace"] required = ["workspace"] [[commands.subcommand.task]] id = "load_detached" label = "Load in the background" fields = ["workspace", "detach"] required = ["workspace"] set = { detach = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["workspace", "session_name", "detach"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["append", "yes", "log_file", "no_progress"]