mirror of
https://github.com/Eugeny/tabby.git
synced 2025-07-21 02:48:00 +00:00
Merge branch 'master' of github.com:Eugeny/terminus
This commit is contained in:
@@ -22,11 +22,16 @@ export interface WindowOptions {
|
|||||||
hidden?: boolean
|
hidden?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abstract class GlasstronWindow extends BrowserWindow {
|
||||||
|
blurType: string
|
||||||
|
abstract setBlur (_: boolean)
|
||||||
|
}
|
||||||
|
|
||||||
export class Window {
|
export class Window {
|
||||||
ready: Promise<void>
|
ready: Promise<void>
|
||||||
private visible = new Subject<boolean>()
|
private visible = new Subject<boolean>()
|
||||||
private closed = new Subject<void>()
|
private closed = new Subject<void>()
|
||||||
private window: BrowserWindow
|
private window: GlasstronWindow
|
||||||
private windowConfig: ElectronConfig
|
private windowConfig: ElectronConfig
|
||||||
private windowBounds: Rectangle
|
private windowBounds: Rectangle
|
||||||
private closing = false
|
private closing = false
|
||||||
@@ -84,7 +89,7 @@ export class Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.window = new BrowserWindow(bwOptions)
|
this.window = new glasstron.BrowserWindow(bwOptions)
|
||||||
|
|
||||||
this.window.once('ready-to-show', () => {
|
this.window.once('ready-to-show', () => {
|
||||||
if (process.platform === 'darwin') {
|
if (process.platform === 'darwin') {
|
||||||
@@ -129,21 +134,20 @@ export class Window {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
setVibrancy (enabled: boolean, type?: string): void {
|
setVibrancy (enabled: boolean, type?: string, userRequested?: boolean): void {
|
||||||
|
if (userRequested ?? true) {
|
||||||
this.lastVibrancy = { enabled, type }
|
this.lastVibrancy = { enabled, type }
|
||||||
|
}
|
||||||
if (process.platform === 'win32') {
|
if (process.platform === 'win32') {
|
||||||
if (parseFloat(os.release()) >= 10) {
|
if (parseFloat(os.release()) >= 10) {
|
||||||
glasstron.update(this.window, {
|
this.window.blurType = enabled ? type === 'fluent' ? 'acrylic' : 'blurbehind' : null
|
||||||
windows: { blurType: enabled ? type === 'fluent' ? 'acrylic' : 'blurbehind' : null },
|
this.window.setBlur(enabled)
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
DwmEnableBlurBehindWindow(this.window, enabled)
|
DwmEnableBlurBehindWindow(this.window, enabled)
|
||||||
}
|
}
|
||||||
} else if (process.platform === 'linux') {
|
} else if (process.platform === 'linux') {
|
||||||
glasstron.update(this.window, {
|
|
||||||
linux: { requestBlur: enabled },
|
|
||||||
})
|
|
||||||
this.window.setBackgroundColor(enabled ? '#00000000' : '#131d27')
|
this.window.setBackgroundColor(enabled ? '#00000000' : '#131d27')
|
||||||
|
this.window.setBlur(enabled)
|
||||||
} else {
|
} else {
|
||||||
this.window.setVibrancy(enabled ? 'dark' : null as any) // electron issue 20269
|
this.window.setVibrancy(enabled ? 'dark' : null as any) // electron issue 20269
|
||||||
}
|
}
|
||||||
@@ -360,24 +364,21 @@ export class Window {
|
|||||||
this.disableVibrancyWhileDragging = value
|
this.disableVibrancyWhileDragging = value
|
||||||
})
|
})
|
||||||
|
|
||||||
this.window.on('will-move', () => {
|
let moveEndedTimeout: number|null = null
|
||||||
|
const onBoundsChange = () => {
|
||||||
if (!this.lastVibrancy?.enabled || !this.disableVibrancyWhileDragging) {
|
if (!this.lastVibrancy?.enabled || !this.disableVibrancyWhileDragging) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let timeout: number|null = null
|
this.setVibrancy(false, undefined, false)
|
||||||
const oldVibrancy = this.lastVibrancy
|
if (moveEndedTimeout) {
|
||||||
this.setVibrancy(false)
|
clearTimeout(moveEndedTimeout)
|
||||||
const onMove = () => {
|
|
||||||
if (timeout) {
|
|
||||||
clearTimeout(timeout)
|
|
||||||
}
|
}
|
||||||
timeout = setTimeout(() => {
|
moveEndedTimeout = setTimeout(() => {
|
||||||
this.window.off('move', onMove)
|
this.setVibrancy(this.lastVibrancy.enabled, this.lastVibrancy.type)
|
||||||
this.setVibrancy(oldVibrancy.enabled, oldVibrancy.type)
|
}, 50)
|
||||||
}, 500)
|
|
||||||
}
|
}
|
||||||
this.window.on('move', onMove)
|
this.window.on('move', onBoundsChange)
|
||||||
})
|
this.window.on('resize', onBoundsChange)
|
||||||
}
|
}
|
||||||
|
|
||||||
private destroy () {
|
private destroy () {
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
"graceful-fs": "^4.2.4",
|
"graceful-fs": "^4.2.4",
|
||||||
"html-loader": "0.5.5",
|
"html-loader": "0.5.5",
|
||||||
"json-loader": "0.5.7",
|
"json-loader": "0.5.7",
|
||||||
|
"lru-cache": "^6.0.0",
|
||||||
"node-abi": "^2.19.3",
|
"node-abi": "^2.19.3",
|
||||||
"node-gyp": "^7.1.2",
|
"node-gyp": "^7.1.2",
|
||||||
"node-sass": "^5.0.0",
|
"node-sass": "^5.0.0",
|
||||||
|
@@ -5,7 +5,7 @@ import { Observable, Subject } from 'rxjs'
|
|||||||
import { Injectable, NgZone, EventEmitter } from '@angular/core'
|
import { Injectable, NgZone, EventEmitter } from '@angular/core'
|
||||||
import { ElectronService } from './electron.service'
|
import { ElectronService } from './electron.service'
|
||||||
import { Logger, LogService } from './log.service'
|
import { Logger, LogService } from './log.service'
|
||||||
import { isWindowsBuild, WIN_BUILD_FLUENT_BG_MOVE_BUG_FIXED, WIN_BUILD_FLUENT_BG_SUPPORTED } from '../utils'
|
import { isWindowsBuild, WIN_BUILD_FLUENT_BG_SUPPORTED } from '../utils'
|
||||||
|
|
||||||
export enum Platform {
|
export enum Platform {
|
||||||
Linux = 'Linux',
|
Linux = 'Linux',
|
||||||
@@ -176,10 +176,7 @@ export class HostAppService {
|
|||||||
this.configChangeBroadcast.next()
|
this.configChangeBroadcast.next()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
if (
|
if (isWindowsBuild(WIN_BUILD_FLUENT_BG_SUPPORTED)) {
|
||||||
isWindowsBuild(WIN_BUILD_FLUENT_BG_SUPPORTED) &&
|
|
||||||
!isWindowsBuild(WIN_BUILD_FLUENT_BG_MOVE_BUG_FIXED)
|
|
||||||
) {
|
|
||||||
electron.ipcRenderer.send('window-set-disable-vibrancy-while-dragging', true)
|
electron.ipcRenderer.send('window-set-disable-vibrancy-while-dragging', true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,7 +4,6 @@ export const WIN_BUILD_CONPTY_SUPPORTED = 17692
|
|||||||
export const WIN_BUILD_CONPTY_STABLE = 18309
|
export const WIN_BUILD_CONPTY_STABLE = 18309
|
||||||
export const WIN_BUILD_WSL_EXE_DISTRO_FLAG = 17763
|
export const WIN_BUILD_WSL_EXE_DISTRO_FLAG = 17763
|
||||||
export const WIN_BUILD_FLUENT_BG_SUPPORTED = 17063
|
export const WIN_BUILD_FLUENT_BG_SUPPORTED = 17063
|
||||||
export const WIN_BUILD_FLUENT_BG_MOVE_BUG_FIXED = 18917
|
|
||||||
|
|
||||||
export function isWindowsBuild (build: number): boolean {
|
export function isWindowsBuild (build: number): boolean {
|
||||||
return process.platform === 'win32' && parseFloat(os.release()) >= 10 && parseInt(os.release().split('.')[2]) >= build
|
return process.platform === 'win32' && parseFloat(os.release()) >= 10 && parseInt(os.release().split('.')[2]) >= build
|
||||||
|
@@ -4712,7 +4712,7 @@ lru-cache@^4.0.1:
|
|||||||
|
|
||||||
lru-cache@^6.0.0:
|
lru-cache@^6.0.0:
|
||||||
version "6.0.0"
|
version "6.0.0"
|
||||||
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||||
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
||||||
dependencies:
|
dependencies:
|
||||||
yallist "^4.0.0"
|
yallist "^4.0.0"
|
||||||
|
Reference in New Issue
Block a user