Added swaync and some notifications
This commit is contained in:
79
config/grapheio/scripts/volume.sh
Executable file
79
config/grapheio/scripts/volume.sh
Executable file
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Dependencies:
|
||||
# - amixer
|
||||
# - pactl
|
||||
# - jq
|
||||
# - libnotify
|
||||
|
||||
ACTION=$1
|
||||
|
||||
get_volume_info() {
|
||||
amixer sget Master | \
|
||||
grep 'Left:' | \
|
||||
sed -e 's/[^[]*\[\([0-9]*\)%\][^[]\[\(\w*\)\]/{"volume": \1, "muted": \2}/' \
|
||||
-e 's/on/false/' \
|
||||
-e 's/off/true/'
|
||||
}
|
||||
|
||||
notify() {
|
||||
notify-send "$1" "$2" -e -t 1500 -h string:x-canonical-private-synchronous:volume
|
||||
}
|
||||
|
||||
mute() {
|
||||
pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
|
||||
VOLUME_INFO=$(get_volume_info)
|
||||
VOLUME=$(echo $VOLUME_INFO | jq .volume)
|
||||
if [ $(echo $VOLUME_INFO | jq .muted) == "true" ]
|
||||
then
|
||||
AUDIO_ICON=""
|
||||
MUTED_STR="Muted"
|
||||
BODY=""
|
||||
else
|
||||
AUDIO_ICON=""
|
||||
MUTED_STR="Unmuted"
|
||||
BODY=$(echo "$VOLUME%")
|
||||
fi
|
||||
|
||||
TITLE=$(echo "$AUDIO_ICON $MUTED_STR")
|
||||
notify "$TITLE" "$BODY"
|
||||
}
|
||||
|
||||
set_volume() {
|
||||
# Set the volume
|
||||
TARGET=$1
|
||||
pactl set-sink-volume @DEFAULT_SINK@ $TARGET
|
||||
|
||||
# Send a notification
|
||||
VOLUME_INFO=$(get_volume_info)
|
||||
ACTION=$([[ ${TARGET:0:1} == "+" ]] && echo "Volume Up" || echo "Volume Down")
|
||||
VOLUME=$(echo $VOLUME_INFO | jq .volume)
|
||||
|
||||
if [ $(echo $VOLUME_INFO | jq .muted) == "true" ]
|
||||
then
|
||||
AUDIO_ICON=""
|
||||
MUTED_STR="[muted]"
|
||||
else
|
||||
AUDIO_ICON=""
|
||||
MUTED_STR=""
|
||||
fi
|
||||
|
||||
TITLE=$(echo "$AUDIO_ICON $ACTION")
|
||||
BODY=$(echo "$VOLUME% $MUTED_STR")
|
||||
notify "$TITLE" "$BODY"
|
||||
}
|
||||
|
||||
case $ACTION in
|
||||
mute)
|
||||
mute
|
||||
;;
|
||||
set)
|
||||
set_volume $2
|
||||
;;
|
||||
*)
|
||||
echo "Unknown action"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user