diff --git a/src/DesktopApp.vue b/src/DesktopApp.vue index 082dd4d2..852bbdf7 100644 --- a/src/DesktopApp.vue +++ b/src/DesktopApp.vue @@ -15,6 +15,7 @@ import { useTokensStore } from '@/stores/token.js'; import { useExchangeRatesStore } from '@/stores/exchangeRates.js'; import { loadMapAssets } from '@/lib/map/index.js'; +import { getSystemTheme } from '@/lib/ui.js'; export default { data() { @@ -36,8 +37,20 @@ export default { theme.global.name.value = 'light'; } else if (self.$settings.getTheme() === 'dark') { theme.global.name.value = 'dark'; + } else { + theme.global.name.value = getSystemTheme(); } + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function (e) { + if (self.$settings.getTheme() === 'auto') { + if (e.matches) { + theme.global.name.value = 'dark'; + } else { + theme.global.name.value = 'light'; + } + } + }); + let localeDefaultSettings = self.$locale.initLocale(self.userStore.currentUserLanguage); self.settingsStore.updateLocalizedDefaultSettings(localeDefaultSettings); diff --git a/src/lib/ui.js b/src/lib/ui.js new file mode 100644 index 00000000..a9cc2c2b --- /dev/null +++ b/src/lib/ui.js @@ -0,0 +1,7 @@ +export function getSystemTheme() { + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + return 'dark'; + } else { + return 'light'; + } +} diff --git a/src/views/desktop/MainLayout.vue b/src/views/desktop/MainLayout.vue index 8a024976..cec09eeb 100644 --- a/src/views/desktop/MainLayout.vue +++ b/src/views/desktop/MainLayout.vue @@ -96,6 +96,10 @@