This is tutorial electron project
on Linux: ~/.config//log.log on macOS: ~/Library/Logs//log.log on Windows: %USERPROFILE%\AppData\Roaming<app name>\log.log
mainWindow.webContents.insertCSS(`body{backgroung-color:${color};}`);
// resize main window
val => {
mainWindow.setSize(val, val, true);
};
./node_modules/.bin/electron-rebuild
chrome://inspect/
rs
contents.executeJavaScript(code[, userGesture])
session.fromPartition('persist:part1')
BrowserWindow({
webPreferences: {
partitiond: 'persist:part1'
})
session.clearStorageData()
const ses = session.defaultSession;
ses.cookies.get({}, (err, cookies) => {
console.log(cookies);
});
let cookie = {
url: 'https://my.site',
name: 'cookie1',
value: 'electron',
expirationDate: 1613852855
};
ses.cookies.set(cookie, err => {
console.log('cookie1 set');
});
session = true
property, means the cookie only valid for session
const ses = session.defaultSession;
ses.cookies.get({ name: 'cookie1' }, (err, cookies) => {
console.log(cookies);
});
ses.cookies.remove('https://my.site', 'cookie1', err => {
console.log('some log');
});
const { dialog } = require('electron');
mainWindow.webContens.on('did-finish-load', () => {
dialog.showOpenDialog(mainWindow, {
//...
});
});
dialog.showSaveDialog
dialog.showMessageBox
globalShortcut.register('G', () => {
console.log('G pressed');
});
Menu.buildFromTemplate
mainWindow.webContents.on('context-menu', e => {
contextMenu.popup();
});
System tray icon
tray.setContextMenu(trayMenu)
electron.powerMonitor.on('suspend', e => {
console.log('saving file');
});
Arrays and buffers are copied over IPC!!!
in renderer
const { webFrame } = require('electron');
const zoomUp = () => {
webFrame.setZoomFactor(webFrame.getZoomFactor() + 1);
};
webFrame.getResourceUsage();
process.type - where from I accessed the process (rendered/ browser) process.mas, process.windowsStore
process.cpuUsage
process.hang()
process.crash() - we can reload when crashed
in renderer
window.screen
electron.screen
screen.getAllDisplays()
You may use the module to create window with half of the display width.
- open url
const { nativeImage, remote } = require('electron');
const splash = nativeImage.createFromPath(`${__dirname}/splash.png`);
console.log(splash.getSize());
const saveToDesktop = (data, ext) => {
let desktopPath = remote.app.getPath('desktop');
fs.writeFile(`${desktopPath}/splash.${ext}`, data, console.log);
};
// Convert to different formats
let pngSplash = splash.toPNG();
saveToDesktop(pngSplash, 'png');
// to insert into <img src="" id="preview"/>
const splashUrl = splash.resize({ width: 100, height: 100 }).toDataURL();
document.getElementById('preview').src = splashUrl;
const { clipboard } = require('electron');
clipboard.readText();
clipboard.writeText('ddddd');
// for HTML
// for Text
mainWindow = new BrowserWindow({
width: 1000,
height: 800,
show: false,
webPreferences: {
nodeIntegration: true,
offscreen: true
}
});
let i = 0;
mainWindow.webContents.on('paint', (e, dirty, image) => {
i++;
let screenshot = image.toPNG();
fs.writeFile(app.getPath('desktop') + `/screenshot_${i}.png`, screenshot, console.log);
});
const status = navigator.online ? 'online' : 'offline';
// event listener
const setStatus = status => {
const statusNode = document.getElementById('status');
statusNode.innerText = status ? 'online' : 'offline';
};
window.addEventListener('online', e => {
setStatus(true);
});
window.addEventListener('offline', e => {
setStatus(false);
});
HTML5
new Notification(title, options);