* Create declarative module scaffolding * Added ram module (WIP) * Updates to options, styling and more. * Added function for styling custom modules. * Added utility functions and cleaned up code * Type and fn name updates. * Update module utils to handle absent values. * Added icon color in style2 that was missing. * Linted utils.ts * Add CPU module and update RAM module to use /proc/meminfo. * Added disk storage module. * Consolidate code * Added netstat module and removed elements from systray default ignore list. * Added keyboard layout module. * Fix hook types and move module to customModules directory * Added updates modules. * Spacing updates * Added weather module. * Added power menu and power module in bar. Increased update default interval to 6 ours. * Updated styling of bar buttons, made power menu label toggleable, etc. * Consolidate code and add dynamic tooltips based on data being used. * Make default custom mogules matugen compatible * Update base theme * Fix custom module background coloring * Remove testing opacity. * Update themes to account for new modules * Update nix stuff for libgtop (Need someone to test this) * Update nix * Update fractions to multiplications * Move styling in style directory * Implement a polling framework for variables that can dynamically adjust polling intervals. * Netstat module updates when interface name is changed. * Readme update
62 lines
1.4 KiB
TypeScript
62 lines
1.4 KiB
TypeScript
import { Action } from "lib/types/power";
|
|
import options from "options";
|
|
const { sleep, reboot, logout, shutdown } = options.menus.dashboard.powermenu;
|
|
|
|
class PowerMenu extends Service {
|
|
static {
|
|
Service.register(
|
|
this,
|
|
{},
|
|
{
|
|
title: ["string"],
|
|
cmd: ["string"],
|
|
},
|
|
);
|
|
}
|
|
|
|
#title = "";
|
|
#cmd = "";
|
|
|
|
get title() {
|
|
return this.#title;
|
|
}
|
|
|
|
action(action: Action) {
|
|
[this.#cmd, this.#title] = {
|
|
sleep: [sleep.value, "Sleep"],
|
|
reboot: [reboot.value, "Reboot"],
|
|
logout: [logout.value, "Log Out"],
|
|
shutdown: [shutdown.value, "Shutdown"],
|
|
}[action];
|
|
|
|
this.notify("cmd");
|
|
this.notify("title");
|
|
this.emit("changed");
|
|
App.closeWindow("powermenu");
|
|
App.openWindow("verification");
|
|
}
|
|
|
|
customAction(action: Action, cmnd: string) {
|
|
[this.#cmd, this.#title] = [cmnd, action];
|
|
|
|
this.notify("cmd");
|
|
this.notify("title");
|
|
this.emit("changed");
|
|
App.closeWindow("powermenu");
|
|
App.openWindow("verification");
|
|
}
|
|
|
|
shutdown = () => {
|
|
this.action("shutdown");
|
|
};
|
|
|
|
exec = () => {
|
|
App.closeWindow("verification");
|
|
Utils.execAsync(this.#cmd);
|
|
};
|
|
}
|
|
|
|
const powermenu = new PowerMenu();
|
|
Object.assign(globalThis, { powermenu });
|
|
export default powermenu;
|