mirror of
https://github.com/msojocs/wechat-web-devtools-linux.git
synced 2025-07-07 00:02:14 +08:00
feat: 提升主题变化兼容性 #35
This commit is contained in:
parent
2f18e2a178
commit
351c9a8613
@ -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
|
||||
|
@ -1,4 +1,5 @@
|
||||
#!/bin/bash
|
||||
# 此脚本用于使修改 core.wxvpkg 内的代码及时生效
|
||||
set -e
|
||||
root_dir=$(cd `dirname $0`/.. && pwd -P)
|
||||
a=$1
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user