web-dev-qa-db-fra.com

Ajustez le volume via la ligne de commande pour que la notification de volume apparaisse

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.

14
Lincoln

Installez le paquet xdotool et essayez de le publier

xdotool key XF86AudioLowerVolume

et

xdotool key XF86AudioRaiseVolume
16
mgunes

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.

4
htorque

Contrôle du volume sonore

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 .

Jouer son

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?

Afficher la notification à l'écran

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

enter image description here

Voir cette page wiki allemande pour les options et les exemples et man osd_cat pour plus d'informations.

1
dessert

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"
0
wjandrea

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
0
Jakob