Extension: Remove color scheme settings

GNOME is built around the `default` and `prefer-dark` color schemes,
adding `prefer-light` into the mix generates too much paper cuts.

This could be reverted if GNOME add proper `prefer-light` integration.
This commit is contained in:
Romain Vigier
2026-08-06 16:29:26 +02:00
parent f2f2921ef1
commit f0132867fb
7 changed files with 12 additions and 74 deletions
@@ -16,11 +16,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
<value nick="teal" value="8"/>
<value nick="yellow" value="9"/>
</enum>
<enum id="org.gnome.shell.extensions.nightthemeswitcher.color-scheme-enum">
<value nick="default" value="0"/>
<value nick="prefer-dark" value="1"/>
<value nick="prefer-light" value="2"/>
</enum>
<schema id="org.gnome.shell.extensions.nightthemeswitcher" path="/org/gnome/shell/extensions/nightthemeswitcher/">
<key name="settings-version" type="i">
<default>0</default>
@@ -76,14 +71,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
<default>0</default>
</key>
</schema>
<schema id="org.gnome.shell.extensions.nightthemeswitcher.color-scheme" path="/org/gnome/shell/extensions/nightthemeswitcher/color-scheme/">
<key name="day" enum="org.gnome.shell.extensions.nightthemeswitcher.color-scheme-enum">
<default>"default"</default>
</key>
<key name="night" enum="org.gnome.shell.extensions.nightthemeswitcher.color-scheme-enum">
<default>"prefer-dark"</default>
</key>
</schema>
<schema id="org.gnome.shell.extensions.nightthemeswitcher.accent-color" path="/org/gnome/shell/extensions/nightthemeswitcher/accent-color/">
<key name="day" enum="org.gnome.shell.extensions.nightthemeswitcher.accent-color-enum">
<default>"unset"</default>
-33
View File
@@ -26,39 +26,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
</child>
<child>
<object class="AdwPreferencesGroup">
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Style</property>
<child>
<object class="AdwToggleGroup">
<style>
<class name="flat"/>
<class name="round"/>
</style>
<property name="valign">center</property>
<property name="active-name" bind-source="AppearanceChooser" bind-property="color-scheme" bind-flags="bidirectional"/>
<child>
<object class="AdwToggle">
<property name="name">prefer-light</property>
<property name="label" translatable="yes">Light</property>
</object>
</child>
<child>
<object class="AdwToggle">
<property name="name">default</property>
<property name="label" translatable="yes">Default</property>
</object>
</child>
<child>
<object class="AdwToggle">
<property name="name">prefer-dark</property>
<property name="label" translatable="yes">Dark</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">Accent color</property>
+6 -2
View File
@@ -27,7 +27,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="name">day</property>
<property name="title" translatable="yes">Day</property>
<property name="child">
<object class="AppearanceChooser" id="day_appearance_chooser"/>
<object class="AppearanceChooser" id="day_appearance_chooser">
<property name="color-scheme">default</property>
</object>
</property>
</object>
</child>
@@ -36,7 +38,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
<property name="name">night</property>
<property name="title" translatable="yes">Night</property>
<property name="child">
<object class="AppearanceChooser" id="night_appearance_chooser"/>
<object class="AppearanceChooser" id="night_appearance_chooser">
<property name="color-scheme">prefer-dark</property>
</object>
</property>
</object>
</child>
+1 -19
View File
@@ -14,7 +14,6 @@ import { Switcher } from "./Switcher.js";
* The Color Scheme Switcher changes the system color scheme according to the time.
*/
export class ColorSchemeSwitcher extends Switcher {
#settings;
#interfaceSettings;
#timer;
@@ -25,15 +24,12 @@ export class ColorSchemeSwitcher extends Switcher {
* @param {import("./Timer.js").Timer} params.timer Timer to listen to.
*/
constructor({ timer }) {
const settings = NTS.getSettings(`${NTS.metadata["settings-schema"]}.color-scheme`);
super({
name: "Color Scheme",
timer,
settings,
callback: (time) => this.#onTimeChanged(time),
});
this.#timer = timer;
this.#settings = settings;
this.#interfaceSettings = new Gio.Settings({ schema: "org.gnome.desktop.interface" });
}
@@ -49,14 +45,6 @@ export class ColorSchemeSwitcher extends Switcher {
#connectSettings() {
debug.message("Connecting Color Scheme Switcher to settings...");
this.#settingsConnections.push({
settings: this.#settings,
id: this.#settings.connect("changed::day", this.#onColorSchemeChanged.bind(this)),
});
this.#settingsConnections.push({
settings: this.#settings,
id: this.#settings.connect("changed::night", this.#onColorSchemeChanged.bind(this)),
});
this.#settingsConnections.push({
settings: this.#interfaceSettings,
id: this.#interfaceSettings.connect("changed::color-scheme", this.#onSystemColorSchemeChanged.bind(this)),
@@ -70,16 +58,10 @@ export class ColorSchemeSwitcher extends Switcher {
}
#onTimeChanged(time) {
const colorScheme = time === Time.NIGHT ? this.#settings.get_string("night") : this.#settings.get_string("day");
const colorScheme = time === Time.NIGHT ? ColorScheme.PREFER_DARK : ColorScheme.DEFAULT;
this.#interfaceSettings.set_string("color-scheme", colorScheme);
}
#onColorSchemeChanged(_settings, time) {
const colorScheme = this.#settings.get_string(time);
debug.message(`${time} color scheme changed to ${colorScheme}.`);
if (time === this.#timer.time) this.#interfaceSettings.set_string("color-scheme", colorScheme);
}
#onSystemColorSchemeChanged() {
const systemColorScheme = this.#interfaceSettings.get_string("color-scheme");
const time = systemColorScheme === ColorScheme.PREFER_DARK ? Time.NIGHT : Time.DAY;
+4 -2
View File
@@ -27,11 +27,11 @@ export class Switcher {
* @param {object} params Params object.
* @param {string} params.name Name of the switcher.
* @param {import("./Timer.js").Timer} params.timer Timer to listen to.
* @param {import("gi://Gio").default.Settings} params.settings Settings.
* @param {?import("gi://Gio").default.Settings} params.settings Settings.
* @param {TimeChangedCallback} params.callback Callback function.
* @param {boolean} params.disableable If the switcher can be disabled using an `enabled` key in the settings.
*/
constructor({ name, timer, settings, callback, disableable = false }) {
constructor({ name, timer, settings = null, callback, disableable = false }) {
this.#name = name;
this.#timer = timer;
this.#settings = settings;
@@ -41,6 +41,8 @@ export class Switcher {
enable() {
debug.message(`Enabling ${this.#name} switcher...`);
if (this.#disableable && !this.#settings)
throw new Error(`${this.#name} Switcher can't be disabled without settings.`);
if (this.#disableable) this.#watchStatus();
if (!this.#disableable || this.#settings.get_boolean("enabled")) {
this.#connectTimer();
+1 -4
View File
@@ -17,7 +17,7 @@ export class AppearancePage extends Adw.PreferencesPage {
);
}
constructor({ accentColorSettings, colorSchemeSettings, ...params } = {}) {
constructor({ accentColorSettings, ...params } = {}) {
super(params);
const backgroundSettings = new Gio.Settings({ schema: "org.gnome.desktop.background" });
const interfaceSettings = new Gio.Settings({ schema: "org.gnome.desktop.interface" });
@@ -30,9 +30,6 @@ export class AppearancePage extends Adw.PreferencesPage {
accentColorSettings.bind("day", this._day_appearance_chooser, "accent-color", Gio.SettingsBindFlags.DEFAULT);
accentColorSettings.bind("night", this._night_appearance_chooser, "accent-color", Gio.SettingsBindFlags.DEFAULT);
colorSchemeSettings.bind("day", this._day_appearance_chooser, "color-scheme", Gio.SettingsBindFlags.DEFAULT);
colorSchemeSettings.bind("night", this._night_appearance_chooser, "color-scheme", Gio.SettingsBindFlags.DEFAULT);
backgroundSettings.bind(
"picture-uri",
this._day_appearance_chooser,
-1
View File
@@ -67,7 +67,6 @@ export default class NightThemeSwitcherPreferences extends ExtensionPreferences
[
new AppearancePage({
accentColorSettings: this.getSettings(`${this.metadata["settings-schema"]}.accent-color`),
colorSchemeSettings: this.getSettings(`${this.metadata["settings-schema"]}.color-scheme`),
}),
new CommandsPage({ settings: this.getSettings(`${this.metadata["settings-schema"]}.commands`) }),
new TweaksPage({