通过命令行调整音量,以便弹出通知音量

分享于 

6分钟阅读

ubuntu

  繁體

问题

有一种方法可以通过命令行来调整系统音量


答案1

安装xdotool软件包,并尝试发出


xdotool key XF86AudioLowerVolume




xdotool key XF86AudioRaiseVolume




答案2

你可以将快捷方式绑定到此脚本


#!/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




答案3

控制音量

可以使用amixer来控制音量,例如,


amixer set 'Master' 50%


amixer set 'Master' 10%+


amixer set 'Master' 2dB-



播放声音

可以使用aplaypaplay等播放机播放声音,例如,


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




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




答案4

我安装了xmacro,并在,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




答案5

在14.04上对我有用,

它需要安装libnotify-bin


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





COM  COMM  Comma  命令行  POP    
相关文章