From 4604052effbe576012973576b69c7255bb350f1d Mon Sep 17 00:00:00 2001 From: Rohit Kushwaha Date: Wed, 22 Jul 2026 18:36:36 +0530 Subject: [PATCH 1/2] fix: system theme --- src/palettes/changeTheme/index.js | 27 ++++++++------------------- src/theme/preInstalled.js | 1 + 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/palettes/changeTheme/index.js b/src/palettes/changeTheme/index.js index b76e88f1d..c4c5d25b2 100644 --- a/src/palettes/changeTheme/index.js +++ b/src/palettes/changeTheme/index.js @@ -2,11 +2,12 @@ import "./style.scss"; import palette from "components/palette"; import config from "lib/config"; import appSettings from "lib/settings"; -import { isDeviceDarkTheme } from "lib/systemConfiguration"; import themes from "theme/list"; import { updateSystemTheme } from "theme/preInstalled"; import changeEditorTheme from "../changeEditorTheme"; +const darkModeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); + export default function changeTheme(type = "editor") { if (type === "editor") return changeEditorTheme(); palette( @@ -41,30 +42,18 @@ function generateHints(type) { }); } -let previousDark = isDeviceDarkTheme(); -const updateTimeMs = 2000; - -let intervalId = null; - -function syncSystemTheme() { - if (appSettings.value.appTheme.toLowerCase() === "system") { - const isDark = isDeviceDarkTheme(); - if (isDark !== previousDark) { - previousDark = isDark; - updateSystemTheme(isDark); - } - } +function syncSystemTheme(event) { + if (appSettings.value.appTheme.toLowerCase() !== "system") return; + const isDark = event ? event.matches : darkModeMediaQuery.matches; + updateSystemTheme(isDark); } function startSystemThemeWatcher() { - if (intervalId) return; - intervalId = setInterval(syncSystemTheme, updateTimeMs); + darkModeMediaQuery.addEventListener("change", syncSystemTheme); } function stopSystemThemeWatcher() { - if (!intervalId) return; - clearInterval(intervalId); - intervalId = null; + darkModeMediaQuery.removeEventListener("change", syncSystemTheme); } function updateSystemThemeWatcher(theme) { diff --git a/src/theme/preInstalled.js b/src/theme/preInstalled.js index 6e3165744..bff21af82 100644 --- a/src/theme/preInstalled.js +++ b/src/theme/preInstalled.js @@ -280,6 +280,7 @@ export function updateSystemTheme(darkTheme) { if (appSettings?.value?.appTheme === "system") { apply(system.id); + appSettings.update({ editorTheme: system.preferredEditorTheme }); } } From 7eb02704d128360e993836c4e82a317b0b37d64f Mon Sep 17 00:00:00 2001 From: Rohit Kushvaha Date: Wed, 22 Jul 2026 19:24:45 +0530 Subject: [PATCH 2/2] Update src/theme/preInstalled.js Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --- src/theme/preInstalled.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/theme/preInstalled.js b/src/theme/preInstalled.js index bff21af82..8eb266e96 100644 --- a/src/theme/preInstalled.js +++ b/src/theme/preInstalled.js @@ -280,7 +280,7 @@ export function updateSystemTheme(darkTheme) { if (appSettings?.value?.appTheme === "system") { apply(system.id); - appSettings.update({ editorTheme: system.preferredEditorTheme }); + appSettings.update({ editorTheme: system.preferredEditorTheme }, false); } }