From fccbb7f5a57d1bd8cd2115836aa889caf9bf261b Mon Sep 17 00:00:00 2001 From: Oleh Polisan Date: Tue, 2 Jul 2024 10:38:27 +0300 Subject: [PATCH] feat: dynamic change tray bg color on theme change --- src/main/tray.ts | 6 +++++- src/renderer/patches/tray.ts | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/tray.ts b/src/main/tray.ts index 10e5689..f5aebe4 100644 --- a/src/main/tray.ts +++ b/src/main/tray.ts @@ -4,7 +4,7 @@ * Copyright (c) 2023 Vendicated and Vencord contributors */ -import { dialog, NativeImage, nativeImage } from "electron"; +import { dialog, NativeImage, nativeImage, nativeTheme } from "electron"; import { mkdirSync, readFileSync, writeFileSync } from "fs"; import { readFile } from "fs/promises"; import { join } from "path"; @@ -185,3 +185,7 @@ export async function pickTrayIcon(iconName: string) { export async function getIconWithBadge(dataURL: string) { tray.setImage(nativeImage.createFromDataURL(dataURL)); } + +nativeTheme.on("updated", () => { + generateTrayIcons(); +}); diff --git a/src/renderer/patches/tray.ts b/src/renderer/patches/tray.ts index 746461f..50784d8 100644 --- a/src/renderer/patches/tray.ts +++ b/src/renderer/patches/tray.ts @@ -32,8 +32,10 @@ function changeColorsInSvg(svg: string, stockColor: string) { const fillColor = VesktopNative.settings.get().trayAutoFill ?? "auto"; const reg = new RegExp(stockColor, "gim"); svg = svg.replace(reg, "#" + (pickedColor ?? stockColor)); - if (fillColor !== "auto") { + + if (fillColor === "white") { svg = svg.replace(/black/gim, fillColor); + } else if (fillColor === "black") { svg = svg.replace(/white/gim, fillColor); } return svg;