问题描述
在 Electron 中创建新的 BrowserWindow 时使用 transparent 参数并将其设置为 true 通常会为窗口提供透明背景...但据我所知,在 Linux 上并非如此
Using the transparent argument and setting it to true when creating a new BrowserWindow in Electron usually gives the window a transparent background... But on Linux that isn't the case for my knowledge
现在我听说您可以设置一些命令行参数...但这不起作用...无论如何它只会显示黑色或白色...
Now I heard you can set some Command Line Arguments... But that isn't working... It just displays black or white no matter what...
// Should set the commandLine arguments and work...
const {app} = require('electron')
app.commandLine.appendSwitch('enable-transparent-visuals');
app.commandLine.appendSwitch('disable-gpu');
现在我听说这不是电子问题,而是硬件问题......但我只需要确保因此创建这个问题!
Now i have heard this is no problem with electron rather a problem with hardware... But i just needed to make sure therefore creating this question!
推荐答案
我遇到了和你一样的问题,所以写了:
I have encounter the same problem as you and so I have written :
- 这个 StackOverFlow 问题:无法在 Electron (javascript) 中成功制作透明窗口
- 这个 Electron 问题:https://github.com/electron/electron/issues/15947
- 最后请求此功能:https://github.com/electron/electron/issues/16809
在实现所请求的功能之前,解决方案很简单,只需在启动窗口之前添加延迟即可.
Till the requested feature is implemented, the solution is simple just add a delay before launching the window.
你可以克隆 这个 git repo,把延迟放到500,一般会出现魔法.
You can clone this git repo, put the delay to 500, and normally magic will appear.
编辑 1:使用这个仓库:https://gitlab.com/doom-fr/electron-transparency-demo
EDIT 1 : Use this 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
对我来说,它适用于 Debian Jessie 和 electron 4.0.5,适用于 npm start
、npm run startWithTransparentOption
但不适用于 npm runstartWithAllOptions
.
For me, it works out of the box with Debian Jessie and electron 4.0.5, for npm start
, npm run startWithTransparentOption
but not with npm run startWithAllOptions
.
注意:请小心设置至少 500 毫秒,以便有机会正常工作.之后可以减少延迟但不稳定.这就是为什么需要在 transparentReady 上的事件.
NB : be carefull to set at least 500ms to have chance it works. After you can reduce the delay but it is not stable. It is why an event on transparentReady is needed.
厄运
这篇关于Linux 上的透明窗口(电子)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!