import { Astal, Gtk } from "ags/gtk4"; import { createBinding, createState } from "ags"; import { Wireplumber } from "../modules/volume"; import { Windows } from "../windows"; import { Time, timeout } from "ags/time"; import Pango from "gi://Pango?version=1.0"; export enum OSDModes { SINK, BRIGHTNESS, NONE } const [osdMode, setOSDMode] = createState(OSDModes.NONE); let osdTimer: (Time|undefined), osdTimeout = 3500; export const OSD = (mon: number) => { if(osdMode.get() === OSDModes.NONE) setOSDMode(OSDModes.SINK); return !Wireplumber.getDefault().isMutedSink() && Wireplumber.getDefault().getSinkVolume() > 0 ? icon : "audio-volume-muted-symbolic")} /> description ?? "Speaker")} ellipsize={Pango.EllipsizeMode.END} /> } export function triggerOSD() { if(Windows.getDefault().isOpen("control-center")) return; Windows.getDefault().open("osd"); if(!osdTimer) { osdTimer = timeout(osdTimeout, () => { osdTimer = undefined; Windows.getDefault().close("osd"); }); return; } osdTimer.cancel(); osdTimer = timeout(osdTimeout, () => { Windows.getDefault().close("osd"); osdTimer = undefined; }); }