Je partage un script nommé "notification_volume.sh" dont je me sers pour ajuster le volume et afficher une notification avec barre de progression. Je suis sur openbox "pure", et utilise dunst pour les notifications (le script est prévu pour dunst, à ajuster pour les autres gestionnaires de notification).
J'ai commenté le script pour être utilisable et compréhensible par tous
Code : Tout sélectionner
#!/bin/bash
# Un script pour modifier le volume et faire apparaître une notification avec barre de progression dans dunst
# On appelle ce script de la façon suivante :
# $./notification_volume.sh up
# ou
# $./notification_volume.sh down
# ou
# $./notification_volume.sh mute
# Ce script se fonde sur une version plus simple trouvée ici :
# https://gist.github.com/sebastiencs/5d7227f388d93374cebdf72e783fbd6a
# Il a été modifié pour correspondre mieux à mes attentes (apparence et autres légères moidifications)
# Le choix des différentes icones se fait plus bas
# Choix du pas (c'est à dire de l'incrémentation en % du volume dans alsa)
# NB : plus le pas est grand, plus la barre est petite
# -> avec un pas de 4% (inc=4), il y a 25 crans (100/4)
# -> avec un pas de 5% (inc=5), il y a 20 crans (100/5) etc.
inc=5
function get_volume {
amixer get Master | grep -m 1 "%]" | cut -d "[" -f2 | cut -d "%" -f1
}
function is_mute {
amixer get Master | grep "\[off\]"
}
function send_notification {
volume=$(get_volume)
let rest=100-$volume
# APPARENCE #
# Choix actuel : ─ pour volume et · pour le reste
# Cela donne l'apparence suivante :
# Volume : 50%
# ──────────··········
# Variante possible avec # et - par exemple (modifier les caratères entre " " juste après les "seq -s"
bar=$(seq -s "─" 0 $inc $volume | sed 's/[0-9]//g')
rest_bar=$(seq -s "·" 0 $inc $rest | sed 's/[0-9]//g')
# ICONES #
# Les icones changent en fonction du volume
# Mes icones personnelles sont dans ~/Images/Icons/ , chemin à ajuster
# On peut mettre une icone statique en précisant le chemin avec icon_name="LE_CHEMIN_VERS_L_ICONE" et
# en commentant les trois "if" qui suivent
icon_name=""
if [ "$volume" = "0" ]; then
icon_name="~/Images/Icons/audio-volume-muted.svg"
else
if [ "$volume" -lt "30" ]; then
icon_name="~/Images/Icons/audio-volume-low.svg"
else
if [ "$volume" -lt "70" ]; then
icon_name="~/Images/Icons/audio-volume-medium.svg"
else
icon_name="~/Images/Icons/audio-volume-high.svg"
fi
fi
fi
# La notification
dunstify -i $icon_name -t 3000 -u normal -r 2593 "Volume : $volume%" "$bar$rest_bar"
}
case $1 in
up)
amixer set Master $inc%+ unmute > /dev/null
send_notification
;;
down)
amixer set Master $inc%- unmute > /dev/null
send_notification
;;
mute)
amixer set Master toggle > /dev/null
if is_mute ; then
# la notification pour le passage en muet (mute)
# Je n'ai mis que quelques ···, à ajuster selon l'envie ou à supprimer complètement
# Attention, ici le chemin vers l'icone "muet" est inscrit directement dans la commande dunstify
dunstify -i ~/Images/Icons/audio-volume-muted.svg -t 3000 -r 2593 -u normal "Volume :($(get_volume)%) Muet" "···"
else
send_notification
fi
;;
esac
exit