From 0730a4af3b5f6167d441afbaeea415b206f9c8be Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 3 Mar 2021 20:37:02 -0500 Subject: add get operations for backlight and volume --- bin/hornet/volume | 67 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 16 deletions(-) (limited to 'bin/hornet/volume') diff --git a/bin/hornet/volume b/bin/hornet/volume index 42c0b8e..56f5209 100755 --- a/bin/hornet/volume +++ b/bin/hornet/volume @@ -1,17 +1,52 @@ -#!/bin/sh -set -eu -set -o pipefail +#!/usr/bin/env perl +use strict; +use warnings; +use 5.014; -case $1 in - up) - pactl set-sink-mute 3 0 - pactl set-sink-volume 3 +5% - ;; - down) - pactl set-sink-mute 3 0 - pactl set-sink-volume 3 -5% - ;; - mute) - pactl set-sink-mute 3 toggle - ;; -esac +chomp(my $sink=`pacmd stat | grep 'Default sink name' | sed 's/^Default sink name: //'`); + +sub get { + my $volume; + + for (split "\n", `pacmd list-sinks`) { + chomp; + next unless /name: <\Q$sink\E>/../^$/; + if (/^\s+volume: .* ([0-9]+)% /) { + if (!defined($volume)) { + $volume = $1; + } + } + elsif (/^\s+muted: yes/) { + $volume = 'mute'; + last; + } + } + + $volume +} + +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 <= 95) { + system("pactl set-sink-volume $sink +5%"); + } + elsif ($get < 100) { + system("pactl set-sink-volume $sink 100%"); + } +} +elsif ($ARGV[0] eq 'down') { + system("pactl set-sink-volume $sink -5%"); +} +elsif ($ARGV[0] eq 'mute') { + system("pactl set-sink-mute $sink toggle") +} +else { + die "unknown command '$ARGV[0]'"; +} -- cgit v1.2.3-54-g00ecf