fix(theme): dim background image toward dark and lift text contrast in image mode
On light themes the pane base is near-white (--chrome-bg), so lowering the background image opacity washed the wallpaper out to white instead of darkening it, and the theme's dark foreground text became unreadable. - terminal.css: in has-bg-image mode the dock gets a fixed dark base (#0d1117), so the opacity slider always dims toward dark regardless of theme - TerminalView: raise xterm minimumContrastRatio from 1 to 4.5 (WCAG AA, same as VS Code's terminal default) while an image is set; xterm treats the transparent background as black luminance, so dark foreground colors are lifted to stay readable over the wallpaper. Also fix the option name (minContrastRatio is silently ignored; the real key is minimumContrastRatio) - i18n: update backgroundImageDesc in zh-CN/zh-TW/en/ja - AGENTS.md: document the two image-mode invariants
This commit is contained in:
1 parent
f5acf26d1f
commit
e16c860c7a
7 files changed
+19
-5
No files matched your search
@@ -778,7 +778,11 @@ export const TerminalView: ForwardRefExoticComponent<TerminalViewProps & { ref?:
|
||||
allowTransparency: true,
|
||||
overviewRuler: { width: 9, showTopBorder: false, showBottomBorder: false },
|
||||
drawBoldTextInBrightColors: true,
|
||||
minContrastRatio: 1,
|
||||
// In image mode the xterm background is transparent (#00000000), which
|
||||
// xterm's contrast cache treats as black; a raised contrast floor lifts
|
||||
// dark foreground colors (light themes) enough to stay readable over
|
||||
// the wallpaper. Without an image keep 1 (off) to honor theme colors.
|
||||
minimumContrastRatio: tSettings.backgroundImage ? 4.5 : 1,
|
||||
automaticFontFallback: true,
|
||||
convertEol: false,
|
||||
windowsPty: { backend: 'conpty', buildNumber: 0 }
|
||||
@@ -1113,6 +1117,7 @@ export const TerminalView: ForwardRefExoticComponent<TerminalViewProps & { ref?:
|
||||
// terminals opened after the change, which reads as "the setting is broken".
|
||||
term.options.scrollback = tSettings.scrollback
|
||||
term.options.theme = withChromeColors(getThemeById(tSettings.themeId, settings.customThemes).colors as ITheme, Boolean(tSettings.backgroundImage))
|
||||
term.options.minimumContrastRatio = tSettings.backgroundImage ? 4.5 : 1
|
||||
scheduleFit()
|
||||
}, [tSettings, settings.customThemes, scheduleFit])
|
||||
|
||||
|
||||
@@ -26,6 +26,14 @@
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* With a background image the dock must dim toward a fixed dark base instead of
|
||||
the theme chrome color: on light themes --chrome-bg is near-white, so lowering
|
||||
the image opacity would wash the wallpaper out to white (text unreadable)
|
||||
rather than darkening it. */
|
||||
.terminal-view.has-bg-image .terminal-view-dock {
|
||||
background: #0d1117;
|
||||
}
|
||||
|
||||
/* Slim slate scrollbar for the xterm viewport — the native Windows one renders
|
||||
light track + arrow buttons that look broken on the dark surface. The thumb
|
||||
sits inset inside a wider grab lane (transparent border + padding-box clip)
|
||||
|
||||
Reference in new issue
Block a user