可以在 Electron Framework 中使用自定义窗口级别,使窗口始终位于顶部,即使其他应用程序处于全屏状态?
对于本机 MacOS 应用程序,我发现了这个:https://stackoverflow.com/a/27397096/5838242
他说:
window.level = Int(CGWindowLevelForKey(kCGMaximumWindowLevelKey))
在电子上,我有一个浏览器窗口:
mainWindow = new BrowserWindow({width: 1400, height: 50, resizable: false, alwaysOnTop: true, y: 0, x: 0, minimizable: false, title: 'CD App', frame: false, titleBarStyle: 'hidden', type: 'desktop' });
我知道“type”参数是 POINT,但这个参数只有两个选项:
在 macOS 上,可能的类型是桌面型、纹理型。 纹理类型添加金属渐变外观(NSTexturedBackgroundWindowMask)。 桌面类型将窗口放置在桌面背景窗口级别 (kCGDesktopWindowLevel - 1)。请注意,桌面窗口不会接收焦点、键盘或鼠标事件,但您可以使用 globalShortcut 来谨慎地接收输入。
那么,有可能做这件事吗?
setAlwaysOnTop()
API 采用可选的 level
参数来调整窗口级别,您可以像这样使用它:
mainWindow = new BrowserWindow({ ... });
mainWindow.setAlwaysOnTop(true, 'screen');
请参阅文档了解可选参数的所有可能值,我不确定
screen
是您在这种情况下想要的值,您需要进行实验。
2024 年答案。您可以执行以下操作,让窗口覆盖所有内容,包括全屏应用程序和每个工作区。
mainWindow.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true });
mainWindow.setAlwaysOnTop(true, 'screen-saver', 1);
这个 GH 线程 遵循全屏功能创建/实现之上的许多窗口。