New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exploration: Introduce a way for the integrated terminal to be themed #6979

Closed
Tyriar opened this Issue May 27, 2016 · 14 comments

Comments

Projects
None yet
5 participants
@Tyriar
Member

Tyriar commented May 27, 2016

In a post-#6766 world. Need to be able to customize the 16 primary colors as well as foreground and background as a minimum. Font size/line height and other layout-related settings may also be included?

@wycats

This comment has been minimized.

Show comment
Hide comment
@wycats

wycats Jul 9, 2016

Is there any workaround for this yet, or do we need to wait for terminal theming to be officially supported?

wycats commented Jul 9, 2016

Is there any workaround for this yet, or do we need to wait for terminal theming to be officially supported?

@Tyriar

This comment has been minimized.

Show comment
Hide comment
@Tyriar

Tyriar Jul 9, 2016

Member

@wycats no workaround currently.

Member

Tyriar commented Jul 9, 2016

@wycats no workaround currently.

@Jaykul

This comment has been minimized.

Show comment
Hide comment
@Jaykul

Jaykul Aug 23, 2016

Contributor

Can the hard-coded colors be separated a bit more?
Right now the dark and light colors are so close to each other you can barely tell them apart.

Contributor

Jaykul commented Aug 23, 2016

Can the hard-coded colors be separated a bit more?
Right now the dark and light colors are so close to each other you can barely tell them apart.

@Tyriar Tyriar added this to the September 2016 milestone Aug 23, 2016

@Tyriar

This comment has been minimized.

Show comment
Hide comment
@Tyriar

Tyriar Aug 29, 2016

Member

Splitting the contrast task into a new issue #11140

Member

Tyriar commented Aug 29, 2016

Splitting the contrast task into a new issue #11140

@gerane

This comment has been minimized.

Show comment
Hide comment
@gerane

gerane Oct 12, 2016

This is going to be a major headache to existing theme maintainers. I am not comfortable messing with peoples terminal colors of themes they already have installed and in use. There is too much variation in some aspects of themes and they should be separated and made easier to customize by users. Forcing users to go into tmtheme files to make a change is just not feasible.

Workspace themes, terminal themes and Syntax themes should remain separate. It is too hard to please all users by lumping all of these into one huge theme that requires editing a tmtheme which is way out of reach for most people.

If we look at the example of the current Workspace themes, Dark, Light, and High Contrast, it is hard enough just trying to please people with 3 options for the workspace themes. Some themes were meant to be a Dark background syntax theme with a Light Workspace theme or Light background syntax with dark background workspace, but this should not be something enforced by the theme. It should be something the user can easily toggle or choose a different option.

The user should have the option to select different themes for Workspace, Syntax and Terminal. I would say have these new PList values in their own Terminal themes, and then add a new command to select a terminal theme. Same goes for workspace themes.

EDIT: I bring these issues up, since I have close to 300 themes on the marketplace.

gerane commented Oct 12, 2016

This is going to be a major headache to existing theme maintainers. I am not comfortable messing with peoples terminal colors of themes they already have installed and in use. There is too much variation in some aspects of themes and they should be separated and made easier to customize by users. Forcing users to go into tmtheme files to make a change is just not feasible.

Workspace themes, terminal themes and Syntax themes should remain separate. It is too hard to please all users by lumping all of these into one huge theme that requires editing a tmtheme which is way out of reach for most people.

If we look at the example of the current Workspace themes, Dark, Light, and High Contrast, it is hard enough just trying to please people with 3 options for the workspace themes. Some themes were meant to be a Dark background syntax theme with a Light Workspace theme or Light background syntax with dark background workspace, but this should not be something enforced by the theme. It should be something the user can easily toggle or choose a different option.

The user should have the option to select different themes for Workspace, Syntax and Terminal. I would say have these new PList values in their own Terminal themes, and then add a new command to select a terminal theme. Same goes for workspace themes.

EDIT: I bring these issues up, since I have close to 300 themes on the marketplace.

@Tyriar

This comment has been minimized.

Show comment
Hide comment
@Tyriar

Tyriar Oct 12, 2016

Member

