summaryrefslogtreecommitdiff
path: root/scripts/cli/svol
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/cli/svol')
-rwxr-xr-xscripts/cli/svol50
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/cli/svol b/scripts/cli/svol
new file mode 100755
index 0000000..ec60450
--- /dev/null
+++ b/scripts/cli/svol
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+. slib
+
+help() {
+cat << EOF
+${0}: Wrapper script to change volume
+options:
+ -i [Vol] Increase volume by Vol
+ -d [Vol] Decrease volume by Vol
+ -s [Vol] Set volume to Vol
+ -p Show the current volume
+ -t Toggle between mute and unmute
+ -h Print this message and exit
+EOF
+
+exit 0
+}
+
+check_program "pactl" "pulseaudio must be installed"
+
+[ $# != 1 ] && [ $# != 2 ] && invalid_use
+
+while getopts "i:d:s:pth" option; do
+ case "${option}" in
+ i) run --reload-status "pactl set-sink-volume @DEFAULT_SINK@ +${OPTARG}%" ;;
+
+ d) run --reload-status "pactl set-sink-volume @DEFAULT_SINK@ -${OPTARG}%" ;;
+
+ s) run --reload-status "pactl set-sink-volume @DEFAULT_SINK@ ${OPTARG}%" ;;
+
+ t) run --reload-status "pactl set-sink-mute @DEFAULT_SINK@ toggle" ;;
+
+ p)
+ if ! pactl get-sink-volume @DEFAULT_SINK@ \
+ | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,' | head -n1 2>/dev/null; then
+ err "Failed to get current volume"
+ else
+ exit 0
+ fi
+ ;;
+ h) help ;;
+
+ *) invalid_use -h ;;
+
+ esac
+done
+
+# Unreachable
+invalid_use