Điều chỉnh âm lượng qua dòng lệnh để âm lượng thông báo bật lên


14

có cách nào để điều chỉnh âm lượng hệ thống thông qua dòng lệnh để cửa sổ bật lên âm lượng mặc định (cửa sổ bật lên khi nhấn các phím phương tiện trên máy tính xách tay) vẫn được hiển thị.

Tôi cần điều này cho điều khiển từ xa của tôi. Nó sẽ được chạy bằng tệp lircrc và irexec.


Câu trả lời:


15

Cài đặt gói xdotool và thử phát hành

xdotool key XF86AudioLowerVolume

xdotool key XF86AudioRaiseVolume

1
Bạn có thể cần phải trả trước rằng DISPLAY=:0(hoặc một cái khác nếu màn hình của bạn khác) để người dùng lirc có thể gửi nó đến đúng nơi. Có thể không mặc dù.
Oli

1
Cảm ơn rất nhiều! Tôi không cần đặt biến HIỂN THỊ ...
Lincoln

1
Bạn có thể cần sử dụng --clearmodifierstham số sau phím để sử dụng nó trên cài đặt phím tắt của bàn phím Ubuntu.
Pablo Bianchi

@Oli Có, bạn sẽ cần điều đó, ví dụ như thay đổi âm lượng qua SSH.
wjandrea

@PabloBianchi Theo kinh nghiệm của tôi, Unity sắp xếp lại các phím thực sự dễ dàng, không cần --clearmodifiers, tuy nhiên bạn chắc chắn cần nó cho xbindkeys.
wjandrea

3

Bạn có thể liên kết một lối tắt đến tập lệnh này tôi đã tìm thấy trong diễn đàn Arch (cần gói 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

Có vẻ hoạt động tốt trong Ubuntu 10.10.


1

Điều khiển âm lượng

Bạn có thể sử dụng amixerđể kiểm soát âm lượng, vd

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

Bạn có thể cần đặt soundcard bằng cách sử dụng ví dụ -c 1cho soundcard thứ hai, xem man amixer.

Chơi âm thanh

Âm thanh có thể được chơi bằng cách sử dụng máy nghe nhạc như aplayhay paplay, ví dụ như

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

Bạn có thể muốn có một cái nhìn về câu hỏi này: Tôi tìm thấy âm thanh hệ thống ở đâu?

Hiển thị thông báo trên màn hình

Bạn có thể sao chép thông báo trên màn hình bằng thư viện XOSD trên màn hình hiển thị XOSD. Gói được gọi xosd-binvà lệnh osd_catđược sử dụng để hiển thị văn bản, thanh trạng thái, vv trên màn hình.

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

màn hình

nhập mô tả hình ảnh ở đây

Xem trang wiki tiếng Đức này để biết các tùy chọn và ví dụ và man osd_catđể biết thêm.


0

Tôi đã cài đặt xmacro và thêm các dòng sau vào .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

Đây là một phiên bản cải tiến của kịch bản htorque được đăng .

Nó hoạt động cho tôi vào ngày 14.04. Hãy cho tôi biết nếu nó hoạt động vào ngày 16.04 hoặc mới hơn.

Nó yêu cầu libnotify-bincài đặt.

#!/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"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.