Implement auto dark mode

This commit is contained in:
3m5.Danny Spina 2020-03-04 17:18:57 +01:00
parent 7e411b125d
commit 94bac96245
5 changed files with 47 additions and 10 deletions

BIN
src/battery_dark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -27,7 +27,16 @@ body,
width: 100%; width: 100%;
padding: 0; padding: 0;
margin: 0; margin: 0;
background: #F7FFF7; }
#app.dark {
background: #333;
color: #f2f2f2;
}
#app.light {
background: #F7FFF7;
color: #3B252C;
} }
hr { hr {

View File

@ -3,6 +3,7 @@ const {
shell, shell,
remote remote
} = require('electron') } = require('electron')
const darkMode = require('dark-mode')
let rangeSlider let rangeSlider
let autoLaunch let autoLaunch
@ -14,6 +15,14 @@ document.addEventListener('DOMContentLoaded', () => {
document.getElementById('close').addEventListener('click', () => { document.getElementById('close').addEventListener('click', () => {
remote.getCurrentWindow().hide() remote.getCurrentWindow().hide()
}) })
darkMode.isDark().then((dark) => {
if (dark) {
document.querySelector('#app').classList.add('dark')
} else {
document.querySelector('#app').classList.add('light')
}
})
}) })
function iniSlider() { function iniSlider() {

View File

@ -4,6 +4,7 @@ const {
ipcMain, ipcMain,
Tray, Tray,
nativeImage, nativeImage,
nativeTheme,
Notification, Notification,
electron electron
} = require('electron') } = require('electron')
@ -40,17 +41,32 @@ app.on('window-all-closed', () => {
app.quit() app.quit()
}) })
const createTray = () => { const createIcon = (image) => {
const icon = nativeImage.createFromPath(path.join(__dirname, 'battery.png')).resize({ return nativeImage.createFromPath(path.join(__dirname, image)).resize({
width: 24, width: 24,
height: 24 height: 24
}) })
}
const createTray = () => {
let icon
if (nativeTheme.shouldUseDarkColors) {
icon = createIcon('battery_dark.png')
} else {
icon = createIcon('battery_light.png')
}
tray = new Tray(icon) tray = new Tray(icon)
tray.on('right-click', toggleWindow) tray.on('right-click', toggleWindow)
tray.on('double-click', toggleWindow) tray.on('double-click', toggleWindow)
tray.on('click', toggleWindow) tray.on('click', toggleWindow)
} }
nativeTheme.on('updated', function() {
tray.destroy()
createTray()
window.reload()
})
const getWindowPosition = () => { const getWindowPosition = () => {
const windowBounds = window.getBounds() const windowBounds = window.getBounds()
const trayBounds = tray.getBounds() const trayBounds = tray.getBounds()
@ -72,7 +88,10 @@ const createWindow = () => {
frame: false, frame: false,
fullscreenable: false, fullscreenable: false,
resizable: false, resizable: false,
transparent: true transparent: true,
webPreferences: {
nodeIntegration: true
}
}) })
window.loadURL(`file://${path.join(__dirname, 'index.html')}`) window.loadURL(`file://${path.join(__dirname, 'index.html')}`)
@ -82,9 +101,9 @@ const createWindow = () => {
window.webContents.on('did-finish-load', sendCurrentValues) window.webContents.on('did-finish-load', sendCurrentValues)
// window.openDevTools({ window.openDevTools({
// mode: 'detach' mode: 'detach'
// }) })
} }
const toggleWindow = () => { const toggleWindow = () => {