diff --git a/ags/widget/control-center/NotifHistory.tsx b/ags/widget/control-center/NotifHistory.tsx
index 62e6c29..e852631 100644
--- a/ags/widget/control-center/NotifHistory.tsx
+++ b/ags/widget/control-center/NotifHistory.tsx
@@ -9,7 +9,7 @@ import AstalNotifd from "gi://AstalNotifd?version=0.1";
export const NotifHistory = () =>
- `history ${history.length < 1 ? "hide" : ""}`)}>
+ `notif-history ${history.length < 1 ? "hide" : ""}`)} vexpand={false}>
-
-
+
+ Notifications.getDefault().clearHistory()}>
+
+
+
+
+
+
as Gtk.Box;
diff --git a/ags/widget/control-center/Pages.tsx b/ags/widget/control-center/Pages.tsx
index 9475f64..cf1a970 100644
--- a/ags/widget/control-center/Pages.tsx
+++ b/ags/widget/control-center/Pages.tsx
@@ -1,10 +1,12 @@
import { register } from "ags/gobject";
import { Gtk } from "ags/gtk4";
import { Page } from "./pages/Page";
-import AstalIO from "gi://AstalIO";
import { timeout } from "ags/time";
import { variableToBoolean } from "../../scripts/utils";
+import AstalIO from "gi://AstalIO";
+import { createRoot } from "ags";
+
export { Pages };
export type PagesProps = {
@@ -68,13 +70,13 @@ class Pages extends Gtk.Box {
}
open(newPage: Page, onOpened?: () => void) {
- const pageWidget =
{newPage as unknown as Gtk.Widget}
- as Gtk.Revealer;
+ as Gtk.Revealer);
this.prepend(pageWidget);
diff --git a/ags/widget/control-center/Sliders.tsx b/ags/widget/control-center/Sliders.tsx
index a993b1f..49fd084 100644
--- a/ags/widget/control-center/Sliders.tsx
+++ b/ags/widget/control-center/Sliders.tsx
@@ -3,15 +3,18 @@ import { Wireplumber } from "../../scripts/volume";
import { Pages } from "./Pages";
import { PageSound } from "./pages/Sound";
import { PageMicrophone } from "./pages/Microphone";
-import { createBinding, With } from "ags";
+import { createBinding, createRoot, With } from "ags";
+
import AstalWp from "gi://AstalWp";
+export let slidersPages: Pages|undefined;
+
export function Sliders() {
- const slidersPages = as Pages;
+ slidersPages = createRoot(() => new Pages())!;
return
+ hexpand spacing={10} onDestroy={() => slidersPages = undefined}>
{(sink: AstalWp.Endpoint) =>
@@ -30,7 +33,7 @@ export function Sliders() {
onChangeValue={(_, _scrollType, value) => sink.set_volume(value / 100)} />
- slidersPages.toggle(PageSound())} />
+ slidersPages!.toggle(PageSound())} />
}
@@ -50,7 +53,7 @@ export function Sliders() {
onChangeValue={(_, _scrollType, value) => source.set_volume(value / 100)} />
- slidersPages.toggle(PageMicrophone())} />
+ slidersPages!.toggle(PageMicrophone())} />
}
{slidersPages}
diff --git a/ags/widget/control-center/Tiles.tsx b/ags/widget/control-center/Tiles.tsx
index 4651916..b319a7b 100644
--- a/ags/widget/control-center/Tiles.tsx
+++ b/ags/widget/control-center/Tiles.tsx
@@ -5,31 +5,32 @@ import { TileDND } from "./tiles/DoNotDisturb";
import { TileRecording } from "./tiles/Recording";
import { TileNightLight } from "./tiles/NightLight";
import { Pages } from "./Pages";
+import { createRoot } from "/usr/share/ags/js/gnim/src/jsx/scope";
-export let TilesPages: (Pages|null) = null;
-export const tileList: Array<() => Gtk.Widget> = [
+export let TilesPages: Pages|undefined;
+export const tileList: Array<() => JSX.Element|Gtk.Widget> = [
TileNetwork,
TileBluetooth,
TileRecording,
TileDND,
TileNightLight
-];
+] as Array<() => Gtk.Widget>;
export function Tiles(): Gtk.Widget {
return TilesPages = null} $={(self) => {
+ onDestroy={() => TilesPages = undefined} $={(self) => {
if(!TilesPages)
- TilesPages = as Pages;
+ TilesPages = createRoot(() => new Pages({ class: "tile-pages" }));
- self.append(TilesPages as unknown as Gtk.Widget);
+ self.append(TilesPages!);
}}>
+ columnSpacing={6} minChildrenPerLine={2} activateOnSingleClick
+ maxChildrenPerLine={2} hexpand vexpand homogeneous>
- {tileList.map(tile => tile())}
+ {tileList.map(t => t())}
as Gtk.Box;
}