Light mode in settings UI only #12662

Closed
opened 2026-01-31 03:21:26 +00:00 by claunia · 5 comments
Owner

Originally created by @Lombra on GitHub (Feb 20, 2021).

Description of the new feature/enhancement

Since my shells are all dark, it makes sense to use dark mode to get the dark title bar, however Windows' idea of dark mode design means the new settings UI is an eyesore. I would like to have the settings UI use light mode.

Originally created by @Lombra on GitHub (Feb 20, 2021). # Description of the new feature/enhancement Since my shells are all dark, it makes sense to use dark mode to get the dark title bar, however Windows' idea of dark mode design means the new settings UI is an eyesore. I would like to have the settings UI use light mode.
Author
Owner

@zadjii-msft commented on GitHub (Feb 22, 2021):

Okay, sure. I'll slap this into the megathread for "theming", #3327. Something like settingsUi.requestedTheme: light|dark|system. Why not.

@zadjii-msft commented on GitHub (Feb 22, 2021): Okay, sure. I'll slap this into the megathread for "theming", #3327. Something like `settingsUi.requestedTheme: light|dark|system`. Why not.
Author
Owner

@zadjii-msft commented on GitHub (Feb 6, 2023):

Note

Walkthrough

  • Start by adding a new Theme object for the settings UI:
    • SettingsTheme in Theme.idl, quite similar to WindowTheme in the same file
    • Add a single ElementTheme RequestedTheme to that runtimeclass.
    • In MTSMSettings.h, define a new MTSM_THEME_SETTINGS_SETTINGS, again taking cues from the tab row version. The key for this one should just be "settings"
    • Add a THEME_OBJECT(SettingsTheme, MTSM_THEME_SETTINGS_SETTINGS); to Theme.h
    • Add the sui theme to the other places theme objects appear in Theme.cpp as well.
  • Actually use this new setting
    • MainPage::_UpdateBackgroundForMica is probably the right place for this, as it's already trying to set the RequestedTheme for the settings page.
    • Instead, use the settings.requestedTheme, if it is set.
@zadjii-msft commented on GitHub (Feb 6, 2023): > **Note** > ## Walkthrough * [ ] Start by adding a new Theme object for the settings UI: * [ ] `SettingsTheme` in `Theme.idl`, quite similar to `WindowTheme` in the same file * [ ] Add a single `ElementTheme RequestedTheme` to that `runtimeclass`. * [ ] In `MTSMSettings.h`, define a new `MTSM_THEME_SETTINGS_SETTINGS`, again taking cues from the tab row version. The key for this one should just be `"settings"` * [ ] Add a `THEME_OBJECT(SettingsTheme, MTSM_THEME_SETTINGS_SETTINGS);` to `Theme.h` * [ ] Add the sui theme to the other places theme objects appear in Theme.cpp as well. * [ ] Actually use this new setting * [ ] `MainPage::_UpdateBackgroundForMica` is probably the right place for this, as it's already trying to set the `RequestedTheme` for the settings page. * [ ] Instead, use the `settings.requestedTheme`, if it is set.
Author
Owner

@bundgaard commented on GitHub (Oct 3, 2023):

Hello,

I am looking into this at the moment, but I hit a snag, where I am unsure if I should proceed or you might have some pointers to a better solution.

Just some background on my machine, I am running Windows 11 Pro Version 10.0.22621 Build 22621.
To make it work on my machine I had to remove the isMicaAvailable check in MainPage.cpp function ::_UpdateBackgroundForMica(). I tested to print out the value from the DwmGetWindowAttribute() and it always returns DWMSBT_NONE, therefore I removed the check for Mica.

I assume the isMicaAvailable check is there for a reason for backward compatibility?

Also I will remove the DebugOutputStringW() and the switch case, if we proceed with this.

@bundgaard commented on GitHub (Oct 3, 2023): Hello, I am looking into this at the moment, but I hit a snag, where I am unsure if I should proceed or you might have some pointers to a better solution. Just some background on my machine, I am running **Windows 11 Pro Version 10.0.22621 Build 22621**. To make it work on my machine I had to remove the `isMicaAvailable` check in MainPage.cpp function ```::_UpdateBackgroundForMica()```. I tested to print out the value from the DwmGetWindowAttribute() and it always returns `DWMSBT_NONE`, therefore I removed the check for Mica. I assume the `isMicaAvailable` check is there for a reason for backward compatibility? Also I will remove the DebugOutputStringW() and the switch case, if we proceed with this.
Author
Owner

@zadjii-msft commented on GitHub (Oct 3, 2023):

I assume the isMicaAvailable check is there for a reason for backward compatibility?

That was introduced in https://github.com/microsoft/terminal/pull/14675. That might have more context

(it's almost 5pm here so I can take a look deeper in the morning)

@zadjii-msft commented on GitHub (Oct 3, 2023): > I assume the isMicaAvailable check is there for a reason for backward compatibility? That was introduced in https://github.com/microsoft/terminal/pull/14675. That might have more context (it's almost 5pm here so I can take a look deeper in the morning)
Author
Owner

@Stromlight commented on GitHub (May 11, 2024):

Description of the new feature/enhancement

Since my shells are all dark, it makes sense to use dark mode to get the dark title bar, however Windows' idea of dark mode design means the new settings UI is an eyesore. I would like to have the settings UI use light mode.

I don't think dark and white mode had any good feature so far I use lots of app but I don't find it's better use then brightness.instead of dark and white mode what about adding overview of app so user can get must out of it .

@Stromlight commented on GitHub (May 11, 2024): > # Description of the new feature/enhancement > > Since my shells are all dark, it makes sense to use dark mode to get the dark title bar, however Windows' idea of dark mode design means the new settings UI is an eyesore. I would like to have the settings UI use light mode. I don't think dark and white mode had any good feature so far I use lots of app but I don't find it's better use then brightness.instead of dark and white mode what about adding overview of app so user can get must out of it .
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#12662