#!/usr/bin/env perl use strict; use warnings; use 5.014; chomp(my $sink=`pactl get-default-sink`); sub get { if (`pactl get-sink-mute $sink` =~ /Mute: yes/) { 'mute' } else { (`pactl get-sink-volume $sink` =~ /(\d+)%/)[0] } } if ($ARGV[0] eq 'get') { say get; } elsif ($ARGV[0] eq 'up') { my $get = get; system("pactl set-sink-mute $sink 0"); if ($get eq 'mute') { exit; } elsif ($get <= 90) { system("pactl set-sink-volume $sink +10%"); } elsif ($get < 100) { system("pactl set-sink-volume $sink 100%"); } } elsif ($ARGV[0] eq 'down') { my $get = get; if ($get eq 'mute') { exit; } system("pactl set-sink-volume $sink -10%"); } elsif ($ARGV[0] eq 'mute') { system("pactl set-sink-mute $sink toggle") } else { die "unknown command '$ARGV[0]'"; }