Construcción de programas con electrones
La idea:
Quiero que el color de acento de mi programa sea el mismo que el de Windows.
El problema:
Para el Modo claro de Windows, todo funciona, el color pasado coincide con el color de acento de Windows. Pero cuando cambio al modo oscuro, sigo teniendo el color de acento del modo claro.
Soluciones posibles:
¿Cómo funciona la selección de Windows para el color de énfasis del modo oscuro? ¿El color siempre aumenta en un cierto nivel de brillo? ¿O hay patrones guardados previamente?
Aquí está mi código actual:
principal.js
let color = systemPreferences.getAccentColor() mainWindow.on('ready-to-show', function() { mainWindow.webContents.send('accColor', {'Color': color}); })ipc.js
ipc.on('accColor', (evt, message) => { let color = message['Color'] const hex2rgb = (hex) => { const r = parseInt(hex.slice(1, 3), 16) const g = parseInt(hex.slice(3, 5), 16) const b = parseInt(hex.slice(5, 7), 16) return [ r, g, b ] } let baseRGB = hex2rgb('#' + color) document.querySelector('body').style.setProperty('--accent-default-rgb', baseRGB) })Aunque no pude encontrar una función que devolviera el valor del color de acento del modo oscuro, pude cambiar el brillo del color y así crear una solución algo adecuada.
Aquí está el código que agregué:
ipc.js
function adjustDark(color, amount) { return '#' + color.replace(/^#/, '').replace(/../g, color => ('0'+Math.min(255, Math.max(0, parseInt(color, 16) + amount)).toString(16)).substr(-2)); } let darkHEX = adjustDark(color, 96) let darkRGB = hex2rgb(darkHEX) document.querySelector('body').style.setProperty('--accent-default-rgb', darkRGB)