id = "teamocil" name = "teamocil" homepage = "https://github.com/remi/teamocil" description = "A simple tool used to automatically create windows and panes in tmux with YAML files." executables = ["teamocil"] platforms = ["macos", "linux"] [dotfiles] # The description is the first line of teamocil's README. # # Same README, "Installation": "Create your layout directory" with # `mkdir ~/.teamocil`, then "Edit ~/.teamocil/sample.yml". That directory is # the only location the README names — there is no XDG lookup and no # environment variable, so the literal home-directory path is what teamocil # opens. Each project is one YAML file in it. # # tmux's own ~/.tmux.conf is a separate tool with its own entry; teamocil # neither reads nor writes it. A `.teamocil.yml` carried inside a project's # working directory belongs to that repository rather than to the user. paths = ["~/.teamocil/"] # A layout file is window names, pane splits and the commands to run in them. # teamocil authenticates to nothing. secret = [] # `teamocil ` reads the file once and hands off to tmux. side_effect = false # No machine_lines. A layout's `root:` names a directory on this machine and is # the one candidate, but every project lives in its own file under the # directory, so a rule would need a glob where a rule's `file` has to be one # concrete path. Left out rather than guessed at — the same reason # apps/tmuxinator.toml gives. [commands] format = 1 label = "Run a tmux layout" description = "Start a teamocil layout, or show, edit or list layouts. Pick one job at a time; layout contents are not edited here." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false } [[commands.source]] id = "readme" kind = "manual" url = "https://raw.githubusercontent.com/remi/teamocil/HEAD/README.md" revision = "HEAD 2026-10-27" evidence = """ $ teamocil [options] [layout-name] | `--list` | Lists all available layouts in `~/.teamocil` | `--layout` | Takes a custom file path to a YAML layout file instead of `[layout-name]` | `--here` | Uses the current window as the layout’s first window | `--edit` | Opens the layout file with `$EDITOR` instead of executing it | `--show` | Shows the layout content instead of executing it """ [[commands.field]] id = "layout_name" label = "Layout name" description = "Name of a file in ~/.teamocil, without the .yml extension." type = "string" position = 0 sources = ["readme"] [[commands.field]] id = "layout_file" label = "Layout file" description = "Use a YAML file at a custom path instead of a layout name." type = "path" option = ["--layout"] path = { kind = "file", role = "input" } sources = ["readme"] [[commands.field]] id = "here" label = "Use current window" type = "boolean" option = ["--here"] sources = ["readme"] [[commands.field]] id = "edit" label = "Edit instead of run" type = "boolean" option = ["--edit"] sources = ["readme"] [[commands.field]] id = "show" label = "Show instead of run" type = "boolean" option = ["--show"] sources = ["readme"] [[commands.field]] id = "list" label = "List layouts" type = "boolean" option = ["--list"] sources = ["readme"] [[commands.task]] id = "run" label = "Run a layout" fields = ["layout_name", "here"] required = ["layout_name"] [[commands.task]] id = "edit" label = "Edit a layout" fields = ["layout_name", "edit"] required = ["layout_name", "edit"] set = { edit = [true] } [[commands.task]] id = "list" label = "List layouts" fields = ["list"] required = ["list"] set = { list = [true] } [[commands.group]] id = "basic" label = "Basic" fields = ["layout_name", "here", "edit", "show", "list"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["layout_file"]