From 98b155b83d250ff4f2df128c74e518d7a62c0c3d Mon Sep 17 00:00:00 2001 From: msojocs Date: Mon, 18 Apr 2022 22:58:45 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E4=BC=98=E5=8C=96=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changelog.md | 4 + test/theme-check.js | 246 ++++++++++++++++++++++++-------------------- tools/fix-core.sh | 2 +- 3 files changed, 137 insertions(+), 115 deletions(-) diff --git a/changelog.md b/changelog.md index 7dfb10e..5758481 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,7 @@ +# 1.05.2203070-10 / 2022-04- +- fix: 修正命令行入口 +- update: 优化主题监听 + # 1.05.2203070-8 / 2022-04-10 - fix: 国内网络vscode-ripgrep安装失败的问题 - fix: 内部的更新检查界面无法正常使用(这个更新用处不大,仅用于让维护者知道存在更新) diff --git a/test/theme-check.js b/test/theme-check.js index bb19ece..94972df 100644 --- a/test/theme-check.js +++ b/test/theme-check.js @@ -4,70 +4,79 @@ 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", - this.gnomeScheme, - ]); - break; - default: - console.warn( - `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` - ); - break; + try { + 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", + this.gnomeScheme, + ]); + break; + default: + console.warn( + `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` + ); + break; + } + monitor && + monitor.on("error", (err) => { + console.error("monitorTheme", err); + }); + monitor && + monitor.stdout.on("data", (chunk) => { + // TODO: 防抖动包装 + const data = chunk.toString(); + const t = data.toLowerCase().includes("dark"); + console.log(data); + console.log("dark", t); + // (this._theme = t ? i.Dark : i.Light), + // this._onDidThemeChange.fire(this._theme); + }); + } catch (err) { + console.error("尝试监听主题失败!", err); } - monitor && - monitor.on("error", (err) => { - console.error("monitorTheme", err); - }); - monitor && - monitor.stdout.on("data", (chunk) => { - // TODO: 防抖动包装 - const data = chunk.toString(); - const t = data.toLowerCase().includes("dark"); - console.log(data); - console.log("dark", t); - // (this._theme = t ? i.Dark : i.Light), - // this._onDidThemeChange.fire(this._theme); - }); } 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 ${this.gnomeScheme}` - ); - break; + try { + 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 ${this.gnomeScheme}` + ); + break; - default: - console.warn( - `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` - ); - break; + default: + console.warn( + `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` + ); + break; + } + console.log(theme.toString()); + return theme.toString().toLowerCase().includes("dark"); + } catch (error) { + console.error("尝试获取主题信息失败,使用默认暗色"); + return true; } - console.log(theme.toString()); - return theme.toString().toLowerCase().includes("dark"); } get gnomeScheme() { // 判断 Gnome-Shell 版本 @@ -185,26 +194,31 @@ function original() { } // 额外添加功能 start 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 ${this.gnomeScheme}` - ); - break; + try { + 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 ${this.gnomeScheme}` + ); + break; - default: - break; + default: + break; + } + return theme.includes("dark"); + } catch (err) { + console.error("尝试获取主题信息失败,使用默认暗色", err); + return true; } - return theme.includes("dark"); } get gnomeScheme() { // 判断 Gnome-Shell 版本 @@ -217,46 +231,50 @@ function original() { return gnomeVersionNum >= 42 ? "color-scheme" : "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", - this.gnomeScheme, - ]); - break; + try { + 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", + this.gnomeScheme, + ]); + break; - default: - console.warn( - `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` + default: + console.warn( + `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` + ); + break; + } + monitor && + monitor.on("error", (err) => { + console.error("monitorTheme", err); + }); + monitor && + monitor.stdout.on( + "data", + e.debounce((chunk) => { + // 防抖动包装 防抖动, 该函数会从上一次被调用后,延迟 400 毫秒后调用 本方法 + const data = chunk.toString(); + const t = data.toLowerCase().includes("dark"); + (this._theme = t ? i.Dark : i.Light), + this._onDidThemeChange.fire(this._theme); + }, 400) ); - break; + } catch (err) { + console.error("尝试监听主题失败!", err); } - monitor && - monitor.on("error", (err) => { - console.error("monitorTheme", err); - }); - monitor && - monitor.stdout.on( - "data", - e.debounce((chunk) => { - // 防抖动包装 防抖动, 该函数会从上一次被调用后,延迟 400 毫秒后调用 本方法 - const data = chunk.toString(); - const t = data.toLowerCase().includes("dark"); - (this._theme = t ? i.Dark : i.Light), - this._onDidThemeChange.fire(this._theme); - }, 400) - ); } // 额外添加功能 end getDefaultTheme() { diff --git a/tools/fix-core.sh b/tools/fix-core.sh index e8043a3..62ca067 100755 --- a/tools/fix-core.sh +++ b/tools/fix-core.sh @@ -79,7 +79,7 @@ sed -i 's/this.registerListeners()/this.monitorTheme()/' $find_result # replace check func sed -i 's/mediaQuery.matches/isDark/' $find_result # add functions -sed -i 's#}getDefaultTheme#}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 ${this.gnomeScheme}`);break;default:break}return theme.includes("dark")}get gnomeScheme(){const gnomeVersion=execSync(`gnome-shell --version`).toString().replace(/[\\r\\n]/g,"").split(" ");const gnomeVersionNum=gnomeVersion.length==3?Number(gnomeVersion[2]):0;return gnomeVersionNum>=42?"color-scheme":"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",this.gnomeScheme,]);break;default:console.warn(`NOT SUPPORTED!!!DESKTOP_SESSION:${DESKTOP_SESSION}`);break}monitor\&\&monitor.on("error",(err)=>{console.error("monitorTheme",err)});monitor\&\&monitor.stdout.on("data",e.debounce((chunk)=>{const data=chunk.toString();const t=data.toLowerCase().includes("dark");(this._theme=t?i.Dark:i.Light),this._onDidThemeChange.fire(this._theme)},400))}getDefaultTheme#' $find_result +sed -i 's#}getDefaultTheme#}get isDark(){try{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 ${this.gnomeScheme}`);break;default:break}return theme.includes("dark");}catch(err){console.error("尝试获取主题信息失败,使用默认暗色",err);return true;}}get gnomeScheme(){const gnomeVersion=execSync(`gnome-shell --version`).toString().replace(/[\\r\\n]/g,"").split(" ");const gnomeVersionNum=gnomeVersion.length==3?Number(gnomeVersion[2]):0;return gnomeVersionNum>=42?"color-scheme":"gtk-theme"}monitorTheme(){try{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",this.gnomeScheme,]);break;default:console.warn(`NOT SUPPORTED!!!DESKTOP_SESSION:${DESKTOP_SESSION}`);break}monitor\&\&monitor.on("error",(err)=>{console.error("monitorTheme",err)});monitor\&\&monitor.stdout.on("data",e.debounce((chunk)=>{const data=chunk.toString();const t=data.toLowerCase().includes("dark");(this._theme=t?i.Dark:i.Light),this._onDidThemeChange.fire(this._theme)},400));}catch(err){console.error("尝试监听主题失败!", err);}}getDefaultTheme#' $find_result # fix update check find_result=$( grep -lr "whatsnew.html" "$tmp_dir/core.wxvpkg" )