mirror of
https://github.com/cupcakearmy/volta.git
synced 2024-12-22 07:56:27 +00:00
Implement auto dark mode
This commit is contained in:
parent
7e411b125d
commit
94bac96245
BIN
src/battery_dark.png
Normal file
BIN
src/battery_dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
@ -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 {
|
||||||
@ -136,4 +145,4 @@ input[type="checkbox"]:focus {
|
|||||||
input[type="checkbox"]:checked {
|
input[type="checkbox"]:checked {
|
||||||
background-color: #3F8EFC;
|
background-color: #3F8EFC;
|
||||||
border-color: #3473CC;
|
border-color: #3473CC;
|
||||||
}
|
}
|
||||||
|
11
src/index.js
11
src/index.js
@ -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() {
|
||||||
@ -58,4 +67,4 @@ ipcRenderer.on('launch', (event, checked) => {
|
|||||||
|
|
||||||
ipcRenderer.on('battery', (event, value) => {
|
ipcRenderer.on('battery', (event, value) => {
|
||||||
document.getElementById('currentBattery').innerText = `${value}%`
|
document.getElementById('currentBattery').innerText = `${value}%`
|
||||||
})
|
})
|
||||||
|
33
src/main.js
33
src/main.js
@ -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 = () => {
|
||||||
@ -150,4 +169,4 @@ setInterval(() => {
|
|||||||
|
|
||||||
window.webContents.send('battery', level)
|
window.webContents.send('battery', level)
|
||||||
}).catch(() => console.log('Could not get Battery level'))
|
}).catch(() => console.log('Could not get Battery level'))
|
||||||
}, 3000)
|
}, 3000)
|
||||||
|
Loading…
Reference in New Issue
Block a user