Add togglecontrol that executes shell commands on enable/disable

master
Lars Vierbergen 8 years ago
parent 28011e1bbe
commit 9334d1c9b5
  1. 53
      daemon.py
  2. 20
      modules/toggle.py

@ -4,8 +4,11 @@ import modules
import modules.core
from modules.audiooutput import PulseCtlDefaultSinkCycleAction
from modules.audiooutput import naming_map, sink_filter, sink_input_filter
from modules.cycle import *
from modules.toggle import CommandToggleControl
#logging.basicConfig(level=logging.DEBUG)
logging.basicConfig(level=logging.DEBUG)
logging.getLogger('modules.core').setLevel(logging.WARNING)
modules.Application(
modules.GroupedControl(
@ -13,28 +16,36 @@ modules.Application(
modules.RedshiftControl(),
separator=''
),
modules.ActionWrapperControl(
modules.VolumeControl(),
action='pavucontrol',
buttons=modules.core.Button.RIGHT
),
CycleControl(
PulseCtlDefaultSinkCycleAction(
naming_map=naming_map.partial(
naming_map.foldr, [
naming_map.description,
naming_map.partial(
naming_map.drop_kwargs,
naming_map.partial(naming_map.foldr, [
naming_map.partial(naming_map.drop_first_if_eq, 'Built-in Audio '),
naming_map.first_char
])
)
]
modules.GroupedControl(
CycleControl(
PulseCtlDefaultSinkCycleAction(
naming_map=naming_map.partial(
naming_map.foldr, [
naming_map.description,
naming_map.partial(
naming_map.drop_kwargs,
naming_map.partial(naming_map.foldr, [
naming_map.partial(naming_map.drop_first_if_eq, 'Built-in Audio '),
naming_map.first_char
])
)
]
),
sink_filter=sink_filter.hardware_only,
sink_input_filter=sink_input_filter.connected_sink
),
sink_filter=sink_filter.hardware_only,
sink_input_filter=sink_input_filter.connected_sink
),
modules.ActionWrapperControl(
CommandToggleControl('eq', ['pactl', 'load-module', 'module-equalizer-sink'], ['pactl', 'unload-module', 'module-equalizer-sink']),
action='qpaeq',
buttons=modules.core.Button.RIGHT
),
modules.ActionWrapperControl(
modules.VolumeControl(),
action='pavucontrol',
buttons=modules.core.Button.RIGHT
),
separator=' '
)
).run()

@ -1,8 +1,12 @@
import abc
import subprocess
from modules.util import process_reaper
from .core import AbstractControl, action
__all__ = ['ToggleControl']
__all__ = ['ToggleControl', 'CommandToggleControl']
class ToggleControl(AbstractControl, metaclass=abc.ABCMeta):
"""
@ -75,3 +79,17 @@ class ToggleControl(AbstractControl, metaclass=abc.ABCMeta):
self.create_pipe_command(':toggle'),
self.__letter.upper() if self.state else self.__letter.lower()
)
class CommandToggleControl(ToggleControl):
def __init__(self, letter: str, enable_command: list, disable_command: list, initial_state: bool = False):
super().__init__(letter, initial_state)
self.__enable_command = enable_command
self.__disable_command = disable_command
def enable(self):
subprocess.call(self.__enable_command)
def disable(self):
subprocess.call(self.__disable_command)

Loading…
Cancel
Save