From 4b9007f8647f332699a466ef74fa0b54e762b687 Mon Sep 17 00:00:00 2001 From: Siarhei Siniak Date: Sun, 5 Mar 2023 13:34:56 +0300 Subject: [PATCH] [~] Refactor --- dotfiles/.local/bin/commands | 108 ++++++++++++++++++++--------- dotfiles/.sway/config | 2 + dotfiles/etc/archlinux/packages.sh | 2 +- 3 files changed, 78 insertions(+), 34 deletions(-) diff --git a/dotfiles/.local/bin/commands b/dotfiles/.local/bin/commands index 5ce458b..edff175 100755 --- a/dotfiles/.local/bin/commands +++ b/dotfiles/.local/bin/commands @@ -1975,6 +1975,79 @@ def custom_translate(current_string, check, none_char=None,): A() ) +def media_keys(argv): + assert isinstance(argv, list) and all([isinstance(o, str) for o in argv]) + parser = optparse.OptionParser() + parser.add_option( + '--command', + dest='command', + type=str, + default=None, + ) + + options, args = parser.parse_args(argv) + + if options.command is None and len(args) > 0: + assert len(args) == 1 + options.command = args[0] + + assert options.command in [ + 'media-play-pause', + 'media-next', + 'media-prev', + 'media-lower-volume', + ] + + msg = None + + logging.info('media_keys, command = %s' % options.command) + + if options.command == 'media-play-pause': + if subprocess.call([ + 'pgrep', + '-u', os.environ['USER'], + 'mocp', + ], stdout=subprocess.PIPE) == 0: + subprocess.check_call(['mocp', '-G']) + else: + subprocess.check_call(['playerctl', 'play-pause']) + msg = player_metadata() + elif sys.argv[1] == 'media-next': + subprocess.check_call(['playerctl', 'next']) + msg = player_metadata() + elif sys.argv[1] == 'media-prev': + subprocess.check_call(['playerctl', 'previous']) + msg = player_metadata() + elif sys.argv[1] == 'media-lower-volume': + subprocess.check_call([ + 'pactl', + 'set-sink-volume', + '@DEFAULT_SINK@', + '-5%' + ]) + msg = subprocess.check_output([ + 'pactl', + 'get-sink-volume', + '@DEFAULT_SINK@' + ]).decode('utf-8').strip() + elif sys.argv[1] == 'media-raise-volume': + subprocess.check_call([ + 'pactl', + 'set-sink-volume', + '@DEFAULT_SINK@', + '+5%' + ]) + msg = subprocess.check_output([ + 'pactl', + 'get-sink-volume', + '@DEFAULT_SINK@' + ]).decode('utf-8').strip() + else: + raise NotImplementedError + + return dict( + msg=msg, + ) def commands_cli(): logging.getLogger().setLevel(logging.INFO) @@ -1982,39 +2055,8 @@ def commands_cli(): msg = None try: - if sys.argv[1] == 'media-play-pause': - subprocess.check_call(['playerctl', 'play-pause']) - msg = player_metadata() - elif sys.argv[1] == 'media-next': - subprocess.check_call(['playerctl', 'next']) - msg = player_metadata() - elif sys.argv[1] == 'media-prev': - subprocess.check_call(['playerctl', 'previous']) - msg = player_metadata() - elif sys.argv[1] == 'media-lower-volume': - subprocess.check_call([ - 'pactl', - 'set-sink-volume', - '@DEFAULT_SINK@', - '-5%' - ]) - msg = subprocess.check_output([ - 'pactl', - 'get-sink-volume', - '@DEFAULT_SINK@' - ]).decode('utf-8').strip() - elif sys.argv[1] == 'media-raise-volume': - subprocess.check_call([ - 'pactl', - 'set-sink-volume', - '@DEFAULT_SINK@', - '+5%' - ]) - msg = subprocess.check_output([ - 'pactl', - 'get-sink-volume', - '@DEFAULT_SINK@' - ]).decode('utf-8').strip() + if sys.argv[1].startswith('media'): + msg = media_keys(sys.argv[1:]).get('msg') elif sys.argv[1] == 'status': status(sys.argv[2:]) elif sys.argv[1] == 'http-server': diff --git a/dotfiles/.sway/config b/dotfiles/.sway/config index 12e8686..71b3813 100644 --- a/dotfiles/.sway/config +++ b/dotfiles/.sway/config @@ -75,6 +75,8 @@ bindsym $mod+Shift+l exec loginctl list-sessions | tail '-n' +2 | head -n -2 | a bindsym XF86KbdBrightnessDown exec bash -c "commands desktop-services --backlight-decrease" bindsym XF86KbdBrightnessUp exec bash -c "commands desktop-services --backlight-increase" +bindsym XF86AudioPlay exec bash -c "commands media-play-pause" + # Start a terminal bindsym $mod+t exec $term diff --git a/dotfiles/etc/archlinux/packages.sh b/dotfiles/etc/archlinux/packages.sh index b05ca4f..afe3866 100644 --- a/dotfiles/etc/archlinux/packages.sh +++ b/dotfiles/etc/archlinux/packages.sh @@ -1 +1 @@ -yay -S light +yay -S light playerctl