From a7a2c98d2588c85bf353854b0291a7dd7a8a49ba Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 9 Apr 2022 15:37:03 +0800 Subject: [PATCH] update: theme-check --- test/theme-check.js | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/test/theme-check.js b/test/theme-check.js index ef820ef..576b1b6 100644 --- a/test/theme-check.js +++ b/test/theme-check.js @@ -24,6 +24,9 @@ class CheckDark { break; default: + console.warn( + `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` + ); break; } monitor && @@ -32,8 +35,13 @@ class CheckDark { }); monitor && monitor.stdout.on("data", (chunk) => { + // TODO: 防抖动包装 const data = chunk.toString(); + const t = data.includes("dark"); console.log(data); + console.log("dark", t); + // (this._theme = t ? i.Dark : i.Light), + // this._onDidThemeChange.fire(this._theme); }); } get isDark() { @@ -80,6 +88,7 @@ function original() { exports.OSThemeController = class { constructor() { (this._onDidThemeChange = new t.EasyEmitter()), + // debounce, 防抖动, 该函数会从上一次被调用后,延迟 400 毫秒后调用 func 方法 (this.onMediaQueryChange = e.debounce((e) => { console.warn("onMediaQueryChange", e); const t = e.matches; @@ -134,6 +143,7 @@ function original() { } tryGetCurrentTheme() { if (this.isEnabled()) { + // return this.isDark ? i.Dark : i.Light; return this.mediaQuery.matches ? i.Dark : i.Light; } return i.Unknown; @@ -159,6 +169,28 @@ function original() { this._mediaQuery2 ); } + get isDark() { + const { DESKTOP_SESSION } = process.env; + console.log(DESKTOP_SESSION); + let theme = ""; + switch (DESKTOP_SESSION) { + case "deepin": + theme = execSync( + `gsettings get com.deepin.dde.appearance gtk-theme` + ); + break; + case "gnome": + case "gnome-classic": + theme = execSync( + `gsettings get org.gnome.desktop.interface gtk-theme` + ); + break; + + default: + break; + } + return theme.includes("dark"); + } getDefaultTheme() { return i.Dark; }