From 364344c3ca471b895878ff70ec2c19677de6816f Mon Sep 17 00:00:00 2001 From: boksbc Date: Mon, 11 May 2026 21:57:39 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20HUD=20BrowserWindow=20=E2=80=94=20loads?= =?UTF-8?q?=20fox.pxo.at/hud=20with=20preload=20injection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/hud.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 electron/hud.js diff --git a/electron/hud.js b/electron/hud.js new file mode 100644 index 0000000..74b04d1 --- /dev/null +++ b/electron/hud.js @@ -0,0 +1,53 @@ +const { BrowserWindow, screen } = require('electron'); +const path = require('path'); + +const HUD_URL = process.env.FOX_HUD_URL || 'https://fox.pxo.at/hud'; +let hudWindow = null; + +function createHud() { + const { width, height } = screen.getPrimaryDisplay().workAreaSize; + + hudWindow = new BrowserWindow({ + width, + height, + x: 0, + y: 0, + frame: false, + transparent: true, + alwaysOnTop: true, + show: false, + skipTaskbar: true, + hasShadow: false, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), + contextIsolation: true, + nodeIntegration: false, + webSecurity: false, + allowRunningInsecureContent: true, + }, + }); + + hudWindow.setAlwaysOnTop(true, 'screen-saver'); + hudWindow.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true }); + hudWindow.loadURL(HUD_URL); + hudWindow.on('closed', () => { hudWindow = null; }); + + return hudWindow; +} + +function showHud() { + if (!hudWindow) createHud(); + hudWindow.show(); + hudWindow.focus(); + hudWindow.webContents.send('hud-show'); +} + +function hideHud() { + if (!hudWindow) return; + hudWindow.webContents.send('hud-hide'); + setTimeout(() => { + if (hudWindow) hudWindow.hide(); + }, 600); +} + +module.exports = { createHud, showHud, hideHud };