64 lines
1 KiB
Bash
Executable file
64 lines
1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# @requires: pactl
|
|
|
|
SINK=$(pactl list short sinks | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,' | head -n 1)
|
|
|
|
status () {
|
|
status=$(pactl get-source-mute $SINK | awk '{print $2}')
|
|
if [[ $status == 'yes' ]]; then
|
|
echo no
|
|
else
|
|
echo yes
|
|
fi
|
|
}
|
|
|
|
set_volume () {
|
|
local max_db=65536
|
|
local percent=$1
|
|
|
|
# getting the $percent% of $max_db
|
|
local value=$(jq -n ${percent}/100*${max_db} | sed 's/\./ /g' | awk '{print $1}')
|
|
|
|
# set volume
|
|
pacmd set-source-volume $SINK $value
|
|
}
|
|
|
|
get () {
|
|
local enabled=$(status)
|
|
if [[ $enabled == 'no' ]]; then
|
|
echo '0'
|
|
else
|
|
pacmd list short sinks | grep volume:\ front | tail -n 1 | awk '{print $5}' | sed 's/%//g'
|
|
fi
|
|
}
|
|
|
|
percentage () {
|
|
local val=$(get)
|
|
echo "${val}%"
|
|
}
|
|
|
|
_ () {
|
|
${@}
|
|
exit 0
|
|
}
|
|
|
|
if [[ $1 == "status" ]]; then
|
|
_ status
|
|
fi
|
|
|
|
if [[ $1 == "toggle" ]]; then
|
|
_ pactl set-source-mute $SINK toggle
|
|
fi
|
|
|
|
if [[ $1 == "set" ]]; then
|
|
_ set_volume ${2}
|
|
fi
|
|
|
|
if [[ $1 == "get" ]]; then
|
|
_ get
|
|
fi
|
|
|
|
if [[ $1 == "percent" ]]; then
|
|
_ percentage
|
|
fi
|