Split preferences into different files

This commit is contained in:
Romain Vigier
2020-09-23 20:14:08 +02:00
parent e7f1a45c57
commit 4454f7e87b
23 changed files with 4118 additions and 3512 deletions
+117
View File
@@ -0,0 +1,117 @@
/*
Night Theme Switcher Gnome Shell extension
Copyright (C) 2020 Romain Vigier
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http s ://www.gnu.org/licenses/>.
*/
const { GdkPixbuf, Gio, GLib, Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata.uuid);
const _ = Gettext.gettext;
var BackgroundsPreferences = class {
constructor(settings) {
this._builder = new Gtk.Builder();
this._builder.add_from_file(GLib.build_filenamev([Me.path, 'preferences', 'ui', 'backgrounds.ui']));
this.widget = this._builder.get_object('backgrounds');
this.name = 'backgrounds';
this.title = _('Backgrounds');
this._connectSettings(settings);
}
_connectSettings(settings) {
const enabledSwitch = this._builder.get_object('enabled_switch');
settings.backgrounds.settings.bind(
'enabled',
enabledSwitch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
const choosers = this._builder.get_object('choosers');
settings.backgrounds.settings.bind(
'enabled',
choosers,
'sensitive',
Gio.SettingsBindFlags.DEFAULT
);
const dayChooser = this._builder.get_object('day_chooser');
const dayBackgroundPreview = this._builder.get_object('day_background_preview');
const updateDayChooserUri = () => {
dayChooser.set_uri(settings.backgrounds.day);
};
settings.backgrounds.connect('day-changed', () => updateDayChooserUri());
dayChooser.connect('update-preview', () => {
const file = dayChooser.get_preview_filename();
const allowedContentTypes = ['image/jpeg', 'image/png', 'image/tiff'];
if (allowedContentTypes.includes(Gio.content_type_guess(file, null)[0])) {
const pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(file, 256, 256);
dayBackgroundPreview.set_from_pixbuf(pixbuf);
}
});
dayChooser.connect('file-set', () => {
settings.backgrounds.day = dayChooser.get_uri();
});
updateDayChooserUri();
const dayClearButton = this._builder.get_object('day_clear_button');
dayClearButton.connect('clicked', () => {
settings.backgrounds.day = '';
});
const updateDayClearButtonSensitivity = () => {
dayClearButton.sensitive = !!settings.backgrounds.day;
};
settings.backgrounds.connect('day-changed', () => updateDayClearButtonSensitivity());
updateDayClearButtonSensitivity();
const nightChooser = this._builder.get_object('night_chooser');
const nightBackgroundPreview = this._builder.get_object('night_background_preview');
const updateNightChooserUri = () => {
nightChooser.set_uri(settings.backgrounds.night);
};
settings.backgrounds.connect('night-changed', () => updateNightChooserUri());
nightChooser.connect('update-preview', () => {
const file = nightChooser.get_preview_filename();
const allowedContentTypes = ['image/jpeg', 'image/png', 'image/tiff'];
if (allowedContentTypes.includes(Gio.content_type_guess(file, null)[0])) {
const pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(file, 256, 256);
nightBackgroundPreview.set_from_pixbuf(pixbuf);
}
});
nightChooser.connect('file-set', () => {
settings.backgrounds.night = nightChooser.get_uri();
});
updateNightChooserUri();
const nightClearButton = this._builder.get_object('night_clear_button');
nightClearButton.connect('clicked', () => {
settings.backgrounds.night = '';
});
const updateNightClearButtonSensitivity = () => {
nightClearButton.sensitive = !!settings.backgrounds.night;
};
settings.backgrounds.connect('night-changed', () => updateNightClearButtonSensitivity());
updateNightClearButtonSensitivity();
}
};
+95
View File
@@ -0,0 +1,95 @@
/*
Night Theme Switcher Gnome Shell extension
Copyright (C) 2020 Romain Vigier
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http s ://www.gnu.org/licenses/>.
*/
const { Gio, GLib, Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata.uuid);
const _ = Gettext.gettext;
var CommandsPreferences = class {
constructor(settings) {
this._builder = new Gtk.Builder();
this._builder.add_from_file(GLib.build_filenamev([Me.path, 'preferences', 'ui', 'commands.ui']));
this.widget = this._builder.get_object('commands');
this.name = 'commands';
this.title = _('Commands');
this._connectSettings(settings);
}
_connectSettings(settings) {
const enabledSwitch = this._builder.get_object('enabled_switch');
settings.commands.settings.bind(
'enabled',
enabledSwitch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
const entries = this._builder.get_object('entries');
settings.commands.settings.bind(
'enabled',
entries,
'sensitive',
Gio.SettingsBindFlags.DEFAULT
);
const sunriseEntry = this._builder.get_object('sunrise_entry');
settings.commands.settings.bind(
'sunrise',
sunriseEntry,
'text',
Gio.SettingsBindFlags.DEFAULT
);
const sunriseClearButton = this._builder.get_object('sunrise_clear_button');
sunriseClearButton.connect('clicked', () => {
settings.commands.sunrise = '';
});
const updateSunriseClearButtonSensitivity = () => {
sunriseClearButton.sensitive = !!settings.commands.sunrise;
};
settings.commands.connect('sunrise-changed', () => updateSunriseClearButtonSensitivity());
updateSunriseClearButtonSensitivity();
const sunsetEntry = this._builder.get_object('sunset_entry');
settings.commands.settings.bind(
'sunset',
sunsetEntry,
'text',
Gio.SettingsBindFlags.DEFAULT
);
const sunsetClearButton = this._builder.get_object('sunset_clear_button');
sunsetClearButton.connect('clicked', () => {
settings.commands.sunset = '';
});
const updateSunsetClearButtonSensitivity = () => {
sunsetClearButton.sensitive = !!settings.commands.sunset;
};
settings.commands.connect('sunset-changed', () => updateSunsetClearButtonSensitivity());
updateSunsetClearButtonSensitivity();
}
};
+81
View File
@@ -0,0 +1,81 @@
/*
Night Theme Switcher Gnome Shell extension
Copyright (C) 2020 Romain Vigier
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http s ://www.gnu.org/licenses/>.
*/
const { Gio, GLib, Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
const utils = Me.imports.utils;
const Gettext = imports.gettext.domain(Me.metadata.uuid);
const _ = Gettext.gettext;
var CursorThemePreferences = class {
constructor(settings) {
this._builder = new Gtk.Builder();
this._builder.add_from_file(GLib.build_filenamev([Me.path, 'preferences', 'ui', 'cursor_theme.ui']));
this.widget = this._builder.get_object('cursor_theme');
this.name = 'cursor-theme';
this.title = _('Cursor theme');
this._connectSettings(settings);
}
_connectSettings(settings) {
const enabledSwitch = this._builder.get_object('enabled_switch');
settings.cursorVariants.settings.bind(
'enabled',
enabledSwitch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
const variants = this._builder.get_object('variants');
settings.cursorVariants.settings.bind(
'enabled',
variants,
'sensitive',
Gio.SettingsBindFlags.DEFAULT
);
const installedCursorThemes = Array.from(utils.getInstalledCursorThemes()).sort();
const dayCombo = this._builder.get_object('day_combo');
const nightCombo = this._builder.get_object('night_combo');
installedCursorThemes.forEach(theme => {
dayCombo.append(theme, theme);
nightCombo.append(theme, theme);
});
settings.cursorVariants.settings.bind(
'day',
dayCombo,
'active-id',
Gio.SettingsBindFlags.DEFAULT
);
settings.cursorVariants.settings.bind(
'night',
nightCombo,
'active-id',
Gio.SettingsBindFlags.DEFAULT
);
}
};
+97
View File
@@ -0,0 +1,97 @@
/*
Night Theme Switcher Gnome Shell extension
Copyright (C) 2020 Romain Vigier
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http s ://www.gnu.org/licenses/>.
*/
const { Gio, GLib, Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
const utils = Me.imports.utils;
const Gettext = imports.gettext.domain(Me.metadata.uuid);
const _ = Gettext.gettext;
var GtkThemePreferences = class {
constructor(settings) {
this._builder = new Gtk.Builder();
this._builder.add_from_file(GLib.build_filenamev([Me.path, 'preferences', 'ui', 'gtk_theme.ui']));
this.widget = this._builder.get_object('gtk_theme');
this.name = 'gtk-theme';
this.title = _('GTK theme');
this._connectSettings(settings);
}
_connectSettings(settings) {
const enabledSwitch = this._builder.get_object('enabled_switch');
settings.gtkVariants.settings.bind(
'enabled',
enabledSwitch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
const manual = this._builder.get_object('manual');
settings.gtkVariants.settings.bind(
'enabled',
manual,
'sensitive',
Gio.SettingsBindFlags.DEFAULT
);
const manualSwitch = this._builder.get_object('manual_switch');
settings.gtkVariants.settings.bind(
'manual',
manualSwitch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
const variants = this._builder.get_object('variants');
const updateVariantsSensitivity = () => {
variants.sensitive = !!(settings.gtkVariants.enabled && settings.gtkVariants.manual);
};
settings.gtkVariants.connect('status-changed', () => updateVariantsSensitivity());
settings.gtkVariants.connect('manual-changed', () => updateVariantsSensitivity());
updateVariantsSensitivity();
const dayCombo = this._builder.get_object('day_combo');
const nightCombo = this._builder.get_object('night_combo');
const installedGtkThemes = Array.from(utils.getInstalledGtkThemes()).sort();
installedGtkThemes.forEach(theme => {
dayCombo.append(theme, theme);
nightCombo.append(theme, theme);
});
settings.gtkVariants.settings.bind(
'day',
dayCombo,
'active-id',
Gio.SettingsBindFlags.DEFAULT
);
settings.gtkVariants.settings.bind(
'night',
nightCombo,
'active-id',
Gio.SettingsBindFlags.DEFAULT
);
}
};
+81
View File
@@ -0,0 +1,81 @@
/*
Night Theme Switcher Gnome Shell extension
Copyright (C) 2020 Romain Vigier
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http s ://www.gnu.org/licenses/>.
*/
const { Gio, GLib, Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
const utils = Me.imports.utils;
const Gettext = imports.gettext.domain(Me.metadata.uuid);
const _ = Gettext.gettext;
var IconThemePreferences = class {
constructor(settings) {
this._builder = new Gtk.Builder();
this._builder.add_from_file(GLib.build_filenamev([Me.path, 'preferences', 'ui', 'icon_theme.ui']));
this.widget = this._builder.get_object('icon_theme');
this.name = 'icon-theme';
this.title = _('Icon theme');
this._connectSettings(settings);
}
_connectSettings(settings) {
const enabledSwitch = this._builder.get_object('enabled_switch');
settings.iconVariants.settings.bind(
'enabled',
enabledSwitch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
const variants = this._builder.get_object('variants');
settings.iconVariants.settings.bind(
'enabled',
variants,
'sensitive',
Gio.SettingsBindFlags.DEFAULT
);
const installedIconThemes = Array.from(utils.getInstalledIconThemes()).sort();
const dayCombo = this._builder.get_object('day_combo');
const nightCombo = this._builder.get_object('night_combo');
installedIconThemes.forEach(theme => {
dayCombo.append(theme, theme);
nightCombo.append(theme, theme);
});
settings.iconVariants.settings.bind(
'day',
dayCombo,
'active-id',
Gio.SettingsBindFlags.DEFAULT
);
settings.iconVariants.settings.bind(
'night',
nightCombo,
'active-id',
Gio.SettingsBindFlags.DEFAULT
);
}
};
@@ -0,0 +1,89 @@
/*
Night Theme Switcher Gnome Shell extension
Copyright (C) 2020 Romain Vigier
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http s ://www.gnu.org/licenses/>.
*/
const { Gdk, GLib, Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
const Gettext = imports.gettext.domain(Me.metadata.uuid);
const _ = Gettext.gettext;
const utils = Me.imports.utils;
var OndemandKeyboardShortcutDialog = class {
constructor(settings) {
this._builder = new Gtk.Builder();
this._builder.add_from_file(GLib.build_filenamev([Me.path, 'preferences', 'ui', 'ondemand_keyboard_shortcut_dialog.ui']));
this.widget = this._builder.get_object('dialog');
this._connectSettings(settings);
return this.widget;
}
_connectSettings(settings) {
this.widget.connect('key-press-event', (_widget, event) => {
const state = event.get_state()[1];
let mask = state & Gtk.accelerator_get_default_mod_mask();
mask &= ~Gdk.ModifierType.LOCK_MASK;
const keycode = event.get_keycode()[1];
const eventKeyval = event.get_keyval()[1];
let keyval = Gdk.keyval_to_lower(eventKeyval);
if (mask === 0 && keyval === Gdk.KEY_Escape) {
this.widget.visible = false;
return Gdk.EVENT_STOP;
}
if (keyval === Gdk.KEY_ISO_Left_Tab)
keyval = Gdk.KEY_Tab;
if (keyval !== eventKeyval)
mask |= Gdk.ModifierType.SHIFT_MASK;
if (keyval === Gdk.KEY_Sys_Req && (mask & Gdk.ModifierType.MOD1_MASK) !== 0)
keyval = Gdk.KEY_Print;
if (
!utils.isBindingValid({ mask, keycode, keyval }) ||
!utils.isAccelValid({ mask, keyval })
)
return Gdk.EVENT_STOP;
const binding = Gtk.accelerator_name_with_keycode(
null,
keyval,
keycode,
mask
);
settings.time.ondemandKeybinding = binding;
this.widget.close();
return Gdk.EVENT_STOP;
});
const cancelButton = this._builder.get_object('cancel_button');
cancelButton.connect('clicked', () => {
this.widget.close();
});
}
};
+75
View File
@@ -0,0 +1,75 @@
/*
Night Theme Switcher Gnome Shell extension
Copyright (C) 2020 Romain Vigier
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http s ://www.gnu.org/licenses/>.
*/
const { Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
const { Settings } = Me.imports.settings.Settings;
const { BackgroundsPreferences } = Me.imports.preferences.Backgrounds;
const { CommandsPreferences } = Me.imports.preferences.Commands;
const { CursorThemePreferences } = Me.imports.preferences.CursorTheme;
const { GtkThemePreferences } = Me.imports.preferences.GtkTheme;
const { IconThemePreferences } = Me.imports.preferences.IconTheme;
const { SchedulePreferences } = Me.imports.preferences.Schedule;
const { ShellThemePreferences } = Me.imports.preferences.ShellTheme;
var Preferences = class {
constructor() {
this.settings = new Settings();
this.settings.enable();
this.widget = new Gtk.Stack({
interpolate_size: true,
vhomogeneous: false,
transition_type: Gtk.StackTransitionType.SLIDE_LEFT_RIGHT,
visible: true,
});
const schedulePreferences = new SchedulePreferences(this.settings);
this.widget.add_titled(schedulePreferences.widget, schedulePreferences.name, schedulePreferences.title);
const gtkThemePreferences = new GtkThemePreferences(this.settings);
this.widget.add_titled(gtkThemePreferences.widget, gtkThemePreferences.name, gtkThemePreferences.title);
const shellThemePreferences = new ShellThemePreferences(this.settings);
this.widget.add_titled(shellThemePreferences.widget, shellThemePreferences.name, shellThemePreferences.title);
const iconThemePreferences = new IconThemePreferences(this.settings);
this.widget.add_titled(iconThemePreferences.widget, iconThemePreferences.name, iconThemePreferences.title);
const cursorThemePreferences = new CursorThemePreferences(this.settings);
this.widget.add_titled(cursorThemePreferences.widget, cursorThemePreferences.name, cursorThemePreferences.title);
const backgroundsPreferences = new BackgroundsPreferences(this.settings);
this.widget.add_titled(backgroundsPreferences.widget, backgroundsPreferences.name, backgroundsPreferences.title);
const commandsPreferences = new CommandsPreferences(this.settings);
this.widget.add_titled(commandsPreferences.widget, commandsPreferences.name, commandsPreferences.title);
this.titlebar = new Gtk.StackSwitcher({
stack: this.widget,
visible: true,
});
}
};
+222
View File
@@ -0,0 +1,222 @@
/*
Night Theme Switcher Gnome Shell extension
Copyright (C) 2020 Romain Vigier
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http s ://www.gnu.org/licenses/>.
*/
const { Gio, GLib, Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
const { OndemandKeyboardShortcutDialog } = Me.imports.preferences.OndemandKeyboardShortcutDialog;
const Gettext = imports.gettext.domain(Me.metadata.uuid);
const _ = Gettext.gettext;
var SchedulePreferences = class {
constructor(settings) {
this._builder = new Gtk.Builder();
this._builder.add_from_file(GLib.build_filenamev([Me.path, 'preferences', 'ui', 'schedule.ui']));
this.widget = this._builder.get_object('schedule');
this.name = 'schedule';
this.title = _('Schedule');
this._connectSettings(settings);
}
_connectSettings(settings) {
const autoSwitch = this._builder.get_object('auto_switch');
settings.time.settings.bind(
'manual-time-source',
autoSwitch,
'active',
Gio.SettingsBindFlags.INVERT_BOOLEAN
);
const manual = this._builder.get_object('manual');
settings.time.settings.bind(
'manual-time-source',
manual,
'sensitive',
Gio.SettingsBindFlags.DEFAULT
);
const manualNightlightRadio = this._builder.get_object('manual_nightlight_radio');
const updateManualNightlightRadioActivity = () => {
manualNightlightRadio.active = settings.time.timeSource === 'nightlight';
};
settings.time.connect('time-source-changed', () => updateManualNightlightRadioActivity());
settings.system.colorSettings.bind(
'night-light-enabled',
manualNightlightRadio,
'sensitive',
Gio.SettingsBindFlags.DEFAULT
);
manualNightlightRadio.connect('toggled', () => {
if (manualNightlightRadio.active)
settings.time.timeSource = 'nightlight';
});
updateManualNightlightRadioActivity();
const manualLocationRadio = this._builder.get_object('manual_location_radio');
const updateManualLocationRadioActivity = () => {
manualLocationRadio.active = settings.time.timeSource === 'location';
};
settings.time.connect('time-source-changed', () => updateManualLocationRadioActivity());
settings.system.locationSettings.bind(
'enabled',
manualLocationRadio,
'sensitive',
Gio.SettingsBindFlags.DEFAULT
);
manualLocationRadio.connect('toggled', () => {
if (manualLocationRadio.active)
settings.time.timeSource = 'location';
});
updateManualLocationRadioActivity();
const manualScheduleRadio = this._builder.get_object('manual_schedule_radio');
const updateManualScheduleRadioActivity = () => {
manualScheduleRadio.active = settings.time.timeSource === 'schedule';
};
settings.time.connect('time-source-changed', () => updateManualScheduleRadioActivity());
manualScheduleRadio.connect('toggled', () => {
if (manualScheduleRadio.active)
settings.time.timeSource = 'schedule';
});
updateManualScheduleRadioActivity();
const manualOndemandRadio = this._builder.get_object('manual_ondemand_radio');
const updateManualOndemandRadioActivity = () => {
manualOndemandRadio.active = settings.time.timeSource === 'ondemand';
};
settings.time.connect('time-source-changed', () => updateManualOndemandRadioActivity());
manualOndemandRadio.connect('toggled', () => {
if (manualOndemandRadio.active)
settings.time.timeSource = 'ondemand';
});
updateManualOndemandRadioActivity();
const manualPrefsStack = this._builder.get_object('manual_prefs_stack');
const updateManualPrefsStackVisible = () => {
switch (settings.time.timeSource) {
case 'schedule':
manualPrefsStack.set_visible_child_name('schedule_times');
break;
case 'ondemand':
manualPrefsStack.set_visible_child_name('ondemand');
break;
default:
manualPrefsStack.set_visible_child_name('none');
}
};
settings.time.connect('time-source-changed', () => updateManualPrefsStackVisible());
updateManualPrefsStackVisible();
const scheduleTimesSunriseHoursSpin = this._builder.get_object('schedule_times_sunrise_hours_spin');
scheduleTimesSunriseHoursSpin.value = Math.trunc(settings.time.scheduleSunrise);
scheduleTimesSunriseHoursSpin.connect('output', () => {
const text = scheduleTimesSunriseHoursSpin.adjustment.value.toString().padStart(2, '0');
scheduleTimesSunriseHoursSpin.set_text(text);
return true;
});
scheduleTimesSunriseHoursSpin.connect('value-changed', () => {
const oldTime = settings.time.scheduleSunrise;
const oldHour = Math.trunc(oldTime);
const newMinutes = oldTime - oldHour;
const newTime = scheduleTimesSunriseHoursSpin.value + newMinutes;
settings.time.scheduleSunrise = newTime;
});
const scheduleTimesSunriseMinutesSpin = this._builder.get_object('schedule_times_sunrise_minutes_spin');
scheduleTimesSunriseMinutesSpin.value = Math.round((settings.time.scheduleSunrise - Math.trunc(settings.time.scheduleSunrise)) * 60);
scheduleTimesSunriseMinutesSpin.connect('output', () => {
const text = scheduleTimesSunriseMinutesSpin.adjustment.value.toString().padStart(2, '0');
scheduleTimesSunriseMinutesSpin.set_text(text);
return true;
});
scheduleTimesSunriseMinutesSpin.connect('value-changed', () => {
const hour = Math.trunc(settings.time.scheduleSunrise);
const newMinutes = scheduleTimesSunriseMinutesSpin.value / 60;
const newTime = hour + newMinutes;
settings.time.scheduleSunrise = newTime;
});
const scheduleTimesSunsetHoursSpin = this._builder.get_object('schedule_times_sunset_hours_spin');
scheduleTimesSunsetHoursSpin.value = Math.trunc(settings.time.scheduleSunset);
scheduleTimesSunsetHoursSpin.connect('output', () => {
const text = scheduleTimesSunsetHoursSpin.adjustment.value.toString().padStart(2, '0');
scheduleTimesSunsetHoursSpin.set_text(text);
return true;
});
scheduleTimesSunsetHoursSpin.connect('value-changed', () => {
const oldTime = settings.time.scheduleSunset;
const oldHour = Math.trunc(oldTime);
const newMinutes = oldTime - oldHour;
const newTime = scheduleTimesSunsetHoursSpin.value + newMinutes;
settings.time.scheduleSunset = newTime;
});
const scheduleTimesSunsetMinutesSpin = this._builder.get_object('schedule_times_sunset_minutes_spin');
scheduleTimesSunsetMinutesSpin.value = Math.round((settings.time.scheduleSunset - Math.trunc(settings.time.scheduleSunset)) * 60);
scheduleTimesSunsetMinutesSpin.connect('output', () => {
const text = scheduleTimesSunsetMinutesSpin.adjustment.value.toString().padStart(2, '0');
scheduleTimesSunsetMinutesSpin.set_text(text);
return true;
});
scheduleTimesSunsetMinutesSpin.connect('value-changed', () => {
const hour = Math.trunc(settings.time.scheduleSunset);
const newMinutes = scheduleTimesSunsetMinutesSpin.value / 60;
const newTime = hour + newMinutes;
settings.time.scheduleSunset = newTime;
});
const ondemandShortcutButton = this._builder.get_object('ondemand_shortcut_button');
const updateOndemandShortcutButtonLabel = () => {
const label = settings.time.ondemandKeybinding;
ondemandShortcutButton.label = label || _('Choose');
};
settings.time.connect('ondemand-keybinding-changed', () => updateOndemandShortcutButtonLabel());
ondemandShortcutButton.connect('clicked', () => {
const dialog = new OndemandKeyboardShortcutDialog(settings);
dialog.set_transient_for(this.widget.get_toplevel());
dialog.present();
});
updateOndemandShortcutButtonLabel();
const ondemandShortcutClearButton = this._builder.get_object('ondemand_shortcut_clear_button');
ondemandShortcutClearButton.connect('clicked', () => {
settings.time.ondemandKeybinding = '';
});
const updateOndemandShortcutClearButtonVisibility = () => {
ondemandShortcutClearButton.visible = !!settings.time.ondemandKeybinding;
};
settings.time.connect('ondemand-keybinding-changed', () => updateOndemandShortcutClearButtonVisibility());
updateOndemandShortcutClearButtonVisibility();
const ondemandButtonPlacementCombo = this._builder.get_object('ondemand_button_placement_combo');
settings.time.settings.bind(
'ondemand-button-placement',
ondemandButtonPlacementCombo,
'active-id',
Gio.SettingsBindFlags.DEFAULT
);
}
};
+98
View File
@@ -0,0 +1,98 @@
/*
Night Theme Switcher Gnome Shell extension
Copyright (C) 2020 Romain Vigier
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http s ://www.gnu.org/licenses/>.
*/
const { Gio, GLib, Gtk } = imports.gi;
const { extensionUtils } = imports.misc;
const Me = extensionUtils.getCurrentExtension();
const utils = Me.imports.utils;
const Gettext = imports.gettext.domain(Me.metadata.uuid);
const _ = Gettext.gettext;
var ShellThemePreferences = class {
constructor(settings) {
this._builder = new Gtk.Builder();
this._builder.add_from_file(GLib.build_filenamev([Me.path, 'preferences', 'ui', 'shell_theme.ui']));
this.widget = this._builder.get_object('shell_theme');
this.name = 'shell-theme';
this.title = _('Shell theme');
this._connectSettings(settings);
}
_connectSettings(settings) {
const enabledSwitch = this._builder.get_object('enabled_switch');
settings.shellVariants.settings.bind(
'enabled',
enabledSwitch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
const manual = this._builder.get_object('manual');
settings.shellVariants.settings.bind(
'enabled',
manual,
'sensitive',
Gio.SettingsBindFlags.DEFAULT
);
const manualSwitch = this._builder.get_object('manual_switch');
settings.shellVariants.settings.bind(
'manual',
manualSwitch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
const variants = this._builder.get_object('variants');
const updateVariantsSensitivity = () => {
variants.sensitive = !!(settings.shellVariants.enabled && settings.shellVariants.manual);
};
settings.shellVariants.connect('status-changed', () => updateVariantsSensitivity());
settings.shellVariants.connect('manual-changed', () => updateVariantsSensitivity());
updateVariantsSensitivity();
const dayCombo = this._builder.get_object('day_combo');
const nightCombo = this._builder.get_object('night_combo');
const installedShellThemes = Array.from(utils.getInstalledShellThemes()).sort();
installedShellThemes.forEach(theme => {
const themeName = theme === '' ? _('Default') : theme;
dayCombo.append(theme, themeName);
nightCombo.append(theme, themeName);
});
settings.shellVariants.settings.bind(
'day',
dayCombo,
'active-id',
Gio.SettingsBindFlags.DEFAULT
);
settings.shellVariants.settings.bind(
'night',
nightCombo,
'active-id',
Gio.SettingsBindFlags.DEFAULT
);
}
};
+357
View File
@@ -0,0 +1,357 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.36.0
Copyright (C) 2020
This file is part of Night Theme Switcher.
Night Theme Switcher is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Night Theme Switcher is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Night Theme Switcher. If not, see <http://www.gnu.org/licenses/>.
Author: Romain Vigier
-->
<interface domain="nightthemeswitcher@romainvigier.fr">
<requires lib="gtk+" version="3.22"/>
<!-- interface-license-type gplv3 -->
<!-- interface-name Night Theme Switcher -->
<!-- interface-copyright 2020 -->
<!-- interface-authors Romain Vigier -->
<object class="GtkImage" id="day_background_preview">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="pixel_size">256</property>
<property name="icon_name">image-missing</property>
<property name="icon_size">0</property>
</object>
<object class="GtkFileFilter" id="image_filter">
<mime-types>
<mime-type>image/jpeg</mime-type>
<mime-type>image/png</mime-type>
<mime-type>image/tiff</mime-type>
</mime-types>
</object>
<object class="GtkImage" id="night_background_preview">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="pixel_size">256</property>
<property name="icon_name">image-missing</property>
<property name="icon_size">0</property>
</object>
<object class="GtkBox" id="backgrounds">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="margin_left">36</property>
<property name="margin_right">36</property>
<property name="margin_start">36</property>
<property name="margin_end">36</property>
<property name="margin_top">36</property>
<property name="margin_bottom">36</property>
<property name="orientation">vertical</property>
<property name="spacing">30</property>
<property name="baseline_position">top</property>
<child>
<object class="GtkFrame" id="enabled">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Switch backgrounds</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="enabled_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="choosers">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Backgrounds</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Day background</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="spacing">8</property>
<child>
<object class="GtkFileChooserButton" id="day_chooser">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="filter">image_filter</property>
<property name="preview_widget">day_background_preview</property>
<property name="use_preview_label">False</property>
<property name="title" translatable="yes">Select your background image</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="day_clear_button">
<property name="label" translatable="yes">Clear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<style>
<class name="destructive-action"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Night background</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="spacing">8</property>
<child>
<object class="GtkFileChooserButton" id="night_chooser">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="filter">image_filter</property>
<property name="preview_widget">night_background_preview</property>
<property name="use_preview_label">False</property>
<property name="title" translatable="yes">Select your background image</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="night_clear_button">
<property name="label" translatable="yes">Clear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<style>
<class name="destructive-action"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</interface>
+348
View File
@@ -0,0 +1,348 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.36.0 -->
<interface domain="nightthemeswitcher@romainvigier.fr">
<requires lib="gtk+" version="3.22"/>
<object class="GtkBox" id="commands">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="margin_left">36</property>
<property name="margin_right">36</property>
<property name="margin_start">36</property>
<property name="margin_end">36</property>
<property name="margin_top">36</property>
<property name="margin_bottom">36</property>
<property name="orientation">vertical</property>
<property name="spacing">30</property>
<property name="baseline_position">top</property>
<child>
<object class="GtkFrame" id="enabled">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Run commands</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;small&gt;You can set custom commands that will be run when the time of the day changes.&lt;/small&gt;</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="max_width_chars">50</property>
<property name="xalign">0</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="enabled_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="entries">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Commands</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Sunrise command</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<child>
<object class="GtkEntry" id="sunrise_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="width_chars">28</property>
<property name="truncate_multiline">True</property>
<property name="placeholder_text" translatable="yes">notify-send "Hello sunshine!"</property>
<property name="input_purpose">terminal</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="sunrise_clear_button">
<property name="label" translatable="yes">Clear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<style>
<class name="destructive-action"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="linked"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Sunset command</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<child>
<object class="GtkEntry" id="sunset_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="width_chars">28</property>
<property name="truncate_multiline">True</property>
<property name="placeholder_text" translatable="yes">notify-send "Hello moonshine!"</property>
<property name="input_purpose">terminal</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="sunset_clear_button">
<property name="label" translatable="yes">Clear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<style>
<class name="destructive-action"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="linked"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</interface>
+271
View File
@@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.36.0
Copyright (C) 2020
This file is part of Night Theme Switcher.
Night Theme Switcher is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Night Theme Switcher is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Night Theme Switcher. If not, see <http://www.gnu.org/licenses/>.
Author: Romain Vigier
-->
<interface domain="nightthemeswitcher@romainvigier.fr">
<requires lib="gtk+" version="3.22"/>
<!-- interface-license-type gplv3 -->
<!-- interface-name Night Theme Switcher -->
<!-- interface-copyright 2020 -->
<!-- interface-authors Romain Vigier -->
<object class="GtkBox" id="cursor_theme">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="margin_left">36</property>
<property name="margin_right">36</property>
<property name="margin_start">36</property>
<property name="margin_end">36</property>
<property name="margin_top">36</property>
<property name="margin_bottom">36</property>
<property name="orientation">vertical</property>
<property name="spacing">30</property>
<property name="baseline_position">top</property>
<child>
<object class="GtkFrame" id="enabled">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Switch cursor variants</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="enabled_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="active">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="variants">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Variants</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Day variant</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="day_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Night variant</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="night_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</interface>
+372
View File
@@ -0,0 +1,372 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.36.0
Copyright (C) 2020
This file is part of Night Theme Switcher.
Night Theme Switcher is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Night Theme Switcher is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Night Theme Switcher. If not, see <http://www.gnu.org/licenses/>.
Author: Romain Vigier
-->
<interface domain="nightthemeswitcher@romainvigier.fr">
<requires lib="gtk+" version="3.22"/>
<!-- interface-license-type gplv3 -->
<!-- interface-name Night Theme Switcher -->
<!-- interface-copyright 2020 -->
<!-- interface-authors Romain Vigier -->
<object class="GtkBox" id="gtk_theme">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="margin_left">36</property>
<property name="margin_right">36</property>
<property name="margin_start">36</property>
<property name="margin_end">36</property>
<property name="margin_top">36</property>
<property name="margin_bottom">36</property>
<property name="orientation">vertical</property>
<property name="spacing">30</property>
<property name="baseline_position">top</property>
<child>
<object class="GtkFrame" id="enabled">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Switch GTK variants</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="enabled_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="active">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="manual">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Manual variants</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;small&gt;You can manually set variants if the extension cannot automatically detect the day and night variants of your GTK theme. Please &lt;a href="https://gitlab.com/rmnvgr/nightthemeswitcher-gnome-shell-extension/-/issues"&gt;submit a request&lt;/a&gt; to get your theme supported.&lt;/small&gt;</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="max_width_chars">50</property>
<property name="xalign">0</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="manual_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="variants">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Manual variants</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Day variant</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="day_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Night variant</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="night_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</interface>
+271
View File
@@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.36.0
Copyright (C) 2020
This file is part of Romain Vigier.
Romain Vigier is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Romain Vigier is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Romain Vigier. If not, see <http://www.gnu.org/licenses/>.
Author: Romain Vigier
-->
<interface domain="nightthemeswitcher@romainvigier.fr">
<requires lib="gtk+" version="3.22"/>
<!-- interface-license-type gplv3 -->
<!-- interface-name Romain Vigier -->
<!-- interface-copyright 2020 -->
<!-- interface-authors Romain Vigier -->
<object class="GtkBox" id="icon_theme">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="margin_left">36</property>
<property name="margin_right">36</property>
<property name="margin_start">36</property>
<property name="margin_end">36</property>
<property name="margin_top">36</property>
<property name="margin_bottom">36</property>
<property name="orientation">vertical</property>
<property name="spacing">30</property>
<property name="baseline_position">top</property>
<child>
<object class="GtkFrame" id="enabled">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Switch icon variants</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="enabled_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="active">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="variants">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Variants</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Day variant</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="day_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Night variant</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="night_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</interface>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.36.0
Copyright (C) 2020
This file is part of Night Theme Switcher.
Night Theme Switcher is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Night Theme Switcher is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Night Theme Switcher. If not, see <http://www.gnu.org/licenses/>.
Author: Romain Vigier
-->
<interface domain="nightthemeswitcher@romainvigier.fr">
<requires lib="gtk+" version="3.22"/>
<!-- interface-license-type gplv3 -->
<!-- interface-name Night Theme Switcher -->
<!-- interface-copyright 2020 -->
<!-- interface-authors Romain Vigier -->
<object class="GtkDialog" id="dialog">
<property name="can_focus">False</property>
<property name="modal">True</property>
<property name="default_width">440</property>
<property name="default_height">200</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Press your keyboard shortcut...</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">Keyboard shortcut</property>
<child>
<object class="GtkButton" id="cancel_button">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
</child>
</object>
</child>
</object>
</interface>
+747
View File
@@ -0,0 +1,747 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.36.0
Copyright (C) 2020
This file is part of Night Theme Switcher.
Night Theme Switcher is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Night Theme Switcher is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Night Theme Switcher. If not, see <http://www.gnu.org/licenses/>.
Author: Romain Vigier
-->
<interface domain="nightthemeswitcher@romainvigier.fr">
<requires lib="gtk+" version="3.22"/>
<!-- interface-license-type gplv3 -->
<!-- interface-name Night Theme Switcher -->
<!-- interface-copyright 2020 -->
<!-- interface-authors Romain Vigier -->
<object class="GtkBox" id="schedule">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="margin_left">36</property>
<property name="margin_right">36</property>
<property name="margin_start">36</property>
<property name="margin_end">36</property>
<property name="margin_top">36</property>
<property name="margin_bottom">36</property>
<property name="orientation">vertical</property>
<property name="spacing">30</property>
<property name="baseline_position">top</property>
<child>
<object class="GtkFrame" id="auto">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Automatic time source</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;small&gt;The extension will try to use Night Light or Location Services to automatically set your current sunrise and sunset times if they are enabled. If you prefer, you can manually choose a time source.&lt;/small&gt;</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="max_width_chars">50</property>
<property name="xalign">0</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="auto_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="active">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="manual">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Manual time source</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkRadioButton" id="manual_nightlight_radio">
<property name="label" translatable="yes">Night Light</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="active">True</property>
<property name="draw_indicator">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="manual_location_radio">
<property name="label" translatable="yes">Location Services</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">False</property>
<property name="group">manual_nightlight_radio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="manual_schedule_radio">
<property name="label" translatable="yes">Manual schedule</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">False</property>
<property name="group">manual_nightlight_radio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="manual_ondemand_radio">
<property name="label" translatable="yes">On-demand</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">False</property>
<property name="group">manual_nightlight_radio</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<style>
<class name="linked"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkStack" id="manual_prefs_stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vhomogeneous">False</property>
<property name="transition_type">crossfade</property>
<property name="interpolate_size">True</property>
<child>
<object class="GtkBox" id="none">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="name">none</property>
<property name="title" translatable="yes">No preferences</property>
</packing>
</child>
<child>
<object class="GtkBox" id="schedule_times">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Manual schedule times</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Sunrise</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="spacing">8</property>
<child>
<object class="GtkSpinButton" id="schedule_times_sunrise_hours_spin">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">2</property>
<property name="width_chars">2</property>
<property name="text">0</property>
<property name="orientation">vertical</property>
<property name="adjustment">sunrise_hours_adjustment</property>
<property name="numeric">True</property>
<property name="wrap">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="schedule_times_sunrise_minutes_spin">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">2</property>
<property name="width_chars">2</property>
<property name="text">0</property>
<property name="orientation">vertical</property>
<property name="adjustment">sunrise_minutes_adjustment</property>
<property name="numeric">True</property>
<property name="wrap">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Sunset</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="spacing">8</property>
<child>
<object class="GtkSpinButton" id="schedule_times_sunset_hours_spin">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">2</property>
<property name="width_chars">2</property>
<property name="text">0</property>
<property name="orientation">vertical</property>
<property name="adjustment">sunset_hours_adjustment</property>
<property name="numeric">True</property>
<property name="wrap">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="schedule_times_sunset_minutes_spin">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="max_length">2</property>
<property name="width_chars">2</property>
<property name="text">0</property>
<property name="orientation">vertical</property>
<property name="adjustment">sunset_minutes_adjustment</property>
<property name="numeric">True</property>
<property name="wrap">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="name">schedule_times</property>
<property name="title" translatable="yes">Manual schedule times</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="ondemand">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">On-demand</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Keyboard shortcut</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkButton" id="ondemand_shortcut_button">
<property name="label" translatable="yes">Choose</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ondemand_shortcut_clear_button">
<property name="label" translatable="yes">Clear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<style>
<class name="destructive-action"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="linked"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Button location</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="ondemand_button_placement_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="active">1</property>
<property name="active_id">panel</property>
<items>
<item id="none" translatable="yes">None</item>
<item id="panel" translatable="yes">Top bar</item>
<item id="menu" translatable="yes">System menu</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="name">ondemand</property>
<property name="title" translatable="yes">On-demand</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<object class="GtkAdjustment" id="sunrise_hours_adjustment">
<property name="upper">23</property>
<property name="step_increment">1</property>
</object>
<object class="GtkAdjustment" id="sunrise_minutes_adjustment">
<property name="upper">59</property>
<property name="step_increment">1</property>
</object>
<object class="GtkAdjustment" id="sunset_hours_adjustment">
<property name="upper">23</property>
<property name="step_increment">1</property>
</object>
<object class="GtkAdjustment" id="sunset_minutes_adjustment">
<property name="upper">59</property>
<property name="step_increment">1</property>
</object>
</interface>
+372
View File
@@ -0,0 +1,372 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.36.0
Copyright (C) 2020
This file is part of Night Theme Switcher.
Night Theme Switcher is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Night Theme Switcher is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Night Theme Switcher. If not, see <http://www.gnu.org/licenses/>.
Author: Romain Vigier
-->
<interface domain="nightthemeswitcher@romainvigier.fr">
<requires lib="gtk+" version="3.22"/>
<!-- interface-license-type gplv3 -->
<!-- interface-name Night Theme Switcher -->
<!-- interface-copyright 2020 -->
<!-- interface-authors Romain Vigier -->
<object class="GtkBox" id="shell_theme">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
<property name="margin_left">36</property>
<property name="margin_right">36</property>
<property name="margin_start">36</property>
<property name="margin_end">36</property>
<property name="margin_top">36</property>
<property name="margin_bottom">36</property>
<property name="orientation">vertical</property>
<property name="spacing">30</property>
<property name="baseline_position">top</property>
<child>
<object class="GtkFrame" id="enabled">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Switch Shell variants</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="enabled_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
<property name="active">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="manual">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Manual variants</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">start</property>
<property name="label" translatable="yes">&lt;small&gt;You can manually set variants if the extension cannot automatically detect the day and night variants of your GNOME Shell theme. Please &lt;a href="https://gitlab.com/rmnvgr/nightthemeswitcher-gnome-shell-extension/-/issues"&gt;submit a request&lt;/a&gt; to get your theme supported.&lt;/small&gt;</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="max_width_chars">50</property>
<property name="xalign">0</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="manual_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="variants">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">8</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Manual variants</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkListBox">
<property name="width_request">600</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="selection_mode">none</property>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Day variant</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="day_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activatable">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">16</property>
<property name="margin_right">16</property>
<property name="margin_start">16</property>
<property name="margin_end">16</property>
<property name="margin_top">16</property>
<property name="margin_bottom">16</property>
<property name="spacing">30</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Night variant</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="night_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</interface>