roundabout,
created on Thursday, 11 September 2025, 19:31:36 (1757619096),
received on Thursday, 11 September 2025, 19:31:39 (1757619099)
Author identity: Vlad <vlad.muntoiu@gmail.com>
c042d9cf54db22993058d71252d64392dfce1889
applets/volume/__init__.py
@@ -46,11 +46,12 @@ class Volume(panorama_panel.Applet):
self.percentage_reveal = config.get("percentage_reveal", 1000) self.percentage_animation_time = config.get("percentage_animation_time", 250) self.icon_size = config.get("icon_size", 24) self.scrolling_sign = config.get("scroll_direction", 1) self.volume_step = config.get("volume_step", 0.05)asyncio.create_task(self.main()) async def main(self): self.menu_button = Gtk.MenuButton() self.volume_step = 0.05self.pulse = pulsectl_asyncio.PulseAsync("panorama-panel-volume-manager") await self.pulse.connect() server_info = await self.pulse.server_info()
@@ -154,15 +155,32 @@ class Volume(panorama_panel.Applet):
self.icon.set_from_icon_name("audio-volume-high-symbolic") def on_button_scroll(self, controller, dx, dy): if dy < 0 or dy > 0:if dy:self.menu_button.popup() if dy * self.scrolling_sign > 0: new_volume = self.current_volume - self.volume_step elif dy * self.scrolling_sign < 0: new_volume = self.current_volume + self.volume_step else: new_volume = self.current_volume if new_volume < 0: new_volume = 0.0 elif new_volume > 1: new_volume = 1.0 if self.current_volume == new_volume: return Gdk.EVENT_STOP self.volume_scale.set_value(new_volume) self.current_volume = new_volume self.set_button_icon()return Gdk.EVENT_STOP def on_popover_scroll(self, controller, dx, dy): if dy > 0:if dy * self.scrolling_sign > 0:new_volume = self.current_volume - self.volume_step elif dy < 0:elif dy * self.scrolling_sign < 0:new_volume = self.current_volume + self.volume_step else: new_volume = self.current_volumeif new_volume < 0: new_volume = 0.0 elif new_volume > 1:
@@ -249,4 +267,6 @@ class Volume(panorama_panel.Applet):
"popdown_after_manual": self.popdown_after_manual, "percentage_animation_time": self.percentage_animation_time, "icon_size": self.icon_size, "scroll_direction": self.scrolling_sign, "volume_step": self.volume_step,}