Open zadjii-msft opened 4 years ago
Not sure if this task is just talking about extending the theme flexibility but my feature-request may be related... https://github.com/microsoft/terminal/issues/3687 ?
Perhaps you could allow the importing of a ResourceDictionary - or a JSON which gets translated into a valid Xaml ResourceDictonary ingested on app startup.
Hey, @zadjii-msft , just some thoughts about this, I hope you don't mind:
"tabBackground": "terminalBackground"
- I'm not sure that I understand, but since tabs and the background use different resources, don't think so (except where the tab is deselected. Then the transparent brush is used to draw the tab).Those are just my thoughts, how exactly would it end up is your call, of course.
As a start, could the tab background be calculated based on the background setting of the theme? That would already help by not having that jarring #000 there.
When can we have this feature released?
When it's done being developed.
This could be a really good start, Chrome OS Terminal now colors the tab by the background color
Coming from #7363 , the acrylic setting should extend into the tab space.
When acrylic is enabled, the tab color (which is currently never acrylic) becomes inconsistent with the background (where acrylic is applied).
See below - it appears, at a glance, that the first tab is active, because the color is a close match to the acrylic average. But in reality, the black tab in the middle is active.
@mikemaccana ahhhhh, okay I think I'm getting it better now (with more coffee). What you're really looking for is the #702/#3774 subset of this issue. The spec over at #5772 covers this as "tab.background": "terminalBackground"
, so the tab color will automatically match the terminal's background brush (including acrylic).
I leave this here as a reference: Fluent XAML Theme Editor
@zadjii-msft missed this back in August, but yes exactly! Thanks. 🙂
As discussed in the following issue, there are too many ideas to achieve, including but not limited to the title bar, the current label, the hover label, the background color, and the different settings for the title bar. There is no doubt that it will eventually Import to build a theme system. My confusion lies in whether such a "grand" personalized setting system is needed for WindowsTerminal? I think I can sort out which parts can be prioritized (although Microsoft may not be interested in this).
The Fluent Design System is constantly evolving, it is always in development, and less than 1/3 of the system applications adopt them, so Windows will never have a unified user interface, because the speed of applications using the latest design language will never keep up The speed of design updates. Moreover, before the release of WinUI3, I am afraid that all Win32 applications will not have much design changes-this is because Microsoft seems to be hesitant on whether to use XAML to build new applications.
Based on this, we discuss the design of Windows Terminal to minimize design changes and be compatible with existing designs as much as possible.
Windows Terminal allows you to set the background, but when the background uses acrylic, you will encounter an extremely ugly title bar (tab page bar), so the first consideration is to extend the acrylic effect to the title bar (tab page bar).
image
Here is a question, how to deal with the current label color, I personally think that the label color and the background of the current page can be consistent. If the current background color is a picture, the theme color will be automatically extracted from the picture. If you do this, you only need to specify two colors:
Title bar color Window background color (=label color)
There is another solution here, which I saw in the Files App, using a completely floating tab design.
In this case, the color of the title bar (tab page bar) is the same as the background color of the window. If a picture is used, the picture is tiled or full in the current window. Add a rounded rectangle background to the current label to show the selection, as shown in the figure.
I think these adjustments will not increase too much workload and are in harmony with Fluent Design. I want Microsoft to work as quickly as possible. I really look forward to Sun Valley, but so far, I think the biggest changes may be the "alarm and clock app" and the news flow of the taskbar.
latest in dev/migrie/fhl/theming-2022-prototype
. Serialization is easy. Binding to the Terminal color is harder. We could just bubble it as PropertyChanged every time, but then there's the complication of having the AppHost then check which things it needs to update every time. That is annoying.
What I really wanted was just a Brush
I could define and then have a bunch of different things bind to that so they'd change automagically
Thoughts:
StaticResource
in App.xaml
combined with the Binding Path=Brush
thing didn't work AT ALL. TitlebarViewModel
that the Titlebar
is bound to, so the TerminalPage
can change the titlebarViewModel.BackgroundBRush()
to match the Terminal one. that would work, but isn't that just the same as needing the propertychanged handler?TerminalBackground
to the App
resources, and then.... gah how do we bind the Titlebar
BG to the TerminalBackground.Brush
? This doesn't work at all. That's literally what I did try before. Why'd I think that would work?
As I mentioned in https://github.com/microsoft/terminal/issues/3322#issuecomment-546391285, we've been dancing around the idea of "XAML theming" for a while in a bunch of issues, but never had one place to track all the requested functionality. This will serve as the master thread for those requests.
Ideally, these are something that's more powerful than just setting the "color scheme". This would control sizing, coloration of UI elements of the app itself, not just the colors of the terminal contents. Consider things like themes in VsCode, Sublime Text, where there are schemes that can control the colorization of the buffer, and themes that can change the appearance of the app itself.
UI elements to be able to control:
compact
,default
, andtouch
friendly tab row sizesOther ideas:
cursorColor = yellow
) (#7522)Currently we don't have all that many UI elements, but in a hypothetical world with a command palette (#2046) and a search box (#605), there'll be even more UI elements to be able to control.
I know @cinnamon-msft had some mockups of "themes".
I imagine that these would be something that would be easier to control with XAML resources somehow, though I'm not sure how technically possible it would be to have the user specify a XAML file and have us load it into our resources at runtime. But that might be an option to pursue as an alternative to adding tons of new settings that will need to be parsed and applied manually at runtime.
Potential solution design:
Terminal should be able to look beautiful, and also like this:
Followup flow chart: