summaryrefslogtreecommitdiffstats
path: root/laptop/.bin/volume
diff options
context:
space:
mode:
Diffstat (limited to 'laptop/.bin/volume')
-rwxr-xr-xlaptop/.bin/volume45
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]'";
+}