💥 fix(scripts/volume): endpoint volume overflowing

This commit is contained in:
retrozinndev
2025-06-03 21:23:34 -03:00
parent 0ae60fa6f5
commit a17fc3c127
+12 -13
View File
@@ -1,16 +1,15 @@
import { GObject, register } from "astal"; import { GObject, register } from "astal";
import AstalWp from "gi://AstalWp"; import AstalWp from "gi://AstalWp";
export { WireplumberClass as Wireplumber }; export { Wireplumber };
@register({ GTypeName: "Wireplumber" }) @register({ GTypeName: "Wireplumber" })
class WireplumberClass extends GObject.Object { class Wireplumber extends GObject.Object {
private static astalWireplumber: (AstalWp.Wp|null) = AstalWp.get_default(); private static astalWireplumber: (AstalWp.Wp|null) = AstalWp.get_default();
private static inst: WireplumberClass; private static inst: Wireplumber;
private defaultSink: AstalWp.Endpoint = WireplumberClass.astalWireplumber!.get_default_speaker()!; private defaultSink: AstalWp.Endpoint = Wireplumber.astalWireplumber!.get_default_speaker()!;
private defaultSource: AstalWp.Endpoint = WireplumberClass.astalWireplumber!.get_default_microphone()!; private defaultSource: AstalWp.Endpoint = Wireplumber.astalWireplumber!.get_default_microphone()!;
private maxSinkVolume: number = 100; private maxSinkVolume: number = 100;
private maxSourceVolume: number = 100; private maxSourceVolume: number = 100;
@@ -18,21 +17,21 @@ class WireplumberClass extends GObject.Object {
constructor() { constructor() {
super(); super();
if(!WireplumberClass.astalWireplumber) if(!Wireplumber.astalWireplumber)
throw new Error("Audio features will not work correctly! Please install wireplumber first", { throw new Error("Audio features will not work correctly! Please install wireplumber first", {
cause: "Wireplumber library not found" cause: "Wireplumber library not found"
}); });
} }
public static getDefault(): WireplumberClass { public static getDefault(): Wireplumber {
if(!WireplumberClass.inst) if(!Wireplumber.inst)
WireplumberClass.inst = new WireplumberClass(); Wireplumber.inst = new Wireplumber();
return WireplumberClass.inst; return Wireplumber.inst;
} }
public static getWireplumber(): AstalWp.Wp { public static getWireplumber(): AstalWp.Wp {
return WireplumberClass.astalWireplumber!; return Wireplumber.astalWireplumber!;
} }
public getMaxSinkVolume(): number { public getMaxSinkVolume(): number {
@@ -74,7 +73,7 @@ class WireplumberClass extends GObject.Object {
public increaseEndpointVolume(endpoint: AstalWp.Endpoint, volumeIncrease: number): void { public increaseEndpointVolume(endpoint: AstalWp.Endpoint, volumeIncrease: number): void {
volumeIncrease = Math.abs(volumeIncrease) / 100; volumeIncrease = Math.abs(volumeIncrease) / 100;
if((endpoint.get_volume() + volumeIncrease) > this.maxSinkVolume) { if((endpoint.get_volume() + volumeIncrease) > (this.maxSinkVolume / 100)) {
endpoint.set_volume(1.0); endpoint.set_volume(1.0);
return; return;
} }