Code change:
private onConfigurationChange(config: IConfiguration, notify: boolean): void { let changed = false; <ins> function processChanged(didChange: boolean) { changed = changed || didChange; } </ins> if (isNative) { // Titlebar style <del> if (typeof config.window?.titleBarStyle === 'string' && config.window?.titleBarStyle !== this.titleBarStyle && (config.window.titleBarStyle === 'native' || config.window.titleBarStyle === 'custom')) { this.titleBarStyle = config.window.titleBarStyle; changed = true; } </del> <ins> processChanged((config.window.titleBarStyle === 'native' || config.window.titleBarStyle === 'custom') && this.titleBarStyle.handleChange(config.window?.titleBarStyle)); </ins> // Windows: Window Controls Overlay <del> if (isWindows && typeof config.window?.experimental?.windowControlsOverlay?.enabled === 'boolean' && config.window.experimental.windowControlsOverlay.enabled !== this.windowControlsOverlayEnabled) { this.windowControlsOverlayEnabled = config.window.experimental.windowControlsOverlay.enabled; changed = true; } </del> <ins> processChanged(isWindows && this.windowControlsOverlayEnabled.handleChange(config.window?.experimental?.windowControlsOverlay?.enabled)); </ins> // Windows: Sandbox <del> if (typeof config.window?.experimental?.useSandbox === 'boolean' && config.window.experimental.useSandbox !== this.windowSandboxEnabled) { this.windowSandboxEnabled = config.window.experimental.useSandbox; changed = true; } </del> <ins> processChanged(this.windowSandboxEnabled.handleChange(config.window?.experimental?.useSandbox)); </ins> // macOS: Native tabs <del> if (isMacintosh && typeof config.window?.nativeTabs === 'boolean' && config.window.nativeTabs !== this.nativeTabs) { this.nativeTabs = config.window.nativeTabs; changed = true; } </del> <ins> processChanged(isMacintosh && this.nativeTabs.handleChange(config.window?.nativeTabs)); </ins> // macOS: Native fullscreen <del> if (isMacintosh && typeof config.window?.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { this.nativeFullScreen = config.window.nativeFullScreen; changed = true; } </del> <ins> processChanged(isMacintosh && this.nativeFullScreen.handleChange(config.window?.nativeFullScreen)); </ins> // macOS: Click through (accept first mouse) <del> if (isMacintosh && typeof config.window?.clickThroughInactive === 'boolean' && config.window.clickThroughInactive !== this.clickThroughInactive) { this.clickThroughInactive = config.window.clickThroughInactive; changed = true; } </del> <ins> processChanged(isMacintosh && this.clickThroughInactive.handleChange(config.window?.clickThroughInactive)); </ins> // Update channel <del> if (typeof config.update?.mode === 'string' && config.update.mode !== this.updateMode) { this.updateMode = config.update.mode; changed = true; } </del> <ins> processChanged(this.updateMode.handleChange(config.update?.mode)); </ins> // On linux turning on accessibility support will also pass this flag to the chrome renderer, thus a restart is required if (isLinux && typeof config.editor?.accessibilitySupport === 'string' && config.editor.accessibilitySupport !== this.accessibilitySupport) {

Related discussion:
text: I think a class like this could be helpful: Usage: Originally posted by in
please let me know if you like this!
This class is primarily owned by Hence assigning to him.
Yes, feel free, I can review a PR, thanks.