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 {
@ -136,4 +145,4 @@ input[type="checkbox"]:focus {
input[type="checkbox"]:checked {
background-color: #3F8EFC;
border-color: #3473CC;
}
}

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() {
@ -58,4 +67,4 @@ ipcRenderer.on('launch', (event, checked) => {
ipcRenderer.on('battery', (event, value) => {
document.getElementById('currentBattery').innerText = `${value}%`
})
})

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 = () => {
@ -150,4 +169,4 @@ setInterval(() => {
window.webContents.send('battery', level)
}).catch(() => console.log('Could not get Battery level'))
}, 3000)
}, 3000)