Ejemplo n.º 1
0
class Pulse:
    def __init__(self, config):
        self.config = config
        self.pa = PulseOriginal("patray")

    def close(self):
        self.pa.close()

    def update(self):
        logger.debug("update called")
        self.cards = [
            Card.from_pa_card(id=i, pa_card=c)
            for i, c in enumerate(self.pa.card_list())
        ]
        ends = chain(self.pa.sink_list(), self.pa.source_list())
        self.ends = [
            End.from_pa_end(id=i, pa_end=e) for i, e in enumerate(ends)
        ]

    def set_profile(self, profile: CardProfile):
        card = self.cards[profile.card_id]
        self.pa.card_profile_set(card.original, profile.original)
        logger.info("set profile {!r} on card {!r}", profile.name, card.name)

    def set_port(self, port: Port):
        end = self.ends[port.end_id]
        self.pa.port_set(end.original, port.original)
        logger.info("set port {!r} on end {!r}", port.name, end.name)

    def set_volume(self, end: End, volume: float):
        self.pa.volume_set_all_chans(end.original, volume)
        logger.info("set volume {} on end {!r}", volume, end.name)
Ejemplo n.º 2
0
    )
    return parser.parse_args()


if __name__ == "__main__":
    pulse = Pulse()
    sink = pulse.sink_list()[SINK_ID]
    active_port = sink.port_active.name
    volume = round(sink.volume.value_flat * 100)
    is_muted = sink.mute == 1

    args = args_parser()

    if args.PORT:
        if active_port == SPEAKERS:
            pulse.port_set(sink, HEADPHONES)
        else:
            pulse.port_set(sink, SPEAKERS)

    if args.MUTE:
        if is_muted:
            pulse.mute(sink, mute=False)
        else:
            pulse.mute(sink, mute=True)

    if args.UP:
        if volume < 150:
            pulse.volume_change_all_chans(sink, +0.05)
            volume = round(sink.volume.value_flat * 100)

    if args.DOWN: