Получить акцентный цвет в темном режиме Windows

Программирование с помощью электрона

Идея:
я хочу, чтобы акцентный цвет моей программы был таким же, как в Windows.

Проблема:
Для Light Mode Windows все работает, переданный цвет совпадает с акцентным цветом Windows. Но при переключении в темный режим я все еще получаю акцентный цвет светлого режима.

Возможные решения:
Как работает выбор Windows для акцентного цвета темного режима? Всегда ли цвет увеличивается на определенный уровень яркости? Или есть предварительно сохраненные шаблоны?


Вот мой текущий код:

main.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)
})

1 ответ

Хотя мне не удалось найти функцию, которая возвращала бы значение акцентного цвета темного режима, мне удалось изменить яркость цвета и, таким образом, создать несколько подходящее решение.


Вот код, который я добавил:

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)


Источник для настройкиDark()

Другие вопросы по тегам