feat: add control center widget

This commit is contained in:
tux
2025-09-25 19:29:18 +05:30
parent 96431e101a
commit bd8cd294ee
10 changed files with 217 additions and 1 deletions

View File

@@ -0,0 +1,39 @@
import { createBinding } from "ags";
import { Gtk } from "ags/gtk4";
import AstalWp from "gi://AstalWp";
export const SlidingControls = () => {
const { VERTICAL } = Gtk.Orientation;
const { defaultSpeaker: speaker, defaultMicrophone: microphone } =
AstalWp.get_default()!;
const speakerIsMuted = createBinding(speaker, "mute");
return (
<box spacing={20} cssClasses={["pill"]} orientation={VERTICAL}>
<box cssClasses={["volume"]} spacing={20}>
<image
iconName={speakerIsMuted((val) =>
val ? "fa-speaker-muted-symbolic" : "fa-speaker-symbolic",
)}
/>
<slider
hexpand
onChangeValue={({ value }) => speaker.set_volume(value)}
value={createBinding(speaker, "volume")}
/>
</box>
<box cssClasses={["volume"]} spacing={20}>
<image iconName="fa-microphone-symbolic" />
<slider
hexpand
onChangeValue={({ value }) => microphone.set_volume(value)}
value={createBinding(microphone, "volume")}
/>
</box>
</box>
);
};