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)
) 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: