diff --git a/modules/menus/audio/active/SelectedInput.ts b/modules/menus/audio/active/SelectedInput.ts index 1397151..6bae8ae 100644 --- a/modules/menus/audio/active/SelectedInput.ts +++ b/modules/menus/audio/active/SelectedInput.ts @@ -38,7 +38,7 @@ const renderActiveInput = () => { hpack: "start", truncate: "end", wrap: true, - label: audio.bind("microphone").as((v) => v.description || ""), + label: audio.bind("microphone").as((v) => v.description === null ? "No input device found..." : v.description), }), Widget.Slider({ value: audio.microphone.bind("volume").as((v) => v), diff --git a/modules/osd/bar/index.ts b/modules/osd/bar/index.ts index a4e9cbc..c2ec974 100644 --- a/modules/osd/bar/index.ts +++ b/modules/osd/bar/index.ts @@ -18,10 +18,14 @@ export const OSDBar = (ort: OSDOrientation) => { self.hook(brightness, () => { self.value = brightness.kbd; }, "notify::kbd") - self.hook(audio, () => { + self.hook(audio.microphone, () => { + self.toggleClassName("overflow", audio.microphone.volume > 1) + self.value = audio.microphone.volume <= 1 ? audio.microphone.volume : audio.microphone.volume - 1; + }, "notify::volume") + self.hook(audio.speaker, () => { self.toggleClassName("overflow", audio.speaker.volume > 1) self.value = audio.speaker.volume <= 1 ? audio.speaker.volume : audio.speaker.volume - 1; - }) + }, "notify::volume") } }) ] diff --git a/modules/osd/icon/index.ts b/modules/osd/icon/index.ts index f1e5088..94b9fca 100644 --- a/modules/osd/icon/index.ts +++ b/modules/osd/icon/index.ts @@ -19,9 +19,18 @@ export const OSDIcon = (ort: OSDOrientation) => { self.hook(brightness, () => { self.label = "󰥻"; }, "notify::kbd") - self.hook(audio, () => { + self.hook(audio.microphone, () => { + self.label = audio.microphone.is_muted ? "󰍭" : "󰍬"; + }, "notify::volume") + self.hook(audio.microphone, () => { + self.label = audio.microphone.is_muted ? "󰍭" : "󰍬"; + }, "notify::is-muted") + self.hook(audio.speaker, () => { self.label = audio.speaker.is_muted ? "󰝟" : "󰕾"; - }) + }, "notify::volume") + self.hook(audio.speaker, () => { + self.label = audio.speaker.is_muted ? "󰝟" : "󰕾"; + }, "notify::is-muted") } }) }); diff --git a/modules/osd/index.ts b/modules/osd/index.ts index 187c609..78864a4 100644 --- a/modules/osd/index.ts +++ b/modules/osd/index.ts @@ -65,13 +65,20 @@ const renderOSD = () => { self.hook(brightness, () => { handleReveal(self, "reveal_child"); }, "notify::kbd") + self.hook(audio.microphone, () => { + handleReveal(self, "reveal_child"); + }, "notify::volume") + self.hook(audio.microphone, () => { + handleReveal(self, "reveal_child"); + }, "notify::is-muted") self.hook(audio.speaker, () => { handleReveal(self, "reveal_child"); }, "notify::volume") self.hook(audio.speaker, () => { - handleReveal(self, "visible"); + handleReveal(self, "reveal_child"); }, "notify::is-muted") + }, child: Widget.Box({ class_name: "osd-container", @@ -126,12 +133,17 @@ export default () => Widget.Window({ self.hook(brightness, () => { handleReveal(self, "visible"); }, "notify::kbd") + self.hook(audio.microphone, () => { + handleReveal(self, "visible"); + }, "notify::volume") + self.hook(audio.microphone, () => { + handleReveal(self, "visible"); + }, "notify::is-muted") self.hook(audio.speaker, () => { handleReveal(self, "visible"); }, "notify::volume") self.hook(audio.speaker, () => { handleReveal(self, "visible"); }, "notify::is-muted") - }, }) diff --git a/modules/osd/label/index.ts b/modules/osd/label/index.ts index ca845ce..c986a71 100644 --- a/modules/osd/label/index.ts +++ b/modules/osd/label/index.ts @@ -20,10 +20,14 @@ export const OSDLabel = (ort: OSDOrientation) => { self.hook(brightness, () => { self.label = `${Math.round(brightness.kbd * 100)}`; }, "notify::kbd") - self.hook(audio, () => { + self.hook(audio.microphone, () => { + self.toggleClassName("overflow", audio.microphone.volume > 1) + self.label = `${Math.round(audio.microphone.volume * 100)}`; + }, "notify::volume") + self.hook(audio.speaker, () => { self.toggleClassName("overflow", audio.speaker.volume > 1) self.label = `${Math.round(audio.speaker.volume * 100)}`; - }) + }, "notify::volume") } }) });