101 lines
No EOL
3 KiB
JavaScript
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());
|
|
})();
|
|
}
|
|
} |