diff --git a/dist/server/api/menuBar.js b/dist/server/api/menuBar.js index 566182b..f34cca7 100644 --- a/dist/server/api/menuBar.js +++ b/dist/server/api/menuBar.js @@ -25,29 +25,46 @@ router.post("/hide", (req, res) => { }); router.post("/create", (req, res) => { res.sendStatus(200); - const { width, height, url, label, alwaysOnTop, vibrancy, backgroundColor, transparency, icon, showDockIcon, contextMenu } = req.body; - state_1.default.activeMenuBar = (0, menubar_1.menubar)({ - icon: icon || state_1.default.icon.replace("icon.png", "IconTemplate.png"), - index: url, - showDockIcon, - showOnAllWorkspaces: false, - browserWindow: { - width, - height, - alwaysOnTop, - vibrancy, - backgroundColor, - transparent: transparency, - webPreferences: { - nodeIntegration: true, - sandbox: false, - contextIsolation: false + const { width, height, url, label, alwaysOnTop, vibrancy, backgroundColor, transparency, icon, showDockIcon, onlyShowContextWindow, contextMenu } = req.body; + if (onlyShowContextWindow === true) { + const tray = new electron_1.Tray(icon || state_1.default.icon.replace("icon.png", "IconTemplate.png")); + tray.setContextMenu(buildMenu(contextMenu)); + state_1.default.activeMenuBar = (0, menubar_1.menubar)({ + tray, + index: false, + showDockIcon, + showOnAllWorkspaces: false, + browserWindow: { + show: false, + width: 0, + height: 0, } - } - }); - state_1.default.activeMenuBar.on("after-create-window", () => { - require("@electron/remote/main").enable(state_1.default.activeMenuBar.window.webContents); - }); + }); + } + else { + state_1.default.activeMenuBar = (0, menubar_1.menubar)({ + icon: icon || state_1.default.icon.replace("icon.png", "IconTemplate.png"), + index: url, + showDockIcon, + showOnAllWorkspaces: false, + browserWindow: { + width, + height, + alwaysOnTop, + vibrancy, + backgroundColor, + transparent: transparency, + webPreferences: { + nodeIntegration: true, + sandbox: false, + contextIsolation: false + } + } + }); + state_1.default.activeMenuBar.on("after-create-window", () => { + require("@electron/remote/main").enable(state_1.default.activeMenuBar.window.webContents); + }); + } state_1.default.activeMenuBar.on("ready", () => { state_1.default.activeMenuBar.tray.setTitle(label); state_1.default.activeMenuBar.on("hide", () => { @@ -60,17 +77,22 @@ router.post("/create", (req, res) => { event: "\\Native\\Laravel\\Events\\MenuBar\\MenuBarShown" }); }); - state_1.default.activeMenuBar.tray.on("right-click", () => { - (0, utils_1.notifyLaravel)("events", { - event: "\\Native\\Laravel\\Events\\MenuBar\\MenuBarContextMenuOpened" + if (onlyShowContextWindow !== true) { + state_1.default.activeMenuBar.tray.on("right-click", () => { + (0, utils_1.notifyLaravel)("events", { + event: "\\Native\\Laravel\\Events\\MenuBar\\MenuBarContextMenuOpened" + }); + state_1.default.activeMenuBar.tray.popUpContextMenu(buildMenu(contextMenu)); }); - let menu = electron_1.Menu.buildFromTemplate([{ role: "quit" }]); - if (contextMenu) { - const menuEntries = contextMenu.map(helper_1.mapMenu); - menu = electron_1.Menu.buildFromTemplate(menuEntries); - } - state_1.default.activeMenuBar.tray.popUpContextMenu(menu); - }); + } }); }); +function buildMenu(contextMenu) { + let menu = electron_1.Menu.buildFromTemplate([{ role: "quit" }]); + if (contextMenu) { + const menuEntries = contextMenu.map(helper_1.mapMenu); + menu = electron_1.Menu.buildFromTemplate(menuEntries); + } + return menu; +} exports.default = router; diff --git a/src/server/api/menuBar.ts b/src/server/api/menuBar.ts index 8884098..2d1a448 100644 --- a/src/server/api/menuBar.ts +++ b/src/server/api/menuBar.ts @@ -1,5 +1,5 @@ import express from "express"; -import { Menu, nativeImage } from "electron"; +import { Menu, Tray } from "electron"; import { mapMenu } from "./helper"; import state from "../state"; import { menubar } from "menubar"; @@ -42,33 +42,50 @@ router.post("/create", (req, res) => { transparency, icon, showDockIcon, + onlyShowContextWindow, contextMenu } = req.body; - state.activeMenuBar = menubar({ - icon: icon || state.icon.replace("icon.png", "IconTemplate.png"), - index: url, - showDockIcon, - showOnAllWorkspaces: false, - browserWindow: { - width, - height, - alwaysOnTop, - vibrancy, - backgroundColor, - transparent: transparency, - webPreferences: { - nodeIntegration: true, - sandbox: false, - contextIsolation: false + if (onlyShowContextWindow === true) { + const tray = new Tray(icon || state.icon.replace("icon.png", "IconTemplate.png")); + tray.setContextMenu(buildMenu(contextMenu)); + + state.activeMenuBar = menubar({ + tray, + index: false, + showDockIcon, + showOnAllWorkspaces: false, + browserWindow: { + show: false, + width: 0, + height: 0, } - } - }); - + }); - state.activeMenuBar.on("after-create-window", () => { - require("@electron/remote/main").enable(state.activeMenuBar.window.webContents); - }); + } else { + state.activeMenuBar = menubar({ + icon: icon || state.icon.replace("icon.png", "IconTemplate.png"), + index: url, + showDockIcon, + showOnAllWorkspaces: false, + browserWindow: { + width, + height, + alwaysOnTop, + vibrancy, + backgroundColor, + transparent: transparency, + webPreferences: { + nodeIntegration: true, + sandbox: false, + contextIsolation: false + } + } + }); + state.activeMenuBar.on("after-create-window", () => { + require("@electron/remote/main").enable(state.activeMenuBar.window.webContents); + }); + } state.activeMenuBar.on("ready", () => { state.activeMenuBar.tray.setTitle(label); @@ -78,27 +95,34 @@ router.post("/create", (req, res) => { event: "\\Native\\Laravel\\Events\\MenuBar\\MenuBarHidden" }); }); + state.activeMenuBar.on("show", () => { notifyLaravel("events", { event: "\\Native\\Laravel\\Events\\MenuBar\\MenuBarShown" }); }); - state.activeMenuBar.tray.on("right-click", () => { - notifyLaravel("events", { - event: "\\Native\\Laravel\\Events\\MenuBar\\MenuBarContextMenuOpened" - }) - - let menu = Menu.buildFromTemplate([{ role: "quit" }]); + if (onlyShowContextWindow !== true) { + state.activeMenuBar.tray.on("right-click", () => { + notifyLaravel("events", { + event: "\\Native\\Laravel\\Events\\MenuBar\\MenuBarContextMenuOpened" + }); - if (contextMenu) { - const menuEntries = contextMenu.map(mapMenu); - menu = Menu.buildFromTemplate(menuEntries); - } - - state.activeMenuBar.tray.popUpContextMenu(menu); - }); + state.activeMenuBar.tray.popUpContextMenu(buildMenu(contextMenu)); + }); + } }); }); +function buildMenu(contextMenu) { + let menu = Menu.buildFromTemplate([{ role: "quit" }]); + + if (contextMenu) { + const menuEntries = contextMenu.map(mapMenu); + menu = Menu.buildFromTemplate(menuEntries); + } + + return menu; +} + export default router;