Ability to save a Windows Terminal pane layout as a profile for easy startup #11806

Open
opened 2026-01-31 02:58:03 +00:00 by claunia · 0 comments
Owner

Originally created by @KasimAhmic on GitHub (Dec 15, 2020).

Description of the new feature/enhancement

image

In my dev cycles, I usually use 4-6 different pieces of software such as Redis servers, yarn, storybook, NGINX, etc. and it gets to be very tedious launching each of those one after the other. If possible, I'd like to be able to save a "snapshot" or "profile" of my current layout with the directories. From there, it'd be nice to be able to run commands on startup as well so for example, pane 1 launches NGINX in X directory, pane 2 launches Redis in Y directory, pane 3 launches yarn run dev in Z directory, so on and so forth.

This would solve the problem of having to manually launch multiple utilities to get started with your development. As for how the user would use it, I'd imagine a command (ctrl+shift+s) would save the layout and directories in a profile and allow them to launch the profile via the existing profile system.

As a disclaimer, I do know about the wt command with the split-pane option but I've personally not been able to get the configuration I've wanted. This solution would be a bit more user friendly as well so that's a benefit as well. Apologies if this is already an existing feature; if so, please let me know!

Proposed technical implementation details (optional)

The simplest method I can think of would be a launch config in JSON format.

  • name - The name of the profile or layout
  • paneLayout - [X, Y] - Number of columns (X) and rows (Y) to create in the tab
  • paneSettings - The launch config for each pane including the working
    • workingDirectory - The directory to navigate to in this pane
    • launchCommand - Optional command to run in this pane
{
  "name": "Project X Local Dev",
  "paneLayout": [3, 2],
  "paneSettings": [
    {
      "workingDirectory": "C:/Users/developer/project/server",
      "launchCommand": "nginx.exe"
    },
    {
      "workingDirectory": "C:/Users/developer/project/server",
      "launchCommand": "redis.exe"
    },
    {
      "workingDirectory": "C:/Users/developer/project/server",
      "launchCommand": "yarn run dev"
    },
    {
      "workingDirectory": "C:/Users/developer/project/client",
      "launchCommand": "yarn run dev"
    },
    {
      "workingDirectory": "C:/Users/developer/project/client",
      "launchCommand": "yarn storybook"
    }
  ]
}

Edit

I've been able to achieve something similar with the wt command but it's not ideal. It doesn't seem like you're able to focus on individual panes so each horizontal split gets smaller and smaller.

wt -p "PowerShell Core" --title "Project" -d "directory" powershell yarn run dev`;
split-pane -p "PowerShell Core" -H -d "directory" powershell yarn run dev`;
split-pane -p "PowerShell Core" -H -d "directory" powershell yarn run dev`;
split-pane -p "PowerShell Core" -H -d "directory" powershell yarn storybook`;
split-pane -p "PowerShell Core" -H -d "directory" powershell yarn storybook -p 6007;
Originally created by @KasimAhmic on GitHub (Dec 15, 2020). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> # Description of the new feature/enhancement ![image](https://user-images.githubusercontent.com/1304204/102233453-478c0880-3ebe-11eb-9e47-40df8ec7b035.png) <!-- A clear and concise description of what the problem is that the new feature would solve. Describe why and how a user would use this new functionality (if applicable). --> In my dev cycles, I usually use 4-6 different pieces of software such as Redis servers, yarn, storybook, NGINX, etc. and it gets to be very tedious launching each of those one after the other. If possible, I'd like to be able to save a "snapshot" or "profile" of my current layout with the directories. From there, it'd be nice to be able to run commands on startup as well so for example, pane 1 launches NGINX in X directory, pane 2 launches Redis in Y directory, pane 3 launches `yarn run dev` in Z directory, so on and so forth. This would solve the problem of having to manually launch multiple utilities to get started with your development. As for how the user would use it, I'd imagine a command (`ctrl+shift+s`) would save the layout and directories in a profile and allow them to launch the profile via the existing profile system. As a disclaimer, I do know about the `wt` command with the `split-pane` option but I've personally not been able to get the configuration I've wanted. This solution would be a bit more user friendly as well so that's a benefit as well. Apologies if this is already an existing feature; if so, please let me know! # Proposed technical implementation details (optional) <!-- A clear and concise description of what you want to happen. --> The simplest method I can think of would be a launch config in JSON format. - `name` - The name of the profile or layout - `paneLayout` - [X, Y] - Number of columns (X) and rows (Y) to create in the tab - `paneSettings` - The launch config for each pane including the working - `workingDirectory` - The directory to navigate to in this pane - `launchCommand` - Optional command to run in this pane ``` { "name": "Project X Local Dev", "paneLayout": [3, 2], "paneSettings": [ { "workingDirectory": "C:/Users/developer/project/server", "launchCommand": "nginx.exe" }, { "workingDirectory": "C:/Users/developer/project/server", "launchCommand": "redis.exe" }, { "workingDirectory": "C:/Users/developer/project/server", "launchCommand": "yarn run dev" }, { "workingDirectory": "C:/Users/developer/project/client", "launchCommand": "yarn run dev" }, { "workingDirectory": "C:/Users/developer/project/client", "launchCommand": "yarn storybook" } ] } ``` # Edit I've been able to achieve something similar with the `wt` command but it's not ideal. It doesn't seem like you're able to focus on individual panes so each horizontal split gets smaller and smaller. ``` wt -p "PowerShell Core" --title "Project" -d "directory" powershell yarn run dev`; split-pane -p "PowerShell Core" -H -d "directory" powershell yarn run dev`; split-pane -p "PowerShell Core" -H -d "directory" powershell yarn run dev`; split-pane -p "PowerShell Core" -H -d "directory" powershell yarn storybook`; split-pane -p "PowerShell Core" -H -d "directory" powershell yarn storybook -p 6007; ```
claunia added the Issue-FeatureNeeds-TriageNeeds-Tag-Fix labels 2026-01-31 02:58:03 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#11806