Linux 上的透明 Windows (Electron)

und*_*har 11 html javascript npm electron

在 Electron 中创建新的 BrowserWindow 时使用透明参数并将其设置为 true 通常会给窗口一个透明的背景......但在 Linux 上,我的知识并非如此

现在我听说你可以设置一些命令行参数......但这不起作用......它只是显示黑色或白色无论如何......

// Should set the commandLine arguments and work...

const {app} = require('electron')

app.commandLine.appendSwitch('enable-transparent-visuals');
app.commandLine.appendSwitch('disable-gpu');
Run Code Online (Sandbox Code Playgroud)

现在我听说这不是电子的问题,而是硬件的问题......但我只需要确保因此创建这个问题!

doo*_*oom 6

我遇到了和你一样的问题,所以我写了:

在实现请求的功能之前,解决方案很简单,只需在启动窗口之前添加延迟即可。

您可以克隆这个 git repo,将延迟设置为 500,通常会出现魔法。

编辑 1:使用此 repo:https : //gitlab.com/doom-fr/electron-transparency-demo

git clone https://gitlab.com/doom-fr/electron-transparency-demo
cd electron-transparency-demo
npm install
npm start
# or npm run startWithTransparentOption
# or npm run startWithAllOptions
Run Code Online (Sandbox Code Playgroud)

对我来说,它与 Debian Jessie 和电子 4.0.5 一起开箱即用,对于npm startnpm run startWithTransparentOption但不适用于npm run startWithAllOptions.

注意:请小心设置至少 500 毫秒以使其有机会工作。之后可以减少延迟但不稳定。这就是为什么需要透明就绪事件的原因。

厄运


Gra*_*mMc 5

在具有不同硬件的不同发行版上,透明度似乎确实存在多个问题。有多种建议的解决方法。您可能无法在所有硬件和发行版上为您的场景提供可接受的透明度。

例子

来自电子文档:

在 Linux 上,用户必须在命令行中输入 --enable-transparent-visuals --disable-gpu 来禁用 GPU 并允许 ARGB 制作透明窗口,这是由上游 bug 引起的,alpha 通道在某些设备上不起作用Linux 上的 NVidia 驱动程序。

https://github.com/electron/electron/blob/master/docs/api/frameless-window.md