Passen Sie die Lautstärke über die Befehlszeile an, sodass eine Benachrichtigung über die Lautstärke angezeigt wird

14

Gibt es eine Möglichkeit, die Systemlautstärke über die Befehlszeile so anzupassen, dass das Popup für die Standardlautstärke (das Popup, das beim Drücken der Medientasten auf Notebooks angezeigt wird) weiterhin angezeigt wird?

Ich brauche das für meine Fernbedienung. Es wird mit einer lircrc-Datei und irexec ausgeführt.

Lincoln
quelle

Antworten:

15

Installieren Sie das xdotool- Paket und versuchen Sie es mit der Ausgabe

xdotool key XF86AudioLowerVolume

und

xdotool key XF86AudioRaiseVolume
mgunes
quelle
1
Möglicherweise müssen Sie DISPLAY=:0dem Text ein (oder ein anderes, wenn Ihre Anzeige anders ist) voranstellen, damit der Benutzer des Funkgeräts ihn an den richtigen Ort senden kann. Könnte aber nicht sein.
Oli
1
Vielen Dank! Ich musste die DISPLAY-Variable nicht setzen ...
Lincoln
1
Möglicherweise müssen Sie --clearmodifiersParameter nach der Taste verwenden, um sie in den Einstellungen für Ubuntu-Tastaturkürzel zu verwenden.
Pablo Bianchi
@Oli Ja, das brauchst du zB, um die Lautstärke über SSH zu ändern.
wjandrea
@PabloBianchi Meiner Erfahrung nach ordnet Unity die Schlüssel sehr einfach neu zu, ohne --clearmodifiersdass dies erforderlich ist. Für xbindkeys ist dies jedoch unbedingt erforderlich.
wjandrea
3

Sie könnten eine Verknüpfung zu diesem Skript erstellen, das ich in den Arch-Foren gefunden habe (benötigt das Paket 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

Scheint in Ubuntu 10.10 gut zu funktionieren.

Drehmoment
quelle
1

Kontrollieren Sie die Lautstärke

Mit können Sie amixerdie Lautstärke regeln, z

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

Möglicherweise müssen Sie die Soundkarte einstellen, indem Sie z. B. -c 1die zweite Soundkarte verwenden, siehe man amixer.

Ton abspielen

Sounds können mit einem Player wie aplayoder paplayzB abgespielt werden

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

Vielleicht möchten Sie sich diese Frage ansehen: Wo finde ich Systemtöne?

Bildschirmbenachrichtigung anzeigen

Sie können die Bildschirmbenachrichtigung mithilfe der X-On-Screen-Display-Bibliothek XOSD reproduzieren. Das Paket wird aufgerufen xosd-binund der Befehl osd_catwird verwendet, um Text, Statusleisten usw. auf dem Bildschirm anzuzeigen.

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

zeigt

Bildbeschreibung hier eingeben

Auf dieser deutschen Wiki-Seite finden Sie Optionen, Beispiele und man osd_catmehr.

Dessert
quelle
0

Ich habe xmacro installiert und folgende Zeilen zu .lircrc hinzugefügt :

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

Dies ist eine verbesserte Version des Skripts htorque posted .

Es funktioniert bei mir am 14.04. Lassen Sie mich wissen, ob es auf 16.04 oder neuer funktioniert.

Es muss libnotify-bininstalliert sein.

#!/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"
wjandrea
quelle