existe-t-il un moyen de régler le volume du système via la ligne de commande de sorte que la fenêtre contextuelle du volume par défaut (celle qui apparaît lorsque vous appuyez sur les touches de support des ordinateurs portables) est toujours affichée.
J'ai besoin de ça pour ma télécommande. Il sera exécuté en utilisant un fichier lircrc et irexec.
Installez le paquet xdotool et essayez de le publier
xdotool key XF86AudioLowerVolume
et
xdotool key XF86AudioRaiseVolume
Vous pouvez lier un raccourci à ce script que j'ai trouvé sur les forums Arch (nécessite le paquet libnotify-bin
):
#!/bin/sh
usage="usage: $0 -c {up|down|mute} [-i increment] [-m mixer]"
command=
increment=5%
mixer=Master
while getopts i:m:h o
do case "$o" in
i) increment=$OPTARG;;
m) mixer=$OPTARG;;
h) echo "$usage"; exit 0;;
?) echo "$usage"; exit 0;;
esac
done
shift $(($OPTIND - 1))
command=$1
if [ "$command" = "" ]; then
echo "usage: $0 {up|down|mute} [increment]"
exit 0;
fi
display_volume=0
if [ "$command" = "up" ]; then
display_volume=$(amixer set $mixer $increment+ unmute | grep -m 1 "%]" | cut -d "[" -f2|cut -d "%" -f1)
fi
if [ "$command" = "down" ]; then
display_volume=$(amixer set $mixer $increment- unmute | grep -m 1 "%]" | cut -d "[" -f2|cut -d "%" -f1)
fi
icon_name=""
if [ "$command" = "mute" ]; then
if amixer get Master | grep "\[on\]"; then
display_volume=0
icon_name="notification-audio-volume-muted"
amixer set $mixer mute
else
display_volume=$(amixer set $mixer unmute | grep -m 1 "%]" | cut -d "[" -f2|cut -d "%" -f1)
fi
fi
if [ "$icon_name" = "" ]; then
if [ "$display_volume" = "0" ]; then
icon_name="notification-audio-volume-off"
Elif [ "$display_volume" -lt "33" ]; then
icon_name="notification-audio-volume-low"
Elif [ "$display_volume" -lt "67" ]; then
icon_name="notification-audio-volume-medium"
else
icon_name="notification-audio-volume-high"
fi
fi
notify-send " " -i $icon_name -h int:value:$display_volume -h string:synchronous:volume
Semble fonctionner correctement dans Ubuntu 10.10.
Vous pouvez utiliser amixer
pour contrôler le volume du son, par exemple.
_amixer set 'Master' 50%
amixer set 'Master' 10%+
amixer set 'Master' 2dB-
_
Vous devrez peut-être définir la carte son à l’aide, par exemple, de _-c 1
_ pour la deuxième carte son, voir man amixer
.
Les sons peuvent être lus avec un lecteur comme aplay
ou paplay
, par exemple.
_paplay /usr/share/sounds/freedesktop/stereo/audio-volume-change.oga
_
Vous voudrez peut-être jeter un coup d’œil à cette question: Où puis-je trouver les sons du système?
Vous pouvez reproduire la notification à l'écran à l'aide de la bibliothèque XOSD d'affichage à l'écran X. Le package s'appelle _xosd-bin
_ et la commande _osd_cat
_ est utilisée pour afficher du texte, des barres d'état, etc. à l'écran.
_osd_cat -b percentage -P 20 -T Status: -f "-Adobe-helvetica-bold-*-*--34-*-*-*-*"
_
affiche
Voir cette page wiki allemande pour les options et les exemples et man osd_cat
pour plus d'informations.
Ceci est une version améliorée du script htorque posted .
Cela fonctionne pour moi le 14.04. Faites-moi savoir si cela fonctionne sur 16.04 ou plus récent.
libnotify-bin
doit être installé.
#!/bin/sh
# Adjust the volume, play a sound, and show a notification.
#
# Replacement for default Ubuntu volume adjustment behaviour.
#
# Based on https://askubuntu.com/a/12769/301745
command=""
device="Pulse"
display_volume=0
icon_name="error"
increment=5
mixer="Master"
usage="usage: $0 [-d device] [-i increment] [-m mixer] (up|down|mute)"
# For compatibility with SSH sessions.
export DISPLAY=:0
_amixer(){
# amixer alias
local set_get="$1"
shift
amixer -D "$device" "$set_get" "$mixer" "$@"
}
_get_display_volume(){
# grep alias
grep -Pom 1 '(?<=\[)[0-9]+(?=%\])'
}
while getopts d:hi:m: opt; do
case "$opt" in
d)
device="$OPTARG"
;;
h)
echo "$usage"
exit 0
;;
i)
increment="$OPTARG"
;;
m)
mixer="$OPTARG"
;;
?)
echo "$usage"
exit 1
;;
esac
done
shift "$(($OPTIND - 1))"
command="$1"
case "$command" in
down)
display_volume="$(
_amixer set "$increment%-" unmute |
_get_display_volume
)"
;;
mute)
if _amixer get | grep -q "\[on\]"; then
display_volume=0
icon_name="notification-audio-volume-muted"
_amixer set mute > /dev/null
else
display_volume="$(
_amixer set unmute |
_get_display_volume
)"
fi
;;
up)
display_volume="$(
_amixer set "$increment%+" unmute |
_get_display_volume
)"
;;
*)
echo "$usage"
exit 1
;;
esac
if [ "$icon_name" = "error" ]; then
if [ "$display_volume" = "0" ]; then
icon_name="notification-audio-volume-off"
Elif [ "$display_volume" -lt "33" ]; then
icon_name="notification-audio-volume-low"
Elif [ "$display_volume" -lt "67" ]; then
icon_name="notification-audio-volume-medium"
else
icon_name="notification-audio-volume-high"
fi
# In a subshell in the background to minimize latency.
( canberra-gtk-play --id=audio-volume-change & )
fi
notify-send "Volume: $display_volume%" -i "$icon_name" -h "string:synchronous:volume" -h "int:value:$display_volume"
J'ai installé xmacro et ajouté les lignes suivantes à . Lircrc:
begin
prog = irexec
button = KEY_VOLUMEUP
repeat = 1
delay = 2
config = echo KeyStrPress XF86AudioRaiseVolume KeyStrRelease XF86AudioRaiseVolume | xmacroplay $DISPLAY
end
begin
prog = irexec
button = KEY_VOLUMEDOWN
repeat = 1
delay = 2
config = echo KeyStrPress XF86AudioLowerVolume KeyStrRelease XF86AudioLowerVolume | xmacroplay $DISPLAY
end
begin
prog = irexec
button = KEY_MUTE
config = echo KeyStrPress XF86AudioMute KeyStrRelease XF86AudioMute | xmacroplay $DISPLAY
end