diff --git a/i3pystatus/alsa.py b/i3pystatus/alsa.py index 1c37753..021d1f2 100644 --- a/i3pystatus/alsa.py +++ b/i3pystatus/alsa.py @@ -46,6 +46,11 @@ class ALSA(IntervalModule): alsamixer = None has_mute = True + on_scrollup = "increase_volume" + on_scrolldown = "decrease_volume" + on_lclick = "switch_mute" + on_rclick = on_lclick + def init(self): self.create_mixer() try: @@ -82,18 +87,15 @@ class ALSA(IntervalModule): "color": self.color_muted if muted else self.color, } - def on_leftclick(self): - self.on_rightclick() - - def on_rightclick(self): + def switch_mute(self): if self.has_mute: muted = self.alsamixer.getmute()[self.channel] self.alsamixer.setmute(not muted) - def on_upscroll(self): + def increase_volume(self, delta=None): vol = self.alsamixer.getvolume()[self.channel] - self.alsamixer.setvolume(min(100, vol + self.increment)) + self.alsamixer.setvolume(min(100, vol + (delta if delta else self.increment))) - def on_downscroll(self): + def decrease_volume(self, delta=None): vol = self.alsamixer.getvolume()[self.channel] - self.alsamixer.setvolume(max(0, vol - self.increment)) + self.alsamixer.setvolume(max(0, vol - (delta if delta else self.increment))) diff --git a/i3pystatus/core/modules.py b/i3pystatus/core/modules.py index bf9438a..5c55345 100644 --- a/i3pystatus/core/modules.py +++ b/i3pystatus/core/modules.py @@ -1,14 +1,14 @@ from i3pystatus.core.settings import SettingsBase from i3pystatus.core.threading import Manager from i3pystatus.core.util import convert_position +from i3pystatus.core.command import run_through_shell class Module(SettingsBase): output = None position = 0 - settings = ( - 'on_lclick', "Callback called on left click", + settings = ('on_lclick', "Callback called on left click", 'on_rclick', "Callback called on right click", 'on_scrollup', "Callback called on scrolling up", 'on_scrolldown', "Callback called on scrolling down", @@ -48,6 +48,9 @@ class Module(SettingsBase): cb = self.on_scrollup or "on_upscroll" elif button == 5: # mouse wheel down cb = self.on_scrolldown or "on_downscroll" + else: + self.logger.debug("Button not handled") + return if callable(cb): return cb(self)