From b7c2fc74712f810f0b8e8eb15f809d9198cf2581 Mon Sep 17 00:00:00 2001 From: retrozinndev Date: Sat, 17 May 2025 19:11:15 -0300 Subject: [PATCH] :boom: ags(control-center/tiles): hide tiles if its dependencies aren't installed --- ags/widget/control-center/tiles/NightLight.ts | 40 ++++++++++--------- ags/widget/control-center/tiles/Recording.ts | 4 ++ 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/ags/widget/control-center/tiles/NightLight.ts b/ags/widget/control-center/tiles/NightLight.ts index 83d37de..37e468c 100644 --- a/ags/widget/control-center/tiles/NightLight.ts +++ b/ags/widget/control-center/tiles/NightLight.ts @@ -4,22 +4,26 @@ import { NightLight } from "../../../scripts/nightlight"; import { PageNightLight } from "../pages/NightLight"; import { tr } from "../../../i18n/intl"; import { TilesPages } from "../Tiles"; +import { isInstalled } from "../../../scripts/utils"; +import { Widget } from "astal/gtk3"; -export const TileNightLight = Tile({ - title: tr("control_center.tiles.night_light.title"), - icon: "󰖔", - description: Variable.derive([ - bind(NightLight.getDefault(), "temperature"), - bind(NightLight.getDefault(), "gamma") - ], (temp, gamma) => - (temp === 6000 ? tr("control_center.tiles.night_light.default_desc") - : `${temp}K`) + (gamma < NightLight.getDefault().maxGamma ? - ` (${gamma}%)` : "") - )(), - iconSize: 16, - onToggledOff: () => NightLight.getDefault().identity = true, - onToggledOn: () => NightLight.getDefault().identity = false, - enableOnClickMore: true, - onClickMore: () => TilesPages?.toggle(PageNightLight()), - toggleState: bind(NightLight.getDefault(), "identity").as(identity => !identity) -} as TileProps); +export const TileNightLight = () => isInstalled("hyprsunset") ? + Tile({ + title: tr("control_center.tiles.night_light.title"), + icon: "󰖔", + description: Variable.derive([ + bind(NightLight.getDefault(), "temperature"), + bind(NightLight.getDefault(), "gamma") + ], (temp, gamma) => + (temp === 6000 ? tr("control_center.tiles.night_light.default_desc") + : `${temp}K`) + (gamma < NightLight.getDefault().maxGamma ? + ` (${gamma}%)` : "") + )(), + iconSize: 16, + onToggledOff: () => NightLight.getDefault().identity = true, + onToggledOn: () => NightLight.getDefault().identity = false, + enableOnClickMore: true, + onClickMore: () => TilesPages?.toggle(PageNightLight()), + toggleState: bind(NightLight.getDefault(), "identity").as(identity => !identity) + } as TileProps)() +: new Widget.Box({ visible: false } as Widget.BoxProps); diff --git a/ags/widget/control-center/tiles/Recording.ts b/ags/widget/control-center/tiles/Recording.ts index 42f745e..3c45f92 100644 --- a/ags/widget/control-center/tiles/Recording.ts +++ b/ags/widget/control-center/tiles/Recording.ts @@ -3,6 +3,9 @@ import { Recording } from "../../../scripts/recording"; import { bind, Variable } from "astal"; import { tr } from "../../../i18n/intl"; import { getDateTime } from "../../../scripts/time"; +import { isInstalled } from "../../../scripts/utils"; + +const wfRecorderInstalled = isInstalled("wf-recorder"); export const TileRecording = Tile({ title: tr("control_center.tiles.recording.title") || "Screen Recording", @@ -25,6 +28,7 @@ export const TileRecording = Tile({ }:${ seconds < 10 ? `0${seconds}` : seconds }`; })(), icon: "󰻂", + visible: wfRecorderInstalled, onToggledOff: () => Recording.getDefault().stopRecording(), onToggledOn: () => Recording.getDefault().startRecording(), toggleState: bind(Recording.getDefault(), "recording"),