initial transparency

This commit is contained in:
Boof2015
2026-06-11 17:30:07 -04:00
parent c56b86ba63
commit 0ee95fe480
20 changed files with 753 additions and 27 deletions
+19
View File
@@ -4,6 +4,7 @@ interface WindowCapabilityResolutionOptions {
platform: string
argv?: readonly string[]
env?: Record<string, string | undefined>
osVersion?: string
}
export const DEFAULT_WINDOW_CAPABILITIES: WindowCapabilities = {
@@ -11,6 +12,21 @@ export const DEFAULT_WINDOW_CAPABILITIES: WindowCapabilities = {
useNativeDragRegions: false,
supportsProgrammaticReposition: true,
supportsGeometryPersistence: true,
supportsBlurredBackground: false,
}
// Blurred mode uses accent-policy acrylic (SetWindowCompositionAttribute),
// which technically exists since Windows 10 1803, but drag/repaint performance
// is only dependable on Windows 11 22H2 (build 22621) — gate it there.
const WINDOWS_ACRYLIC_MIN_BUILD = 22621
function windowsBuildSupportsAcrylic(osVersion: string | undefined): boolean {
if (!osVersion) {
return false
}
const build = Number.parseInt(osVersion.split('.')[2] ?? '', 10)
return Number.isFinite(build) && build >= WINDOWS_ACRYLIC_MIN_BUILD
}
function readSwitchValue(argv: readonly string[], switchName: string): string | null {
@@ -80,6 +96,8 @@ export function resolveWindowCapabilities(options: WindowCapabilityResolutionOpt
return {
...DEFAULT_WINDOW_CAPABILITIES,
useNativeDragRegions: true,
supportsBlurredBackground: options.platform === 'darwin'
|| windowsBuildSupportsAcrylic(options.osVersion),
}
}
@@ -95,5 +113,6 @@ export function resolveWindowCapabilities(options: WindowCapabilityResolutionOpt
useNativeDragRegions: isNativeWayland,
supportsProgrammaticReposition: !isNativeWayland,
supportsGeometryPersistence: !isNativeWayland,
supportsBlurredBackground: false,
}
}