summaryrefslogtreecommitdiff
path: root/raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/grub.js
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/grub.js')
-rw-r--r--raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/grub.js205
1 files changed, 0 insertions, 205 deletions
diff --git a/raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/grub.js b/raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/grub.js
deleted file mode 100644
index 6d67ff0..0000000
--- a/raveos-theme/gnome/theme-data/extensions/installed/customreboot@nova1545/grub.js
+++ /dev/null
@@ -1,205 +0,0 @@
-import Gio from "gi://Gio";
-import { ExecCommand, Log, LogWarning } from './utils.js';
-
-/**
- * Represents grub
- */
-export class Grub {
- /**
- * Get's all available boot options
- * @returns {[Map, string]} Map(title, id), defaultOption
- */
- static async GetBootOptions() {
- try {
- let cfgpath = await this.GetConfig();
- if (cfgpath == "") {
- throw new String("Failed to find grub config");
- }
-
- let bootOptions = new Map();
-
- let defualtEn = "";
-
- let file = Gio.file_new_for_path(cfgpath);
- let [suc, content] = file.load_contents(null);
- if (!suc) {
- throw new String("Failed to load grub config");
- }
-
- let lines;
- if (content instanceof Uint8Array) {
- lines = new TextDecoder().decode(content);
- }
- else {
- lines = content.toString();
- }
-
- let entryRx = /^menuentry ['"]([^'"]+)/;
- let defaultRx = /(?<=set default=\")([A-Za-z- ()/0-9]*)(?=\")/
- lines.split('\n').forEach(l => {
- let res = entryRx.exec(l);
- if (res && res.length) {
- bootOptions.set(res[1], res[1]);
- }
- let def = defaultRx.exec(l);
- if (def && def.length) {
- defualtEn = def[0];
- }
- });
-
- bootOptions.forEach((v, k) => {
- Log(`${k} = ${v}`);
- });
-
- if (defualtEn == "") defualtEn = bootOptions.keys().next().value;
-
- return [bootOptions, defualtEn];
-
- } catch (e) {
- LogWarning(e);
- return undefined;
- }
- }
-
- /**
- * Set's the next boot option
- * @param {string} id
- * @returns True if the boot option was set, otherwise false
- */
- static async SetBootOption(id) {
- try {
- let [status, stdout, stderr] = await ExecCommand(
- ['/usr/bin/pkexec', '/usr/sbin/grub-reboot', id],
- );
- Log(`Set boot option to ${id}: ${status}\n${stdout}\n${stderr}`);
- return true;
- } catch (e) {
- LogWarning(e);
- return false;
- }
- }
-
- /**
- * Can we use this bootloader?
- * @returns True if useable otherwise false
- */
- static async IsUseable() {
- return await this.GetConfig() !== "";
- }
-
- /**
- * Get's grub config file
- * @returns A string containing the location of the config file, if none is found returns a blank string
- */
- static async GetConfig() {
- let paths = ["/boot/grub/grub.cfg", "/boot/grub2/grub.cfg"];
-
- let file;
-
- for (let i = 0; i < paths.length; i++) {
- file = Gio.file_new_for_path(paths[i]);
- if (file.query_exists(null)) {
- return paths[i];
- }
- }
-
- return "";
- }
-
- /**
- * Copies a custom grub script to allow the extension to quickly reboot into another OS
- * If anyone reads this: Idk how to combine these into one pkexec call, if you do please leave a commit fixing it
- */
- static async EnableQuickReboot(ext) {
- try {
- let [status, stdout, stderr] = await ExecCommand([
- 'pkexec',
- 'sh',
- '-c',
- `/usr/bin/cp ${ext.lookupByUUID('customreboot@nova1545').path()}/42_custom_reboot /etc/grub.d/42_custom_reboot && /usr/bin/chmod 755 /etc/grub.d/42_custom_reboot && /usr/sbin/update-grub`
- ]);
-
- if (status !== 0) {
- return false;
- }
-
- return true;
- }
- catch (e) {
- LogWarning(e);
- return false;
- }
- }
-
-
- /**
- * Removes the script used to allow the extension to quickly reboot into another OS without waiting for grub's timeout
- * If anyone reads this: Idk how to combine these into one pkexec call, if you do please leave a commit fixing it
- */
- static async DisableQuickReboot() {
- try {
-
- let [status, stdout, stderr] = await ExecCommand([
- 'pkexec',
- 'sh',
- '-c',
- '/usr/bin/rm /etc/grub.d/42_custom_reboot && /usr/sbin/update-grub'
- ]);
-
- if (status !== 0) {
- return false;
- }
-
- return true;
- }
- catch (e) {
- LogWarning(e);
- return false;
- }
- }
-
-
- /**
- * This boot loader can be quick rebooted
- */
- static async CanQuickReboot() {
- return true;
- }
-
- /**
- * Checks if /etc/grub.d/42_custom_reboot exists
- */
- static async QuickRebootEnabled() {
- try {
- let [status, stdout, stderr] = await ExecCommand(['/usr/bin/cat', '/etc/grub.d/42_custom_reboot'],);
- if (status !== 0) {
- LogWarning(`/etc/grub.d/42_custom_reboot not found`);
- return false;
- }
- Log(`/etc/grub.d/42_custom_reboot found`);
-
- return true;
- }
- catch (e) {
- LogWarning(e);
- return false;
- }
- }
-
- static async SetReadable() {
- try {
- const config = GetConfig();
- let [status, stdout, stderr] = await ExecCommand(['/usr/bin/pkexec', '/usr/bin/chmod', '644', config],);
- if (status !== 0) {
- Log(`Failed to make ${config} readable`);
- return false;
- }
- Log(`Made ${config} readable`);
- return true;
- }
- catch (e) {
- Log(e);
- return false;
- }
- }
-} \ No newline at end of file