mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2026-01-04 23:02:48 +00:00
feat: update ags
This commit is contained in:
31
home/desktops/hyprland/ags/js/powermenu/PowerMenu.js
Normal file
31
home/desktops/hyprland/ags/js/powermenu/PowerMenu.js
Normal file
@@ -0,0 +1,31 @@
|
||||
import Widget from "resource:///com/github/Aylur/ags/widget.js";
|
||||
import icons from "../icons.js";
|
||||
import PowerMenu from "../services/powermenu.js";
|
||||
import ShadedPopup from "./ShadedPopup.js";
|
||||
|
||||
/**
|
||||
* @param {'sleep' | 'reboot' | 'logout' | 'shutdown'} action
|
||||
* @param {string} label
|
||||
*/
|
||||
const SysButton = (action, label) =>
|
||||
Widget.Button({
|
||||
on_clicked: () => PowerMenu.action(action),
|
||||
child: Widget.Box({
|
||||
vertical: true,
|
||||
children: [Widget.Icon(icons.powermenu[action]), Widget.Label(label)],
|
||||
}),
|
||||
});
|
||||
|
||||
export default () =>
|
||||
ShadedPopup({
|
||||
name: "powermenu",
|
||||
expand: true,
|
||||
child: Widget.Box({
|
||||
children: [
|
||||
SysButton("sleep", "Sleep"),
|
||||
SysButton("reboot", "Reboot"),
|
||||
SysButton("logout", "Log Out"),
|
||||
SysButton("shutdown", "Shutdown"),
|
||||
],
|
||||
}),
|
||||
});
|
||||
42
home/desktops/hyprland/ags/js/powermenu/ShadedPopup.js
Normal file
42
home/desktops/hyprland/ags/js/powermenu/ShadedPopup.js
Normal file
@@ -0,0 +1,42 @@
|
||||
import App from "resource:///com/github/Aylur/ags/app.js";
|
||||
import Widget from "resource:///com/github/Aylur/ags/widget.js";
|
||||
|
||||
/** @param {string} windowName */
|
||||
const Padding = (windowName) =>
|
||||
Widget.EventBox({
|
||||
class_name: "padding",
|
||||
hexpand: true,
|
||||
vexpand: true,
|
||||
connections: [["button-press-event", () => App.toggleWindow(windowName)]],
|
||||
});
|
||||
|
||||
/**
|
||||
* @param {import('types/widgets/window').WindowProps & {
|
||||
* name: string
|
||||
* child: import('types/widgets/box').default
|
||||
* }} o
|
||||
*/
|
||||
export default ({ name, child, ...rest }) =>
|
||||
Widget.Window({
|
||||
...rest,
|
||||
class_names: ["popup-window", name],
|
||||
name,
|
||||
visible: false,
|
||||
popup: true,
|
||||
focusable: true,
|
||||
setup() {
|
||||
child.toggleClassName("window-content");
|
||||
},
|
||||
child: Widget.CenterBox({
|
||||
class_name: "shader",
|
||||
css: "min-width: 5000px; min-height: 3000px;",
|
||||
children: [
|
||||
Padding(name),
|
||||
Widget.CenterBox({
|
||||
vertical: true,
|
||||
children: [Padding(name), child, Padding(name)],
|
||||
}),
|
||||
Padding(name),
|
||||
],
|
||||
}),
|
||||
});
|
||||
46
home/desktops/hyprland/ags/js/powermenu/Verification.js
Normal file
46
home/desktops/hyprland/ags/js/powermenu/Verification.js
Normal file
@@ -0,0 +1,46 @@
|
||||
import Widget from "resource:///com/github/Aylur/ags/widget.js";
|
||||
import App from "resource:///com/github/Aylur/ags/app.js";
|
||||
import * as Utils from "resource:///com/github/Aylur/ags/utils.js";
|
||||
import PowerMenu from "../services/powermenu.js";
|
||||
import ShadedPopup from "./ShadedPopup.js";
|
||||
|
||||
export default () =>
|
||||
ShadedPopup({
|
||||
name: "verification",
|
||||
expand: true,
|
||||
child: Widget.Box({
|
||||
vertical: true,
|
||||
children: [
|
||||
Widget.Box({
|
||||
class_name: "text-box",
|
||||
vertical: true,
|
||||
children: [
|
||||
Widget.Label({
|
||||
class_name: "title",
|
||||
binds: [["label", PowerMenu, "title"]],
|
||||
}),
|
||||
Widget.Label({
|
||||
class_name: "desc",
|
||||
label: "Are you sure?",
|
||||
}),
|
||||
],
|
||||
}),
|
||||
Widget.Box({
|
||||
class_name: "buttons horizontal",
|
||||
vexpand: true,
|
||||
vpack: "end",
|
||||
homogeneous: true,
|
||||
children: [
|
||||
Widget.Button({
|
||||
child: Widget.Label("No"),
|
||||
on_clicked: () => App.toggleWindow("verification"),
|
||||
}),
|
||||
Widget.Button({
|
||||
child: Widget.Label("Yes"),
|
||||
on_clicked: () => Utils.exec(PowerMenu.cmd),
|
||||
}),
|
||||
],
|
||||
}),
|
||||
],
|
||||
}),
|
||||
});
|
||||
Reference in New Issue
Block a user