Regola il volume tramite la riga di comando in modo che venga visualizzata la notifica del volume


15

c'è un modo per regolare il volume del sistema tramite la riga di comando in modo che il popup del volume predefinito (quello che si apre quando si premono i tasti multimediali sui notebook) sia ancora visualizzato.

Ne ho bisogno per il mio telecomando. Verrà eseguito utilizzando un file lircrc e irexec.


Risposte:


16

Installa il pacchetto xdotool e prova a emettere

xdotool key XF86AudioLowerVolume

e

xdotool key XF86AudioRaiseVolume

1
Potrebbe essere necessario anteporre questo con DISPLAY=:0(o un altro se il display è diverso) affinché l'utente di lirc sia in grado di inviarlo nel posto giusto. Potrebbe non però.
Oli

1
Molte grazie! Non avevo bisogno di impostare la variabile DISPLAY ...
Lincoln,

1
Potrebbe essere necessario utilizzare il --clearmodifiersparametro dopo il tasto per utilizzarlo nelle impostazioni delle scorciatoie da tastiera di Ubuntu.
Pablo Bianchi il

@Oli Sì, è necessario ad esempio per modificare il volume su SSH.
wjandrea,

@PabloBianchi Nella mia esperienza, Unity rimappa i tasti molto facilmente, non è necessario --clearmodifiers, tuttavia ne hai sicuramente bisogno per xbindkeys.
wjandrea,

3

È possibile associare un collegamento a questo script che ho trovato nei forum Arch (necessita del pacchetto 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

Sembra funzionare bene in Ubuntu 10.10.


1

Controlla il volume del suono

È possibile utilizzare amixerper controllare il volume del suono, ad es

amixer set 'Master' 50%
amixer set 'Master' 10%+
amixer set 'Master' 2dB-

Potrebbe essere necessario impostare la scheda audio utilizzando ad es. -c 1Per la seconda scheda audio, vedere man amixer.

Riprodurre l'audio

I suoni possono essere riprodotti usando un lettore come aplayo paplay, ad es

paplay /usr/share/sounds/freedesktop/stereo/audio-volume-change.oga

Potresti voler dare un'occhiata a questa domanda: dove trovo i suoni di sistema?

Visualizza notifica sullo schermo

È possibile riprodurre la notifica sullo schermo utilizzando la libreria X OSD X-Screen Display. Viene chiamato il pacchetto xosd-bine il comando osd_catviene utilizzato per visualizzare testo, barre di stato ecc. Sullo schermo.

osd_cat -b percentage -P 20 -T Status: -f "-adobe-helvetica-bold-*-*--34-*-*-*-*"

visualizza

inserisci qui la descrizione dell'immagine

Vedi questa pagina wiki tedesca per opzioni ed esempi e man osd_catper altro.


0

Ho installato xmacro e aggiunto le seguenti righe a .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

Questa è una versione migliorata dell'htorque di script pubblicata .

Funziona per me il 14.04. Fammi sapere se funziona su 16.04 o versioni successive.

Richiede libnotify-bininstallato.

#!/bin/sh
# Adjust the volume, play a sound, and show a notification.
#
# Replacement for default Ubuntu volume adjustment behaviour.
#
# Based on /ubuntu//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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.