#!/usr/bin/env python """Sends notifications through dunst when connected or disonnected to bluetooth.""" import sys import os def parse_device_name(dname: str) -> str: """Inline method to parse out the mac id from the device_name str.""" parts = dname.split(' ') # parts[2:] since incoming str = "Device [mac_id] [name]" dname = ' '.join(parts[2:]) return dname def get_icon_path(arg: str) -> str: """Gets the icon path based on the passed in arg [connected | disconnected]""" base_dir = '/usr/share/icons/hicolor/48x48/status/bluetooth-' if arg == 'connected': base_dir += 'active' elif arg == 'disconnected': base_dir += 'disabled' base_dir += '.png' return base_dir def output_notification(arg: str, path: str, device_name: str = 'Bluetooth\ Device') -> None: """Sends a notification with icon: path.""" new_name = parse_device_name(device_name) command = f'dunstify -i {path} ' if arg == 'connected': command += f'"Connected to {new_name}."' else: command += f'"Disconnected from {new_name}."' os.system(command) def main(arg: str, device_name): """The driver function.""" if arg == 'connected': path = get_icon_path('connected') elif arg == 'disconnected': path = get_icon_path('disconnected') output_notification(arg, path, device_name) if __name__ == '__main__': if len(sys.argv) != 3: sys.exit(1) # [connected|disconnected], [device_name] main(sys.argv[1], sys.argv[2])