From dfc753ba8dd14cb79425517e9859ba9178711a93 Mon Sep 17 00:00:00 2001 From: retrozinndev Date: Mon, 14 Apr 2025 18:36:08 -0300 Subject: [PATCH] :sparkles: ags(control-center/pages): add night-light page, for controlling hyprsunset stuff --- ags/widget/control-center/pages/NightLight.ts | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 ags/widget/control-center/pages/NightLight.ts diff --git a/ags/widget/control-center/pages/NightLight.ts b/ags/widget/control-center/pages/NightLight.ts new file mode 100644 index 0000000..fcc71df --- /dev/null +++ b/ags/widget/control-center/pages/NightLight.ts @@ -0,0 +1,54 @@ +import { Gtk, Widget } from "astal/gtk3"; +import { Page, PageProps } from "./Page"; +import { bind } from "astal"; +import { NightLight } from "../../../scripts/nightlight"; +import { addSliderMarksFromMinMax } from "../../../scripts/widget-utils"; + +export const PageNightLight = new Page({ + title: "Night Light", + description: "Control night light and gamma filters", + + pageChild: () => new Widget.Box({ + hexpand: true, + className: "night-light", + orientation: Gtk.Orientation.VERTICAL, + children: [ + new Widget.Label({ + className: "sub-header", + label: "Temperature (blue-light filter)", + xalign: 0 + } as Widget.LabelProps), + new Widget.Slider({ + className: "temperature", + setup: (slider) => { + slider.value = NightLight.getDefault().temperature; + addSliderMarksFromMinMax(slider, 5, "{}K"); + }, + value: bind(NightLight.getDefault(), "temperature"), + tooltipText: bind(NightLight.getDefault(), "temperature").as((temp) => `${temp}K`), + min: 1000, + max: bind(NightLight.getDefault(), "maxTemperature"), + onDragged: (slider) => + NightLight.getDefault().temperature = (Math.floor(slider.value)), + } as Widget.SliderProps), + new Widget.Label({ + className: "sub-header", + label: "Gamma (light filter)", + css: "margin-top: 6px;", + xalign: 0 + } as Widget.LabelProps), + new Widget.Slider({ + className: "gamma", + setup: (slider) => { + slider.value = NightLight.getDefault().gamma; + addSliderMarksFromMinMax(slider, 5, "{}%"); + }, + value: bind(NightLight.getDefault(), "gamma"), + max: bind(NightLight.getDefault(), "maxGamma"), + tooltipText: bind(NightLight.getDefault(), "gamma").as((gamma) => `${gamma}%`), + onDragged: (slider) => + NightLight.getDefault().gamma = (Math.floor(slider.value)), + } as Widget.SliderProps) + ] + } as Widget.BoxProps) +} as PageProps);