@gerane I understand where you're coming from, here are my thoughts on the topic:

  • This is opt in, the default colors apply fairly well generally.
  • Theme authors are currently forced to edit the tmTheme to support VS Code-specific paradigms like find highlight and selection colors (see https://github.com/Microsoft/vscode/wiki/Editor-decorations-&-colors).
  • It's a very unobtrusive change to the tmTheme's, not needing to touch any scopes at all.
  • Looking at your case, it should be fairly easy to script extracting terminal colors from a project like https://github.com/mbadolato/iTerm2-Color-Schemes. Regardless, I don't think we should be optimizing for this case. While it was great to get a bunch of themes out there initially, It's not particularly ideal that you have such a high number of themes as you don't have as much time to invest in tweaking them. I would hope if people really liked their theme and it didn't have the terminal theme they would make a PR.
  • I fought on the opposite side of this for a while and was eventually convinced. Now I would hate to see vscode users need to find separate workspace, syntax and terminal themes to get their editor looking nice. Ideally all a user would need to do to get the editor looking the way they want it to install a single theme.
Member

Tyriar commented Oct 12, 2016

@gerane I understand where you're coming from, here are my thoughts on the topic:

  • This is opt in, the default colors apply fairly well generally.
  • Theme authors are currently forced to edit the tmTheme to support VS Code-specific paradigms like find highlight and selection colors (see https://github.com/Microsoft/vscode/wiki/Editor-decorations-&-colors).
  • It's a very unobtrusive change to the tmTheme's, not needing to touch any scopes at all.
  • Looking at your case, it should be fairly easy to script extracting terminal colors from a project like https://github.com/mbadolato/iTerm2-Color-Schemes. Regardless, I don't think we should be optimizing for this case. While it was great to get a bunch of themes out there initially, It's not particularly ideal that you have such a high number of themes as you don't have as much time to invest in tweaking them. I would hope if people really liked their theme and it didn't have the terminal theme they would make a PR.
  • I fought on the opposite side of this for a while and was eventually convinced. Now I would hate to see vscode users need to find separate workspace, syntax and terminal themes to get their editor looking nice. Ideally all a user would need to do to get the editor looking the way they want it to install a single theme.
@Tyriar

This comment has been minimized.

Show comment
Hide comment
@Tyriar
Member

Tyriar commented Oct 12, 2016

@Tyriar Tyriar changed the title from Introduce a way for the integrated terminal to be themed to Exploration: Introduce a way for the integrated terminal to be themed Oct 13, 2016

@Tyriar Tyriar modified the milestones: Backlog, October 2016 Oct 13, 2016

@Tyriar

This comment has been minimized.

Show comment
Hide comment
@Tyriar

Tyriar Oct 13, 2016

Member

@gerane brings up some good points, I want to make sure we get this right so this probably won't land in October.

Member

Tyriar commented Oct 13, 2016

@gerane brings up some good points, I want to make sure we get this right so this probably won't land in October.

@gerane

This comment has been minimized.

Show comment
Hide comment
@gerane

gerane Oct 13, 2016

@Tyriar to be fair, using a white workspace theme with a dark syntax them is currently broken. The text is just not going to be readable in the workspace and menus etc. However, my assumption was that this was something that would be addressed when workspace themes were added. I personally like my editor all one shade of color, but I do know people who learned in a white editor with dark syntax, and thats what they like. That isn't possible in Code.

I am all for maintaining a single tmtheme for workspace/terminal/syntax, but I do feel there should be at least some form of user friendly way to override certain aspects. Right now there are no real override options at all unless you manually edit the tmtheme, which might get lost if the theme is ever updated. Themes are something that many feel very personal about and like to tweak, but tmtheme is not a very user friendly way for any sort of customization.

One idea that quickly came to mind that I quite liked at first, was leaving everything in a single tmtheme, but allowing a user to opt in to changing the terminal or workspace theme to one from another theme. VSCode could then just selectively use the certain aspects of the themes if the user opts to override the default. However, I think what I'll mention below is a better solution.

Another idea is to allow user overrides of certain theme settings via config file. Have everything default to the tmtheme unless the user uses their own value in the config. I personally like this sort of option the best. I think this would be especially beneficial for those settings that are not standard tmtheme settings, and are unique to VSCode. The huge majority of themes do not have these unique settings in them, because almost all of them were ported from existing themes. Especially since you are going to be continually adding these types of settings as time goes on.

@Tyriar I am really excited for those terminal themes. I do think a single tmtheme makes sense, but I also see value in giving some options to users, even if it is only the settings unique to VSCode .

gerane commented Oct 13, 2016

@Tyriar to be fair, using a white workspace theme with a dark syntax them is currently broken. The text is just not going to be readable in the workspace and menus etc. However, my assumption was that this was something that would be addressed when workspace themes were added. I personally like my editor all one shade of color, but I do know people who learned in a white editor with dark syntax, and thats what they like. That isn't possible in Code.

I am all for maintaining a single tmtheme for workspace/terminal/syntax, but I do feel there should be at least some form of user friendly way to override certain aspects. Right now there are no real override options at all unless you manually edit the tmtheme, which might get lost if the theme is ever updated. Themes are something that many feel very personal about and like to tweak, but tmtheme is not a very user friendly way for any sort of customization.

One idea that quickly came to mind that I quite liked at first, was leaving everything in a single tmtheme, but allowing a user to opt in to changing the terminal or workspace theme to one from another theme. VSCode could then just selectively use the certain aspects of the themes if the user opts to override the default. However, I think what I'll mention below is a better solution.

Another idea is to allow user overrides of certain theme settings via config file. Have everything default to the tmtheme unless the user uses their own value in the config. I personally like this sort of option the best. I think this would be especially beneficial for those settings that are not standard tmtheme settings, and are unique to VSCode. The huge majority of themes do not have these unique settings in them, because almost all of them were ported from existing themes. Especially since you are going to be continually adding these types of settings as time goes on.

@Tyriar I am really excited for those terminal themes. I do think a single tmtheme makes sense, but I also see value in giving some options to users, even if it is only the settings unique to VSCode .

@Tyriar

This comment has been minimized.

Show comment
Hide comment
@Tyriar

Tyriar Oct 23, 2016

Member

To clarify, this is now blocked on #3112 and #13534

Member

Tyriar commented Oct 23, 2016

To clarify, this is now blocked on #3112 and #13534

@jsingletaryiv

This comment has been minimized.

Show comment
Hide comment
@jsingletaryiv

jsingletaryiv Mar 29, 2017

I was just trying to change my terminal colors this morning... which as brought me here. Having themes for the integrated terminal would be a really nice feature. However, would it be possible to just add the foreground and background colors to the settings.json file for a quick color swap?

I see a lot of other settings in there so I was just curious. I will be looking forward to the terminal themes regardless.

-Cheers

jsingletaryiv commented Mar 29, 2017

I was just trying to change my terminal colors this morning... which as brought me here. Having themes for the integrated terminal would be a really nice feature. However, would it be possible to just add the foreground and background colors to the settings.json file for a quick color swap?

I see a lot of other settings in there so I was just curious. I will be looking forward to the terminal themes regardless.

-Cheers

@Tyriar

This comment has been minimized.

Show comment
Hide comment
@Tyriar

Tyriar Mar 29, 2017

Member

@jsingletaryiv they're coming in 1.11 or 1.12 😃

Member

Tyriar commented Mar 29, 2017

@jsingletaryiv they're coming in 1.11 or 1.12 😃

@jsingletaryiv

This comment has been minimized.

Show comment
Hide comment
@jsingletaryiv

jsingletaryiv Mar 29, 2017

@Tyriar - Well that is just music to my ears! I will definitely keep an eye out for them in upcoming releases. Thank you very much for the update.

-Cheers

jsingletaryiv commented Mar 29, 2017

@Tyriar - Well that is just music to my ears! I will definitely keep an eye out for them in upcoming releases. Thank you very much for the update.

-Cheers

@Tyriar

This comment has been minimized.

Show comment
Hide comment
@Tyriar

Tyriar Apr 20, 2017

Member

This is supported in the new workbench themes so I'll close this off in favor of that. Please track #3112 for updates on the API documentation.

You can also use the experimental settings 1.11 to override in your settings.json:

image

Member

Tyriar commented Apr 20, 2017

This is supported in the new workbench themes so I'll close this off in favor of that. Please track #3112 for updates on the API documentation.

You can also use the experimental settings 1.11 to override in your settings.json:

image

@Tyriar Tyriar closed this Apr 20, 2017

@vscodebot vscodebot bot locked and limited conversation to collaborators Nov 18, 2017

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.