Files
custum-hyprpanel/modules/osd/label/index.ts
Jas Singh bb3b3dfdfb Added strict type checking to the project. (#236)
* Implement strict typing (WIP).

* changes

* Finish type checks

* Fix notification icon, matugen settings and update tsconfig.

* OSD Styling updates and added the ability to configure OSD duration.
2024-09-09 00:44:51 -07:00

45 lines
2.2 KiB
TypeScript

import brightness from "services/Brightness"
import options from "options"
const audio = await Service.import("audio")
export const OSDLabel = () => {
return Widget.Box({
class_name: "osd-label-container",
hexpand: true,
vexpand: true,
child: Widget.Label({
class_name: "osd-label",
hexpand: true,
vexpand: true,
hpack: "center",
vpack: "center",
setup: self => {
self.hook(brightness, () => {
self.class_names = self.class_names.filter(c => c !== "overflow");
self.label = `${Math.round(brightness.screen * 100)}`;
}, "notify::screen")
self.hook(brightness, () => {
self.class_names = self.class_names.filter(c => c !== "overflow");
self.label = `${Math.round(brightness.kbd * 100)}`;
}, "notify::kbd")
self.hook(audio.microphone, () => {
self.toggleClassName("overflow", audio.microphone.volume > 1)
self.label = `${Math.round(audio.microphone.volume * 100)}`;
}, "notify::volume")
self.hook(audio.microphone, () => {
self.toggleClassName("overflow", audio.microphone.volume > 1 && (!options.theme.osd.muted_zero.value || audio.microphone.is_muted === false));
self.label = `${options.theme.osd.muted_zero.value && audio.microphone.is_muted !== false ? 0 : Math.round(audio.microphone.volume * 100)}`;
}, "notify::is-muted")
self.hook(audio.speaker, () => {
self.toggleClassName("overflow", audio.speaker.volume > 1)
self.label = `${Math.round(audio.speaker.volume * 100)}`;
}, "notify::volume")
self.hook(audio.speaker, () => {
self.toggleClassName("overflow", audio.speaker.volume > 1 && (!options.theme.osd.muted_zero.value || audio.speaker.is_muted === false));
self.label = `${options.theme.osd.muted_zero.value && audio.speaker.is_muted !== false ? 0 : Math.round(audio.speaker.volume * 100)}`;
}, "notify::is-muted")
}
})
});
}