{"id":20538679,"url":"https://github.com/alexcaza/weztermocil","last_synced_at":"2026-03-09T02:32:16.369Z","repository":{"id":229732742,"uuid":"771259015","full_name":"alexcaza/weztermocil","owner":"alexcaza","description":"Automatically create windows and panes in Wezterm (like Teamocil and iTermocil).","archived":false,"fork":false,"pushed_at":"2024-04-12T22:52:57.000Z","size":112,"stargazers_count":10,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-14T07:56:22.385Z","etag":null,"topics":["automation","developer-tools","itermocil","teamocil","wezterm"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexcaza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-03-13T01:03:56.000Z","updated_at":"2025-03-30T00:52:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"927762ba-83cf-42c3-b21b-a8ce43df36f8","html_url":"https://github.com/alexcaza/weztermocil","commit_stats":null,"previous_names":["alexcaza/weztermocil"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/alexcaza/weztermocil","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcaza%2Fweztermocil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcaza%2Fweztermocil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcaza%2Fweztermocil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcaza%2Fweztermocil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexcaza","download_url":"https://codeload.github.com/alexcaza/weztermocil/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcaza%2Fweztermocil/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30280854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:23:26.802Z","status":"ssl_error","status_checked_at":"2026-03-09T02:22:46.175Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","developer-tools","itermocil","teamocil","wezterm"],"created_at":"2024-11-16T00:47:26.752Z","updated_at":"2026-03-09T02:32:16.350Z","avatar_url":"https://github.com/alexcaza.png","language":"Rust","funding_links":[],"categories":["Tools"],"sub_categories":["Rust"],"readme":"# Introduction\nWeztermocil allows you to setup pre-configured layouts of windows and panes in [Wezterm](https://wezfurlong.org/wezterm/index.html), having each open in a specified directory and execute specified commands. You do this by writing YAML files to save your layouts. \n\nThis project was inspired by [Teamocil](https://github.com/remi/teamocil) and [iTermocil](https://github.com/TomAnthony/itermocil), and was designed to be able to use your existing Teamocil and iTermocil configuration files.\n\nhttps://github.com/alexcaza/weztermocil/assets/6993273/c4e009ee-dcff-46b2-87f3-a4f0d476830f\n\n\n\n\n**Weztermocil is still very early days, and things may break!**\n\n## Installation\n\n### Homebrew\n```bash\n# Install `weztermocil` via Homebrew\n# This may take a while to complete as it's building from source\n$ brew update\n$ brew install alexcaza/weztermocil \n```\n\n### Nix\nThe recommended way is to use an overlay within NixOS or home-manager.\n\nIf this package becomes stable, I might release it officially through nixpkgs.\n\n```nix\n(self: super: \n  let\n    src = super.fetchFromGitHub {\n      owner = \"alexcaza\";\n      repo = \"weztermocil\";\n      rev = \"v0.1.4\";\n      hash = \"sha256-9NWhGnLxZtHKHAUZ3Ha5NlMMZ7RZ0Irc50HyILX1MjA=\";\n    };\nin {\n    weztermocil = super.callPackage src {};\n})\n```\n\n### Post-install\n```shell\n# Create your layout directory\n$ mkdir ~/.weztermocil\n\n# Open a new sample file with your editor of choice (look for sample layouts in this very `README.md`)\n# There are also a variety of example files in the 'samples' directory of this repo\n$ $EDITOR ~/.weztermocil/sample.yml\n\n# Run your newly-created sample layout\n$ weztermocil sample\n\n# Note that you can also use ~/.teamocil or ~/.itermocil as your directory, if you're a teamocil/itermocil user.\n```\n\n\n## Usage\n\n```shell\n$ weztermocil [options] [layout-name]\n```\n\nAlternatively, if you have a `weztermocil.yml` file in the current directory you can simply run weztermocil and it will use that file, so you can have files inside your projects and sync via Github etc:\n\n```shell\n$ cd my_project\n$ weztermocil\n```\n\nYou can also add local layouts to a project by adding a `.weztermocil` directory. When calling `weztermocil --list`, you'll see the available layouts in the current directory listed as well.\n\nTo use a local layout, simply call it by name.\n```shell\n$ mkdir .weztermocil\n$ touch .weztermocil/sample.yml\n$ weztermocil sample\n```\n\nWeztermocil will follow this lookup path:\n- No layout name supplied\n  - look for weztermocil.yml file in current directory.\n- Layout name supplied\n  - Look for layout in local `.weztermocil` folder\n  - Look for layout in global `~/.weztermocil` folder\n\n### Global options\n\nWeztermocil _should be_ compatible with all of teamocil and itermocil's flags, and they _should_ all work the same way.\n\n| Option      | Description\n|-------------|----------------------------\n| `--list`    | Lists all available layouts in `~/.weztermocil`\n| `--help`    | Show all the options available to you\n\n### Layout options\n\n| Option      | Description\n|-------------|----------------------------\n| `--layout`  | Takes a custom file path to a YAML layout file instead of `[layout-name]`\n| `--here`    | Uses the current window as the layout’s first window\n| `--edit`    | Opens the layout file with `$EDITOR` instead of executing it\n| `--show`    | Shows the layout content instead of executing it\n\n## YAML Options\n\n### Session\n\n| Key       | Description\n|-----------|----------------------------\n| `windows` | An `Array` of windows/tabs\n\n### Windows\n\n| Key       | Description\n|-----------|----------------------------\n| `name`    | The window/tab name\n| `root`    | The path where all panes in the window will be started\n| `layout`  | The layout that will be used by Weztermocil\n| `panes`   | An `Array` of panes\n| `focus`   | If set to `true`, the window will be selected after the layout has been executed\n\n### Panes\n\nA pane can either be a `String` or a `Hash`. If it’s a `String`, Weztermocil will\ntreat it as a single-command pane.\n\n| Key        | Description\n|------------|----------------------------\n| `commands` | An `Array` of commands that will be ran when the pane is created\n| `focus`    | If set to `true`, the pane will be selected after the layout has been executed\n\n## Examples\n\n### Simple two pane window\n\n```yaml\nwindows:\n  - name: sample-two-panes\n    root: ~/Code/sample/www\n    layout: even-horizontal\n    panes:\n      - git status\n      - rails server\n```\n\n```\n.------------------.------------------.\n| (0)              | (1)              |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n'------------------'------------------'\n```\n\n### Simple three pane window\n\n```yaml\nwindows:\n  - name: sample-three-panes\n    root: ~/Code/sample/www\n    layout: main-vertical\n    panes:\n      - vim\n      - commands:\n        - git pull\n        - git status\n      - rails server\n```\n\n```\n.------------------.------------------.\n| (0)              | (1)              |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |------------------|\n|                  | (2)              |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n'------------------'------------------'\n```\n\n### Simple four pane window\n\n```yaml\nwindows:\n  - name: sample-four-panes\n    root: ~/Code/sample/www\n    layout: tiled\n    panes:\n      - vim\n      - foreman start web\n      - git status\n      - foreman start worker\n```\n\n```\n.------------------.------------------.\n| (0)              | (1)              |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|------------------|------------------|\n| (2)              | (3)              |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n'------------------'------------------'\n```\n\n### Two pane window with focus in second pane\n\n```yaml\nwindows:\n  - name: sample-two-panes\n    root: ~/Code/sample/www\n    layout: even-horizontal\n    panes:\n      - rails server\n      - commands:\n          - rails console\n        focus: true\n```\n\n```\n.------------------.------------------.\n| (0)              | (1) \u003cfocus here\u003e |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n|                  |                  |\n'------------------'------------------'\n```\n\n## Extras\n### Zsh autocompletion\n\nTo get autocompletion when typing `weztermocil \u003cTab\u003e` in a zsh session, add this line to your `~/.zshrc` file:\n\n```zsh\ncompctl -g '~/.weztermocil/*(:t:r)' weztermocil\n```\n\n[zsh-completions](https://github.com/zsh-users/zsh-completions) also provides\nadditional completion definitions for Teamocil.\n\n### Bash autocompletion\n\nTo get autocompletion when typing `weztermocil \u003cTab\u003e` in a bash session, add this line to your `~/.bashrc` file:\n\n```bash\ncomplete -W \"$(weztermocil --list)\" weztermocil\n```\n\n### Fish autocompletion\n\nTo get autocompletion when typing `weztermocil \u003cTab\u003e` in a fish session,\nadd the following file `~/.config/fish/completions/weztermocil.fish` with\nthe following content:\n\n```fish\ncomplete -x -c weztermocil -a '(weztermocil --list)'\n```\n\n# Thanks\nThis was heavily inspired by [Teamocil](https://github.com/remi/teamocil) and [iTermocil](https://github.com/TomAnthony/itermocil). Without these 2 projects, I wouldn't have decided to make the same thing for Wezterm.\n\n# License\nWeztermocil is © 2024 [Alex Caza](https://alexcaza.com) and may be freely\ndistributed under the [MIT license](https://github.com/alexcaza/weztermocil/blob/master/LICENSE.md).\nSee the `LICENSE.md` file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexcaza%2Fweztermocil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexcaza%2Fweztermocil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexcaza%2Fweztermocil/lists"}