(Variations) Tab Color Involvement in Schemes #12908

Closed
opened 2026-01-31 03:28:38 +00:00 by claunia · 4 comments
Owner

Originally created by @justincpresley on GitHub (Mar 8, 2021).

Description of the new feature/enhancement

I propose that a scheme (set within settings) should have different variations. A scheme could adapt it's appearance to match a certain variation which would give a color scheme tons of potential. In Standard practice, there would be a 'default' variation and these variations have the ability to change how the tab is colored.

Proposed technical implementation details

When right clicking a tab in the terminal, instead of "Colors", you would see "Variations". The standard tab colors currently would be included if the variable "defaultVariationsIncluded" is True. If this is True, and the default variations are not overrided, they would simply change the tab color as they currently do now. If this is False, you would only see the defined variations. The "default" variation is special as this is the first variation the theme starts out with.

Furthermore, when you right click the tab under "Variations", the color shown could be the overall color of the theme or just the tabColor.

The scheme would be included in the same way that it currently is now.
Here is an example of how the schemes variable in settings would change:

  "schemes":
  [
    {
      "name": "Afterglow",
      "background": "#212121",
      "foreground": "#d0d0d0",
      "selectionBackground": "#303030",
      "cursorColor": "#d0d0d0"

      "black": "#151515",
      "red": "#ac4142",
      "green": "#7e8e50",
      "yellow": "#e5b567",
      "blue": "#6c99bb",
      "purple": "#9f4e85",
      "cyan": "#7dd6cf",
      "white": "#d0d0d0",
      "brightBlack": "#505050",
      "brightRed": "#ac4142",
      "brightGreen": "#7e8e50",
      "brightYellow": "#e5b567",
      "brightBlue": "#6c99bb",
      "brightPurple": "#9f4e85",
      "brightCyan": "#7dd6cf",
      "brightWhite": "#f5f5f5",
    }
  ]

TO

  "schemes":
  [
    {
      "name":"Afterglow",
      "defaultVariationsIncluded":True,
      "variations":{
          "name" : "default",
          "tabColor":"#000000",
          "cursorColor": "#FFFFFF",
          "selectionBackground": "#FFFFFF",
          "background" : "#0C0C0C",
          "foreground" : "#CCCCCC",
  
          "black": "#151515",
          "red": "#ac4142",
          "green": "#7e8e50",
          "yellow": "#e5b567",
          "blue": "#6c99bb",
          "purple": "#9f4e85",
          "cyan": "#7dd6cf",
          "white": "#d0d0d0",
          "brightBlack": "#505050",
          "brightRed": "#ac4142",
          "brightGreen": "#7e8e50",
          "brightYellow": "#e5b567",
          "brightBlue": "#6c99bb",
          "brightPurple": "#9f4e85",
          "brightCyan": "#7dd6cf",
          "brightWhite": "#f5f5f5",
      }
    }
  ]

Just from looking at this, you can see how expansive this concept of a variation is.

Reason Why and Personal Experience

I proposed this idea as I am / have been working with the windows terminal (the normal release through the Microsoft store) for quite some time now. I work a lot with multiple terminals and each terminal is responsible for a certain 'job'. Denoting the terminals just by tab color (a limited number of them) has become not as clear as it can be.

Originally created by @justincpresley on GitHub (Mar 8, 2021). # Description of the new feature/enhancement I propose that a scheme (set within settings) should have different variations. A scheme could adapt it's appearance to match a certain variation which would give a color scheme tons of potential. In Standard practice, there would be a 'default' variation and these variations have the ability to change how the tab is colored. # Proposed technical implementation details When right clicking a tab in the terminal, instead of "Colors", you would see "Variations". The standard tab colors currently would be included if the variable "defaultVariationsIncluded" is True. If this is True, and the default variations are not overrided, they would simply change the tab color as they currently do now. If this is False, you would only see the defined variations. The "default" variation is special as this is the first variation the theme starts out with. Furthermore, when you right click the tab under "Variations", the color shown could be the overall color of the theme or just the tabColor. The scheme would be included in the same way that it currently is now. Here is an example of how the schemes variable in settings would change: "schemes": [ { "name": "Afterglow", "background": "#212121", "foreground": "#d0d0d0", "selectionBackground": "#303030", "cursorColor": "#d0d0d0" "black": "#151515", "red": "#ac4142", "green": "#7e8e50", "yellow": "#e5b567", "blue": "#6c99bb", "purple": "#9f4e85", "cyan": "#7dd6cf", "white": "#d0d0d0", "brightBlack": "#505050", "brightRed": "#ac4142", "brightGreen": "#7e8e50", "brightYellow": "#e5b567", "brightBlue": "#6c99bb", "brightPurple": "#9f4e85", "brightCyan": "#7dd6cf", "brightWhite": "#f5f5f5", } ] TO "schemes": [ { "name":"Afterglow", "defaultVariationsIncluded":True, "variations":{ "name" : "default", "tabColor":"#000000", "cursorColor": "#FFFFFF", "selectionBackground": "#FFFFFF", "background" : "#0C0C0C", "foreground" : "#CCCCCC", "black": "#151515", "red": "#ac4142", "green": "#7e8e50", "yellow": "#e5b567", "blue": "#6c99bb", "purple": "#9f4e85", "cyan": "#7dd6cf", "white": "#d0d0d0", "brightBlack": "#505050", "brightRed": "#ac4142", "brightGreen": "#7e8e50", "brightYellow": "#e5b567", "brightBlue": "#6c99bb", "brightPurple": "#9f4e85", "brightCyan": "#7dd6cf", "brightWhite": "#f5f5f5", } } ] Just from looking at this, you can see how expansive this concept of a variation is. # Reason Why and Personal Experience I proposed this idea as I am / have been working with the windows terminal (the normal release through the Microsoft store) for quite some time now. I work a lot with multiple terminals and each terminal is responsible for a certain 'job'. Denoting the terminals just by tab color (a limited number of them) has become not as clear as it can be.
Author
Owner

