问题描述
我正在使用此脚本通过keybindigs更改Pulseaudio的音量,但是它具有0%
至100%
限制.
I'm using this script to change volume in pulseaudio through keybindigs, but it has a 0%
to 100%
limit.
由于pulseaudio允许音量增大到100%
(笔记本电脑上仍然很小),因此我想对其进行调整以允许140%
或150%
的最大音量.
As pulseaudio allows volume to increase over 100%
(what is still to low on my notebook), I want to adjust it to allow 140%
or 150%
max volume.
请注意,仅通过注释行105 ~ 111
即可运行脚本或运行脚本,但脚本没有限制(这可能会破坏我的扬声器).我真正想要的是在100%
上设置可配置的限制.
Note that by just commenting lines 105 ~ 111
the scripts works or that, but without a limit value (what can wreck my speakers). What I really want is to set a configurable limit over 100%
.
实际上,这是一个bash
问题,而不是pulseaudio
.
This is, actualy, more a bash
question than a pulseaudio
.
推荐答案
我设法通过添加新变量和一些数学来更改它.
I managed to change it by adding an new variable and to some math.
OVERMAX
值(调整为所需的最大百分比)用于设置新的百分比值.因此130%
变为100%
.
The OVERMAX
value (adjust to desired max percentage) is used to set a new percentage value. So 130%
becomes 100%
.
#!/bin/sh
# pulsevol.sh
# PulseAudio Volume Control Script
# Original 2010-05-20 - Gary Hetzel <[email protected]>
#
# Modified 2010-10-18 by Fisslefink <[email protected]>
# - Added support for multiple sinks and Ubuntu libnotify OSD
#
# Usage: pulsevol.sh [sink_index] [up|down|min|max|overmax|toggle|mute|unmute]
#
EXPECTED_ARGS=2
E_BADARGS=65
if [ $# -ne $EXPECTED_ARGS ]
then
echo "Usage: `basename $0` [sink_index] [up|down|min|max|overmax|toggle|mute|unmute]"
exit $E_BADARGS
fi
SINK=$1
STEP=5
MAXVOL=65537 # let's just assume this is the same all over
#MAXVOL=`pacmd list-sinks | grep "volume steps" | cut -d: -f2 | tr -d "[:space:]"`
OVERMAX=130 # how much the volume can raise over 100%
getperc(){
VOLPERC=`pacmd list-sinks | grep "volume" | head -n1 | cut -d: -f3 | cut -d% -f1 | tr -d "[:space:]"`
}
getperc;
up(){
VOLSTEP="$(( $VOLPERC+$STEP ))";
}
down(){
VOLSTEP="$(( $VOLPERC-$STEP ))";
}
max(){
pacmd set-sink-volume $SINK $MAXVOL > /dev/null
}
min(){
pacmd set-sink-volume $SINK 0 > /dev/null
}
overmax(){
SKIPOVERCHECK=1
if [ $VOLPERC -lt 100 ]; then
max;
exit 0;
fi
up
}
mute(){
pacmd set-sink-mute $SINK 1 > /dev/null
notify-send " " -i "notification-audio-volume-muted" -h int:value:0 -h string:synchronous:volume
}
unmute(){
VOLSTEP="$(( $VOLPERC-0 ))";
SKIPOVERCHECK=1
pacmd set-sink-mute $SINK 0 > /dev/null
}
toggle(){
M=`pacmd list-sinks | grep "muted" | cut -d: -f2 | tr -d "[:space:]"`
if [ "$M" = "no" ]; then
mute
exit 0;
else
unmute;
fi
}
case $2 in
up)
up;;
down)
down;;
max)
max
exit 0;;
min)
min
exit 0;;
overmax)
overmax;;
toggle)
toggle;;
mute)
mute;
exit 0;;
unmute)
unmute;;
*)
echo "Usage: `basename $0` [sink_index] [up|down|min|max|overmax|toggle|mute|unmute]"
exit 1;;
esac
VOLUME="$(( ($MAXVOL/100) * $VOLSTEP ))"
MAXCHECK="$(( $MAXVOL * $OVERMAX / 100 ))"
if [ -z $SKIPOVERCHECK ]; then
if [ $VOLUME -gt $MAXCHECK ]; then
VOLUME=$MAXCHECK
elif [ $VOLUME -lt 0 ]; then
VOLUME=0
fi
fi
pacmd set-sink-volume $SINK $VOLUME > /dev/null
VOLPERC=`pacmd list-sinks | grep "volume" | head -n1 | cut -d: -f3 | cut -d% -f1 | tr -d "[:space:]"`
VOLPERC="$(( $VOLPERC * 100 / $OVERMAX))"
if [ "$VOLPERC" = "0" ]; then
icon_name="notification-audio-volume-off"
else
if [ "$VOLPERC" -lt "33" ]; then
icon_name="notification-audio-volume-low"
else
if [ "$VOLPERC" -lt "67" ]; then
icon_name="notification-audio-volume-medium"
else
icon_name="notification-audio-volume-high"
fi
fi
fi
notify-send " " -i $icon_name -h int:value:$VOLPERC -h string:synchronous:volume
要点: https://gist.github.com/paulodiovani/67906a5bf0392de51eca
这篇关于如何允许脉冲音频脚本通过bash将音量提高100%以上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!