Merge pull request #36 from icepie/master

提升 Gnome 桌面下跟随系统浅暗色主题的功能
This commit is contained in:
msojocs 2022-04-10 16:02:04 +08:00 committed by GitHub
commit 2f18e2a178
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,13 +16,22 @@ class CheckDark {
break;
case "gnome":
case "gnome-classic":
monitor = spawn("gsettings", [
"monitor",
"org.gnome.desktop.interface",
"gtk-theme",
]);
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",
]);
}
break;
default:
console.warn(
`NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}`
@ -37,7 +46,7 @@ class CheckDark {
monitor.stdout.on("data", (chunk) => {
// TODO: 防抖动包装
const data = chunk.toString();
const t = data.includes("dark");
const t = data.includes("dark") || data.includes("Dark");
console.log(data);
console.log("dark", t);
// (this._theme = t ? i.Dark : i.Light),
@ -56,15 +65,24 @@ class CheckDark {
break;
case "gnome":
case "gnome-classic":
theme = execSync(
`gsettings get org.gnome.desktop.interface gtk-theme`
);
// 判断 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`
);
}
break;
default:
break;
}
return theme.includes("dark");
return theme.includes("dark") || theme.includes("Dark");
}
}
const cd = new CheckDark();
@ -128,7 +146,7 @@ function original() {
"gtk-theme",
]);
break;
default:
console.warn(
`NOT SUPPORTED !!! DESKTOP_SESSION: ${DESKTOP_SESSION}`
@ -147,7 +165,7 @@ function original() {
console.warn(data);
console.warn("dark", t);
(this._theme = t ? i.Dark : i.Light),
this._onDidThemeChange.fire(this._theme);
this._onDidThemeChange.fire(this._theme);
}, 400));
}
registerListeners() {
@ -156,7 +174,7 @@ function original() {
(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));
}
@ -193,21 +211,21 @@ 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
);
}
@ -227,7 +245,7 @@ function original() {
`gsettings get org.gnome.desktop.interface gtk-theme`
);
break;
default:
break;
}