@skyline75489 commented on GitHub (Mar 8, 2021):

I think #3327 covers this?

@skyline75489 commented on GitHub (Mar 8, 2021): I think #3327 covers this?
Author
Owner

@zadjii-msft commented on GitHub (Mar 9, 2021):

So, is what you're really trying to get at just, "I want to change the color scheme at runtime", is that right? Because there might be an easier way to do this, with the command palette and the "Set Color Scheme" command:

cmdpal-set-color-scheme

Hit Ctrl+Shift+P, enter "set color scheme", then pick which scheme you want. Would that work for you? Maybe not as simple as doing it in the tab context menu, but also probably more powerful

@zadjii-msft commented on GitHub (Mar 9, 2021): So, is what you're really trying to get at just, "I want to change the color scheme at runtime", is that right? Because there might be an easier way to do this, with the command palette and the "Set Color Scheme" command: ![cmdpal-set-color-scheme](https://user-images.githubusercontent.com/18356694/110504187-88ad4680-80c2-11eb-90aa-62547f3e1687.gif) Hit <kbd>Ctrl+Shift+P</kbd>, enter "set color scheme", then pick which scheme you want. Would that work for you? Maybe not as simple as doing it in the tab context menu, but also probably more powerful
Author
Owner

@justincpresley commented on GitHub (Mar 9, 2021):

Yes and No. Part of the request is to change the appearance at run time and your response has provided a quick way to do that. The main part though is having multiple different appearances for a theme and indicating that to the user through the tab / tab menu.

For example, I run/use often Ubuntu, Kali-Linux, Powershell, and the Command Line while working. All of these have different themes, and I use multiple Ubuntu/Kali Instances for representing different 'nodes'. In my setup, a Ubuntu and Kali instance have very different themes to indicate that they are indeed different OS / interfaces. However, representing different Ubuntu instances gets tricky as I currently I can only change the tab color / tab naming.

A messy situation could be having tons of themes labeled "Ubuntu-Red", "Ubuntu-Blue" etc and switch via the example you showed. I just figured that there could be better way.

@justincpresley commented on GitHub (Mar 9, 2021): Yes and No. Part of the request is to change the appearance at run time and your response has provided a quick way to do that. The main part though is having multiple different appearances for a theme and indicating that to the user through the tab / tab menu. For example, I run/use often Ubuntu, Kali-Linux, Powershell, and the Command Line while working. All of these have different themes, and I use multiple Ubuntu/Kali Instances for representing different 'nodes'. In my setup, a Ubuntu and Kali instance have very different themes to indicate that they are indeed different OS / interfaces. However, representing different Ubuntu instances gets tricky as I currently I can only change the tab color / tab naming. A messy situation could be having tons of themes labeled "Ubuntu-Red", "Ubuntu-Blue" etc and switch via the example you showed. I just figured that there could be better way.
Author
Owner

@zadjii-msft commented on GitHub (Mar 26, 2021):

Eh, after thinking on this for a while, I'm not sure how having multiple different schemes is all that different from having multiple variations of a scheme all in the same scheme object. Whenever #1571 lands, you'll be able to slap custom actions into the dropdown for a tab as well, so you could throw commands for "Set Color Scheme: Ubunutu-Red", "Set Color Scheme: Ubunutu-Blue", etc, into that menu.

A neat idea, but one with simple enough workarounds that it isn't work the added complexity.

@zadjii-msft commented on GitHub (Mar 26, 2021): Eh, after thinking on this for a while, I'm not sure how having multiple different schemes is all that different from having multiple variations of a scheme all in the same scheme object. Whenever #1571 lands, you'll be able to slap custom actions into the dropdown for a tab as well, so you could throw commands for "Set Color Scheme: Ubunutu-Red", "Set Color Scheme: Ubunutu-Blue", etc, into that menu. A neat idea, but one with simple enough workarounds that it isn't work the added complexity.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#12908