From cc8bf6af19a7a34c1a7995485694d9f24b5d6b15 Mon Sep 17 00:00:00 2001 From: msojocs Date: Sat, 9 Apr 2022 15:25:09 +0800 Subject: [PATCH] test: theme-check --- test/theme-check.js | 167 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 test/theme-check.js diff --git a/test/theme-check.js b/test/theme-check.js new file mode 100644 index 0000000..ef820ef --- /dev/null +++ b/test/theme-check.js @@ -0,0 +1,167 @@ +#!/usr/bin/env node +const { execSync, spawn } = require("child_process"); + +class CheckDark { + // 监听gsettings monitor org.gnome.desktop.interface gtk-theme + monitorTheme() { + let monitor = null; + const { DESKTOP_SESSION } = process.env; + switch (DESKTOP_SESSION) { + case "deepin": + monitor = spawn("gsettings", [ + "monitor", + "com.deepin.dde.appearance", + "gtk-theme", + ]); + break; + case "gnome": + case "gnome-classic": + monitor = spawn("gsettings", [ + "monitor", + "org.gnome.desktop.interface", + "gtk-theme", + ]); + break; + + default: + break; + } + monitor && + monitor.on("error", (err) => { + console.error("monitorTheme", err); + }); + monitor && + monitor.stdout.on("data", (chunk) => { + const data = chunk.toString(); + console.log(data); + }); + } + 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"); + } +} +const cd = new CheckDark(); +console.log(cd.isDark); +cd.monitorTheme(); + +function original() { + !(function (require, directRequire) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: !0 }), + (exports.OSThemeController = exports.OSTheme = void 0); + const e = require("lodash"), + t = require("./e45a1736f0cff12ccd223e3f4dd75808.js"); + var i; + !(function (e) { + (e[(e.Dark = 0)] = "Dark"), + (e[(e.Light = 1)] = "Light"), + (e[(e.Unknown = 2)] = "Unknown"); + })((i = exports.OSTheme || (exports.OSTheme = {}))); + const r = process.versions.nw || "0.0.0"; + exports.OSThemeController = class { + constructor() { + (this._onDidThemeChange = new t.EasyEmitter()), + (this.onMediaQueryChange = e.debounce((e) => { + console.warn("onMediaQueryChange", e); + const t = e.matches; + (this._theme = t ? i.Dark : i.Light), + this._onDidThemeChange.fire(this._theme); + }, 400)), + (this._theme = void 0), + (this._isEnabled = void 0), + (this._mediaQuery2 = void 0), + this.registerListeners(); + } + static get shared() { + return ( + this._shared || (this._shared = new this()), this._shared + ); + } + get onDidThemeChange() { + return this._onDidThemeChange.event; + } + registerListeners() { + var e, t; + this.isEnabled() && + (null === (e = this.mediaQuery) || + void 0 === e || + e.addEventListener("change", this.onMediaQueryChange), + null === (t = this.mediaQuery2) || + void 0 === t || + t.addEventListener("change", this.onMediaQueryChange)); + } + getCurrentTheme() { + console.warn("getCurrentTheme"); + return ( + this._theme || (this._theme = this.tryGetCurrentTheme()), + this._theme + ); + } + isEnabled() { + var e; + if (void 0 === this._isEnabled) { + const i = t.compareVersion("0.44.6", r) <= 0, + n = + "not all" !== + (null === + (e = window.matchMedia( + "(prefers-color-scheme)" + )) || void 0 === e + ? void 0 + : e.media); + this._isEnabled = i && n; + } + return this._isEnabled; + } + tryGetCurrentTheme() { + if (this.isEnabled()) { + return this.mediaQuery.matches ? i.Dark : i.Light; + } + return i.Unknown; + } + get mediaQuery() { + return ( + this._mediaQuery || + (this._mediaQuery = window.matchMedia( + "(prefers-color-scheme: dark)" + )), + this._mediaQuery + ); + } + get mediaQuery2() { + return ( + void 0 === this._mediaQuery2 && + (global.contentWindow && global.contentWindow !== window + ? (this._mediaQuery2 = + global.contentWindow.matchMedia( + "(prefers-color-scheme: dark)" + )) + : (this._mediaQuery2 = null)), + this._mediaQuery2 + ); + } + getDefaultTheme() { + return i.Dark; + } + }; + })(require("licia/lazyImport")(require), require); +}