ags(control-center/pages): add night-light page, for controlling hyprsunset stuff

This commit is contained in:
retrozinndev
2025-04-14 18:36:08 -03:00
parent 33f8a935a0
commit dfc753ba8d
@@ -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);