Pertanyaan Sesuaikan volume melalui commandline sehingga volume memberitahukan muncul


adakah cara untuk mengatur volume sistem melalui commandline sehingga volume default popup (yang muncul ketika menekan tombol media pada notebook) masih ditampilkan.

Saya membutuhkan ini untuk kendali jarak jauh saya. Ini akan dijalankan menggunakan file lircrc dan irexec.


12
2017-11-12 00:11


asal




Jawaban:


Instal xdotool paket, dan cobalah menerbitkan

xdotool key XF86AudioLowerVolume

dan

xdotool key XF86AudioRaiseVolume

15
2017-11-12 00:54



Anda mungkin perlu menambahkannya dengan DISPLAY=:0 (atau lainnya jika tampilan Anda berbeda) untuk pengguna lirc agar dapat mengirimnya ke tempat yang tepat. Mungkin tidak. - Oli♦
Terima kasih banyak! Saya tidak perlu mengatur variabel DISPLAY ... - Lincoln
Anda mungkin perlu menggunakannya --clearmodifiers parameter setelah kunci untuk menggunakannya pada pengaturan pintas keyboard Ubuntu. - Pablo Bianchi
@Oli Ya, Anda memerlukannya untuk mis. mengubah volume melalui SSH. - wjandrea
@PabloBianchi Dalam pengalaman saya, Unity memetakan kembali kunci dengan sangat mudah, tidak perlu --clearmodifiersNamun Anda pasti membutuhkannya untuk xbindkeys. - wjandrea


Anda dapat mengikat pintasan ke skrip ini yang saya temukan di forum Arch (membutuhkan 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

Tampaknya berfungsi dengan baik di Ubuntu 10.10.


4
2017-11-12 01:04





Kontrol Volume Suara

Kamu dapat memakai amixer untuk mengontrol volume suara, mis.

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

Anda mungkin perlu mengatur kartu suara menggunakan mis. -c 1 untuk soundcard kedua, lihat man amixer.

Memainkan suara

Suara dapat dimainkan menggunakan pemutar seperti aplay atau paplay, mis.

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

Anda mungkin ingin melihat pertanyaan ini: Di mana saya menemukan suara sistem?

Tampilkan Notifikasi di Layar

Anda dapat mereproduksi notifikasi di layar menggunakan XOSD XOSD. Paket itu disebut xosd-bin dan perintahnya osd_cat digunakan untuk menampilkan teks, status bar, dll. di layar.

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

menampilkan

enter image description here

Lihat halaman wiki Jerman ini untuk opsi dan contoh dan man osd_cat untuk lebih.


1
2017-09-28 07:22





Saya telah menginstal xmacro dan menambahkan baris berikut ke .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
2018-02-15 15:11





Ini adalah versi skrip yang lebih baik htorque diposting.

Ini bekerja untuk saya di 14.04. Beri tahu saya jika berfungsi pada 16.04 atau yang lebih baru.

Itu membutuhkan libnotify-bin diinstal.

#!/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
2017-09-29 02:16