Я действительно не могу писать сценарий, но я модифицировал сценарий hakermania для создания другого.
Этот будет увеличивать или уменьшать объем конкретного приложения с шагом 5%:
edit: на самом деле, он работает в постоянно меняющемся последнем открывшемся приложении. Идеи?
#!/bin/bash
# Script to increase or decrease an individual application's volume using PulseAudio, depending solely on
# process name, based on another script by hakermania, constructed as answer on askubuntu.com:
# http://askubuntu.com/questions/180612/script-to-mute-an-application
# It works as: change_app_volume.sh vlc increase OR change_app_volume.sh vlc decrease
# Set desired increments in lines #66 and #68
if [ -z "$1" ]; then
echo "Please provide me with an application name"
exit 1
fi
if [ -z "$2" ]; then
echo "Please provide me with an action increase/decrease after the application name"
exit 1
fi
if ! [[ "$2" == "increase" || "$2" == "decrease" ]]; then
echo "The 2nd argument must be increase/decrease"
exit 1
fi
process_id=$(pidof "$1")
if [ $? -ne 0 ]; then
echo "There is no such process as "$1""
exit 1
fi
temp=$(mktemp)
pacmd list-sink-inputs > $temp
inputs_found=0;
current_index=-1;
while read line; do
if [ $inputs_found -eq 0 ]; then
inputs=$(echo -ne "$line" | awk '{print $2}')
if [[ "$inputs" == "to" ]]; then
continue
fi
inputs_found=1
else
if [[ "${line:0:6}" == "index:" ]]; then
current_index="${line:7}"
elif [[ "${line:0:25}" == "application.process.id = " ]]; then
if [[ "${line:25}" == "\"$process_id\"" ]]; then
#index found...
break;
fi
fi
fi
done < $temp
rm -f $temp
if [ $current_index -eq -1 ]; then
echo "Could not find "$1" in the processes that output sound."
exit 1
fi
#increase/decrease...
if [[ "$2" == "increase" ]]; then
pactl set-sink-input-volume "$current_index" +5% > /dev/null 2>&1
else
pactl set-sink-input-volume "$current_index" -5% > /dev/null 2>&1
fi
exit 0