设置 browserWindow 始终位于顶部,即使其他应用程序处于全屏状态 [Electron、MAC OS]

问题描述 投票:0回答:2

可以在 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 来谨慎地接收输入。

那么,有可能做这件事吗?

macos window electron
2个回答
29
投票

从 Electron 1.4.2 开始,

setAlwaysOnTop()
API 采用可选的
level
参数来调整窗口级别,您可以像这样使用它:

mainWindow = new BrowserWindow({ ... });
mainWindow.setAlwaysOnTop(true, 'screen');

请参阅文档了解可选参数的所有可能值,我不确定

screen
是您在这种情况下想要的值,您需要进行实验。


0
投票

2024 年答案。您可以执行以下操作,让窗口覆盖所有内容,包括全屏应用程序和每个工作区。

  mainWindow.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true });
  mainWindow.setAlwaysOnTop(true, 'screen-saver', 1);

这个 GH 线程 遵循全屏功能创建/实现之上的许多窗口。

© www.soinside.com 2019 - 2024. All rights reserved.