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%;
padding: 0;
margin: 0;
background: #F7FFF7;
}
#app.dark {
background: #333;
color: #f2f2f2;
}
#app.light {
background: #F7FFF7;
color: #3B252C;
}
hr {

View File

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

View File

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