RaveOS-Gnome/releng/airootfs/usr/share/gnome-shell/extensions/customreboot@nova1545/prefs.js
2025-03-15 15:27:53 +01:00

101 lines
No EOL
3 KiB
JavaScript

'use strict';
import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
import Gio from "gi://Gio";
import Adw from "gi://Adw";
import Gtk from "gi://Gtk";
import { EFIBootManager } from './efibootmgr.js';
import { Grub } from './grub.js';
import { SystemdBoot } from './systemdBoot.js';
export default class MyExtensionPreferences extends ExtensionPreferences {
fillPreferencesWindow(window) {
const settings = this.getSettings('org.gnome.shell.extensions.customreboot');
// Create a preferences page and group
const page = new Adw.PreferencesPage();
const group = new Adw.PreferencesGroup();
page.add(group);
// Create row for efibootmgr
const efi = new Adw.ActionRow({ title: 'Use EFI Boot Manager (efibootmgr)' });
// Create row for grub
const grub = new Adw.ActionRow({ title: 'Use Grub'});
// Create row for systemd-boot
const sysd = new Adw.ActionRow({ title: 'Use Systemd Boot'});
// Add rows
group.add(efi);
group.add(grub);
group.add(sysd);
// Create switch for efibootmgr
const efi_switch = new Gtk.Switch({
active: settings.get_boolean('use-efibootmgr'),
valign: Gtk.Align.CENTER,
});
// Create switch for grub
const grub_switch = new Gtk.Switch({
active: settings.get_boolean('use-grub'),
valign: Gtk.Align.CENTER,
});
// Create switch for systemd-boot
const sysd_switch = new Gtk.Switch({
active: settings.get_boolean('use-systemd-boot'),
valign: Gtk.Align.CENTER,
});
// Bind settings for efibootmgr
settings.bind(
'use-efibootmgr',
efi_switch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
// Bind settings for grub
settings.bind(
'use-grub',
grub_switch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
// Bind settings for systemd-boot
settings.bind(
'use-systemd-boot',
sysd_switch,
'active',
Gio.SettingsBindFlags.DEFAULT
);
// Add the switch for efibootmgr
efi.add_suffix(efi_switch);
efi.activatable_widget = efi_switch;
// Add the switch for grub
grub.add_suffix(grub_switch);
grub.activatable_widget = grub_switch;
// Add the switch for systemd-boot
sysd.add_suffix(sysd_switch);
sysd.activatable_widget = sysd_switch;
// Add our page to the window
window.add(page);
(async () => {
// Disable/enable switches in accordance to them being usable
efi_switch.set_sensitive(await EFIBootManager.IsUseable());
grub_switch.set_sensitive(await Grub.IsUseable());
sysd_switch.set_sensitive(await SystemdBoot.IsUseable());
})();
}
}