diff --git a/src/background.ts b/src/background.ts index 79dd9d06..7d74590f 100644 --- a/src/background.ts +++ b/src/background.ts @@ -54,7 +54,10 @@ app.on('ready', async () => { PoeWindow.startPolling() setupConfig() setupShowHide() - createWindow() + setTimeout( + createWindow, // fix: linux window black instead of transparent + process.platform === 'linux' ? 1000 : 0 + ) createTray() setupShortcuts() diff --git a/src/main/positioning.ts b/src/main/positioning.ts index 07ed69c3..f5521679 100644 --- a/src/main/positioning.ts +++ b/src/main/positioning.ts @@ -19,22 +19,16 @@ let browserViewExternal: BrowserView | undefined export function showWindow () { positionWindow(win) - const wasLockedLinux = isWindowLocked if (isWindowShown && isWindowLocked) { logger.debug('Hide the window (was left in background)', { source: 'price-check', fn: 'showWindow' }) - hideWindow() + hideWindow(true) } + isWindowShown = true win.showInactive() - if (process.platform === 'linux') { - if (wasLockedLinux && config.get('altTabToGame')) { - win.setSkipTaskbar(true) // fix: GNOME window is ready - } - win.setAlwaysOnTop(true) // X11: alwaysOnTop resets on show/hide - } } -function hideWindow () { +function hideWindow (willShow?: boolean) { logger.verbose('Hide window', { source: 'price-check', fn: 'hideWindow', wasLocked: isWindowLocked }) isWindowShown = false @@ -42,13 +36,15 @@ function hideWindow () { win.setSkipTaskbar(true) win.setAlwaysOnTop(true, 'screen-saver') } - win.hide() + if (!willShow) { + win.hide() + } win.setIgnoreMouseEvents(true) if (isWindowLocked) { isWindowLocked = false PoeWindow.isActive = true - if (process.platform === 'win32') { + if (process.platform === 'win32' && !willShow) { windowManager.focusWindowById(PoeWindow.pid!) } if (browserViewExternal) { diff --git a/src/main/window.ts b/src/main/window.ts index 9820793d..71ee8dfa 100644 --- a/src/main/window.ts +++ b/src/main/window.ts @@ -19,6 +19,7 @@ export function createWindow () { frame: false, show: false, transparent: true, + fullscreen: true, // linux does not support changing at runtime, add config? resizable: false, // backgroundColor: '#2d3748', // gray-800 webPreferences: { @@ -38,9 +39,10 @@ export function createWindow () { checkForUpdates() } - win.setAlwaysOnTop(true, 'screen-saver') win.setIgnoreMouseEvents(true) win.once('ready-to-show', () => { + // place here because of linux + win.setAlwaysOnTop(true, 'screen-saver') // win.show() }) }