-
-
Save ahkohd/38662d13d6a4566dc95e4cec4ac51c61 to your computer and use it in GitHub Desktop.
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="UTF-8"> | |
<title>Hello World!</title> | |
<link rel="stylesheet" type="text/css" href="./styles.css"> | |
</head> | |
<body> | |
<h1>Fade In/Out Window Example</h1> | |
<div> | |
<button id="fade-in-out">Fade Out / In</button> | |
</div> | |
<script> | |
// You can also require other files to run in this process | |
require('./renderer.js') | |
</script> | |
</body> | |
</html> |
// Modules to control application life and create native browser window | |
const {app, BrowserWindow} = require('electron') | |
function createWindow () { | |
// Create the browser window. | |
const mainWindow = new BrowserWindow({ | |
width: 800, | |
height: 600, | |
webPreferences: { | |
nodeIntegration: true | |
} | |
}) | |
// and load the index.html of the app. | |
mainWindow.loadFile('index.html') | |
// Open the DevTools. | |
// mainWindow.webContents.openDevTools() | |
} | |
// This method will be called when Electron has finished | |
// initialization and is ready to create browser windows. | |
// Some APIs can only be used after this event occurs. | |
app.on('ready', createWindow) | |
// Quit when all windows are closed. | |
app.on('window-all-closed', function () { | |
// On OS X it is common for applications and their menu bar | |
// to stay active until the user quits explicitly with Cmd + Q | |
if (process.platform !== 'darwin') { | |
app.quit() | |
} | |
}) | |
app.on('activate', function () { | |
// On OS X it's common to re-create a window in the app when the | |
// dock icon is clicked and there are no other windows open. | |
if (BrowserWindow.getAllWindows().length === 0) { | |
createWindow() | |
} | |
}) | |
// In this file you can include the rest of your app's specific main process | |
// code. You can also put them in separate files and require them here. |
// Empty |
const remote = require('electron').remote | |
const fadeWindowOut = ( | |
_window, | |
step = 0.1, | |
fadeEveryXSeconds = 10 | |
) => { | |
let opacity = _window.getOpacity(); | |
const interval = setInterval(() => { | |
if (opacity <= 0) window.clearInterval(interval); | |
_window.setOpacity(opacity); | |
opacity -= step; | |
}, fadeEveryXSeconds); | |
return interval; | |
} | |
const fadeWindowIn = ( | |
_window, | |
step = 0.1, | |
fadeEveryXSeconds = 10 | |
) => { | |
let opacity = _window.getOpacity(); | |
const interval = setInterval(() => { | |
if (opacity >= 1) window.clearInterval(interval); | |
_window.setOpacity(opacity); | |
opacity += step; | |
}, fadeEveryXSeconds); | |
return interval; | |
} | |
document.getElementById('fade-in-out').onclick = () => { | |
// fade out this window... | |
fadeWindowOut(remote.getCurrentWindow(), 0.1, 2); | |
// 1000 miliseconds later, fade it in... | |
setTimeout(() => fadeWindowIn(remote.getCurrentWindow(), 0.1, 2), 1000) | |
} |
/* Empty */ |
Hi, @imansigupta this script is meant to run in the renderer process (i.e renderer.js - the js file you include inside your index.html) that is why I used the remote module.
Is it compulsory for you to do it in your main process?
Let me know so that I can write the main process equivalent of the fadeIn/Out function.
Hey,
At first, I tried Implementing this in index file only using the remote module. But This ain't working. Due to which I thought of trying it in main.js. Is there any issue related to ubuntu? because I tried running the same fiddle in another folder but still the problem is same.
It is not able to set the Opacity on the browserWindow
https://www.electronjs.org/docs/api/browser-window#winsetopacityopacity-windows-macos
After checking the docs, I realised that ElectronJS setOpacity
method does not support Linux.
I guess this is due to different Linux distros using different desktop environment i.e GNOME, KDE e.t.c
You might have to write a native Node.JS module to achieve this for your desktop environment.
I guess how to fade window programmatically will vary on different desktop environments.
Any other questions or request? Let me know!
No, Thank you for helping me out.
@imansigupta You're welcome.
Hey! I tried running this on ubuntu based system. But this isn't running. I tried adding opacity property in main.js too by using mainWindow.setOpacity(0.5); but this was not working as well.
Kindly Help me with this issue