diff --git a/changelog.md b/changelog.md index 0405d43..aa2c232 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,7 @@ +# 1.05.2203070-8 / 2022-04-10 +- fix: 网络较差时vscode-ripgrep安装失败的问题 +- feat: 主题深浅跟随系统变化,感谢icepie的参与 + # 1.05.2203070-7 / 2022-03-19 - fix: cli - 兼容ubuntu16.04 diff --git a/test/core-test b/test/core-test index 3f39ebb..a0a3017 100755 --- a/test/core-test +++ b/test/core-test @@ -1,4 +1,5 @@ #!/bin/bash +# 此脚本用于使修改 core.wxvpkg 内的代码及时生效 set -e root_dir=$(cd `dirname $0`/.. && pwd -P) a=$1 diff --git a/test/theme-check.js b/test/theme-check.js index 6938a9e..bb19ece 100644 --- a/test/theme-check.js +++ b/test/theme-check.js @@ -16,21 +16,11 @@ class CheckDark { break; case "gnome": case "gnome-classic": - const gnomeVersion = execSync(`gnome-shell --version`).toString().replace(/[\r\n]/g, "").split(" ") - const gnomeVersionNum = gnomeVersion.length == 3 ? Number(gnomeVersion[2]) : 0 - if (gnomeVersionNum >= 42) { - monitor = spawn("gsettings", [ - "monitor", - "org.gnome.desktop.interface", - "color-scheme", - ]); - } else { - monitor = spawn("gsettings", [ - "monitor", - "org.gnome.desktop.interface", - "gtk-theme", - ]); - } + monitor = spawn("gsettings", [ + "monitor", + "org.gnome.desktop.interface", + this.gnomeScheme, + ]); break; default: console.warn( @@ -46,7 +36,7 @@ class CheckDark { monitor.stdout.on("data", (chunk) => { // TODO: 防抖动包装 const data = chunk.toString(); - const t = data.includes("dark") || data.includes("Dark"); + const t = data.toLowerCase().includes("dark"); console.log(data); console.log("dark", t); // (this._theme = t ? i.Dark : i.Light), @@ -65,24 +55,29 @@ class CheckDark { break; case "gnome": case "gnome-classic": - // 判断 Gnome-Shell 版本 - const gnomeVersion = execSync(`gnome-shell --version`).toString().replace(/[\r\n]/g, "").split(" ") - const gnomeVersionNum = gnomeVersion.length == 3 ? Number(gnomeVersion[2]) : 0 - if (gnomeVersionNum >= 42) { - theme = execSync( - `gsettings get org.gnome.desktop.interface color-scheme` - ); - } else { - theme = execSync( - `gsettings get org.gnome.desktop.interface gtk-theme` - ); - } + theme = execSync( + `gsettings get org.gnome.desktop.interface ${this.gnomeScheme}` + ); break; default: + console.warn( + `NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}` + ); break; } - return theme.includes("dark") || theme.includes("Dark"); + console.log(theme.toString()); + return theme.toString().toLowerCase().includes("dark"); + } + get gnomeScheme() { + // 判断 Gnome-Shell 版本 + 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"; } } const cd = new CheckDark(); @@ -127,54 +122,13 @@ function original() { get onDidThemeChange() { return this._onDidThemeChange.event; } - 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: - 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.includes("dark"); - console.warn(data); - console.warn("dark", t); - (this._theme = t ? i.Dark : i.Light), - this._onDidThemeChange.fire(this._theme); - }, 400)); - } registerListeners() { var e, t; this.isEnabled() && (null === (e = this.mediaQuery) || void 0 === e || e.addEventListener("change", this.onMediaQueryChange), - null === (t = this.mediaQuery2) || + null === (t = this.mediaQuery2) || void 0 === t || t.addEventListener("change", this.onMediaQueryChange)); } @@ -211,24 +165,25 @@ function original() { get mediaQuery() { return ( this._mediaQuery || - (this._mediaQuery = window.matchMedia( - "(prefers-color-scheme: dark)" - )), + (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)), + (global.contentWindow && global.contentWindow !== window + ? (this._mediaQuery2 = + global.contentWindow.matchMedia( + "(prefers-color-scheme: dark)" + )) + : (this._mediaQuery2 = null)), this._mediaQuery2 ); } + // 额外添加功能 start get isDark() { const { DESKTOP_SESSION } = process.env; console.log(DESKTOP_SESSION); @@ -242,7 +197,7 @@ function original() { case "gnome": case "gnome-classic": theme = execSync( - `gsettings get org.gnome.desktop.interface gtk-theme` + `gsettings get org.gnome.desktop.interface ${this.gnomeScheme}` ); break; @@ -251,6 +206,59 @@ function original() { } return theme.includes("dark"); } + get gnomeScheme() { + // 判断 Gnome-Shell 版本 + 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) => { + // 防抖动包装 防抖动, 该函数会从上一次被调用后,延迟 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() { return i.Dark; } diff --git a/tools/fix-core.sh b/tools/fix-core.sh index e6577bf..f0f96b7 100755 --- a/tools/fix-core.sh +++ b/tools/fix-core.sh @@ -72,11 +72,14 @@ fi # fix theme find_result=$( grep -lr "OSThemeController=" "$tmp_dir/core.wxvpkg" ) echo "theme: $find_result" +# require of child_process sed -i 's/"use strict";O/"use strict";const {execSync,spawn}=require("child_process");O/' $find_result +# replace listener to monitor sed -i 's/this.registerListeners()/this.monitorTheme()/' $find_result -sed -i 's/}registerListeners/}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: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.includes("dark");console.warn(data);console.warn("dark",t);(this._theme=t?i.Dark:i.Light),this._onDidThemeChange.fire(this._theme)},400))}registerListeners/' $find_result +# replace check func sed -i 's/mediaQuery.matches/isDark/' $find_result -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 gtk-theme`);break;default:break}return theme.includes("dark")}getDefaultTheme/' $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 # pack 路径 到 文件 echo "pack"