Electron lets you detect the system-level change events via the powerMonitor
module.
The snippet below shows how to receive screen lock/unlock and sleep/awake events of your screen.
const {app, BrowserWindow, powerMonitor} = require('electron')
const path = require('node:path')
const createWindow = () => {
const win = new BrowserWindow(
{
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
}
)
win.loadFile('index.html')
console.log("Started the app and created the window")
}
app.whenReady().then(() => {
createWindow()
powerMonitor.on('lock-screen', () => {
console.log("Machine is locked!")
})
powerMonitor.on('unlock-screen', () => {
console.log("Machine is unlocked!")
})
powerMonitor.on('suspend', () => {
console.log("Machine is going to sleep!")
})
powerMonitor.on('resume', () => {
console.log("Machine has woken up!")
})
})
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') app.quit()
})