diff options
author | Runciter | 2024-03-31 10:08:08 +0800 |
---|---|---|
committer | Runciter | 2024-03-31 10:08:08 +0800 |
commit | ab3ed370aea207ca16903b452170799919bec6ee (patch) | |
tree | fe1e232ef804b9563e2e885ab1baf0ec5ceeb3bc /vlm | |
download | sh-pulse-ab3ed370aea207ca16903b452170799919bec6ee.tar.gz |
Initial.
A AUTHORS
A COPYING
A ChangeLog
A INSTALL
A Makefile.am
A Makefile.in
A NEWS
A README
A aclocal.m4
A configure
A configure.ac
A install-sh
A missing
A vlm
Diffstat (limited to 'vlm')
-rwxr-xr-x | vlm | 74 |
1 files changed, 74 insertions, 0 deletions
@@ -0,0 +1,74 @@ +#!/bin/sh +# sh-pulse --- Control script for pulseaudio volume and output sink +# Copyright © 2024 Runciter <runciter@pkbd.org> +# +# This file is part of sh-pulse. +# +# sh-pulse is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at +# your option) any later version. +# +# sh-pulse is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with sh-pulse. If not, see <http://www.gnu.org/licenses/>. + +declare -a SINKS=($(pactl list short sinks | awk '{print $1}')) + +if test "x${#SINKS[@]}" = x0 +then + echo no sinks found, are you running pulseaudio? + exit 1 +fi +declare -a SINKNAMES=($(pactl list short sinks | awk '{print $2}')) + +declare -a INPUTS=($(pactl list short sink-inputs | awk '{print $1}')) +declare -a INPUTSINKS=($(pactl list short sink-inputs | awk '{print $2}')) +if test "x${#INPUTS[@]}" = x0 +then + echo no inputs found, setting first sink as default sink + IS=0 + pactl set-default-sink ${SINKNAMES[$IS]} +else + for (( I=0; I<${#SINKS[@]}; ++I )) + do + if test "x${INPUTSINKS[0]}" = "x${SINKS[$I]}" + then + IS=$I + fi + done +fi + +case "$1" in + increase) + pactl set-sink-volume ${SINKS[$IS]} "+5%" + ;; + decrease) + pactl set-sink-volume ${SINKS[$IS]} "-5%" + ;; + togglemute) + pactl set-sink-mute ${SINKS[$IS]} toggle + ;; + nextsink) + if test "x$(( ${IS}+1))" = "x${#SINKS[@]}" + then + IS=0 + else + IS=$(($IS+1)) + fi + pactl set-default-sink ${SINKNAMES[$IS]} + for (( I=0; I<${#INPUTS[@]}; ++I )) + do + pactl move-sink-input ${INPUTS[$I]} ${SINKS[$IS]} + done + ;; + *) + echo "Usage: /usr/local/bin/pavolctrl {increase|decrease|togglemute|nextsink}" + exit 2 + ;; +esac +exit 0 |