diff options
Diffstat (limited to 'laptop/.bin/volume')
-rwxr-xr-x | laptop/.bin/volume | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/laptop/.bin/volume b/laptop/.bin/volume new file mode 100755 index 0000000..668c1b1 --- /dev/null +++ b/laptop/.bin/volume @@ -0,0 +1,45 @@ +#!/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]'"; +} |