hyprcrux/.config/ags/old/modules/quicksettings/widgets/MicMute.js
2024-04-11 00:21:35 -04:00

26 lines
827 B
JavaScript

import { SimpleToggleButton } from "../ToggleButton.js"
import icons from "../../../lib/icons.js"
const { microphone } = await Service.import("audio")
const icon = () => microphone.is_muted || microphone.stream?.is_muted
? icons.audio.mic.muted
: icons.audio.mic.high
const label = () => microphone.is_muted || microphone.stream?.is_muted
? "Muted"
: "Unmuted"
// TODO: Variable watch option
const ico = Variable(icon())
microphone.connect("changed", () => ico.value = icon())
// TODO: Variable watch option
const lbl = Variable(label())
microphone.connect("changed", () => lbl.value = label())
export const MicMute = () => SimpleToggleButton({
icon: ico.bind(),
label: lbl.bind(),
toggle: () => microphone.is_muted = !microphone.is_muted,
connection: [microphone, () => microphone?.is_muted || false],
})