Câu trả lời:
Từ báo cáo lỗi này , có vẻ như phím âm lượng đã biến mất trong 11.10 và vẫn chưa xuất hiện trở lại.
Do đó, không có thay đổi cấu hình đơn giản mà bạn có thể thực hiện để giảm bước âm lượng.
Bài số 18 trong liên kết đưa ra một cách giải quyết thú vị liên quan đến việc sử dụng alsamixer
khả năng tăng và giảm cùng với việc gửi thông báo đến máy tính để bàn.
Tuy nhiên tôi không thể làm cho nó hoạt động được - do đó, việc tôi đưa ra giải pháp dựa trên bài đăng đó.
Với giải pháp này, bước âm lượng mặc định sẽ giảm xuống còn hai phần trăm.
Cài đặt xbindkeys
gói (sử dụng Synaptic hoặc với sudo apt-get install xbindkeys
).
Sử dụng trình soạn thảo văn bản yêu thích của bạn, tạo một tệp trong thư mục nhà của bạn được gọi .volumeHack.sh
và sao chép và dán nội dung bên dưới vào tệp đó, tức là
gedit ~/.volumeHack.sh
Chạy chmod a+x .volumeHack.sh
để làm cho nó thực thi.
Sau đó chỉnh sửa tệp ~/.xbindkeysrc
và sao chép và dán văn bản bên dưới ở dưới cùng của tệp này. I E
gedit ~/.xbindkeysrc
Đăng xuất và đăng nhập
# Increase volume
#"amixer set Master playback 1+"
"sh ~/.volumeHack.sh -c up -i 2% -m Master"
m:0x0 + c:123
XF86AudioRaiseVolume
# Decrease volume
"sh ~/.volumeHack.sh -c down -i 2% -m Master"
m:0x0 + c:122
XF86AudioLowerVolume
# Toggle mute - this is not used here
#"amixer set Master toggle"
# m:0x0 + c:121
# XF86AudioMute
#!/bin/sh
usage="usage: $0 -c {up|down|mute} [-i increment] [-m mixer]"
command=
increment=5%
mixer=Master
while getopts c:i:m:h o
do case "$o" in
c) command=$OPTARG;;
i) increment=$OPTARG;;
m) mixer=$OPTARG;;
h) echo "$usage"; exit 0;;
?) echo "$usage"; exit 0;;
esac
done
#echo "command:$command"
#echo "increment:$increment"
#echo "mixer:$mixer"
if [ "$command" = "" ]; then
shift $(($OPTIND - 1))
command=$1
exit 0;
fi
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"
else
if [ "$display_volume" -lt "33" ]; then
icon_name="notification-audio-volume-low"
else
if [ "$display_volume" -lt "67" ]; then
icon_name="notification-audio-volume-medium"
else
icon_name="notification-audio-volume-high"
fi
fi
fi
fi
notify-send " " -i $icon_name -h int:value:$display_volume -h string:synchronous:volume
#echo "icon: $icon_name and $display_volume"
Cuối cùng tôi cũng có một giải pháp thích hợp cho người dùng Trusty, Vivid, Wily, Xenial, Yakkety và Zesty. Thay vì sử dụng một loạt các bản hack hoặc tập lệnh, tôi quyết định khắc phục sự cố trong mã nguồn. Tôi đã áp dụng bản vá này cho gnome-settings-daemon và unity-settings-daemon (một số sửa đổi nhỏ đã được thực hiện cho bản vá).
Tôi đã tải các gói lên PPA:
ppa: george-edison55 / gnome-settings-daemon ( Bấm vào đây để được hướng dẫn sử dụng PPAs. )
Khi bạn đã thêm PPA, hãy chạy:
sudo apt-get update
sudo apt-get upgrade
Bạn sẽ cần phải khởi động lại sau khi cài đặt hoàn tất. Một khi các gói đã được nâng cấp, bạn có thể sử dụng các dconf
lệnh để thay đổi tăng khối lượng:
dconf write /org/gnome/settings-daemon/plugins/sound/volume-step 2
(Giá trị mặc định là 6.)
Bây giờ khi bạn nhấn các phím âm lượng, âm lượng sẽ thay đổi theo gia số 2:
mate-settings-daemon
không? Tôi sẽ biết ơn mãi mãi :-)
dconf write /org/mate/settings-daemon/plugins/media-keys/volume-step <NUM>
ở đâu <NUM>
. Tôi vừa thử nghiệm điều này vào MATE 16.04.
Bạn sẽ không có hành động trên thanh âm lượng trên màn hình khi bạn sử dụng phím tắt, nhưng bạn sẽ có điều khiển âm lượng chi tiết như bạn muốn.
Cài đặt hệ thống> Bàn phím> tab "Phím tắt"> danh mục "Âm thanh và phương tiện"
Vô hiệu hóa các phím tắt "Giảm âm lượng" và "Tăng âm lượng" hiện có. Để làm điều này, trên mỗi lần bấm để chọn nó và sau đó nhấn Backspace để xóa bất kỳ tổ hợp phím nào được liên kết với nó.
Bây giờ chọn danh mục "Phím tắt tùy chỉnh" và nhấp vào biểu tượng "+" để tạo hai phím tắt mới như sau:
Tên: Volume Up
Command: amixer set Master 3% +
Tên: Giảm âm lượng
Lệnh: amixer đặt Master 3% -
(Thử nghiệm với tỷ lệ phần trăm. Nếu bạn cần phải cực kỳ ổn thì hãy bỏ qua dấu% và nó sẽ sử dụng tỷ lệ 0-255 thay vì tỷ lệ phần trăm).
Bây giờ chỉ định từng phím tắt mới của bạn cho một tổ hợp phím hoặc phím: Chọn một phím tắt và nhập phím hoặc phím mong muốn trên bàn phím của bạn.
Sau này, khi bạn sử dụng điều khiển âm lượng bàn phím, bạn sẽ có bất kỳ mức tăng âm lượng nào bạn đã chỉ định. Bạn luôn có thể quay lại hành vi ban đầu bằng cách vô hiệu hóa các phím tắt tùy chỉnh của mình và bật lại các phím tắt trong danh mục "Âm thanh và Phương tiện".
Điều đáng chú ý là trên Ubuntu 17.10, đã có loại hỗ trợ (mặc dù hơi phức tạp) cho việc này. Nhấn Shift+ XF86AudioRaiseVolume(hoặc XF86AudioLowerVolume) để thay đổi âm lượng với kích thước bước nhỏ hơn.
Bạn có thể làm điều này với Trình quản lý cài đặt CompizConfig. Sử dụng lệnh
sudo apt-get install compizconfig-settings-manager
nếu bạn chưa cài đặt nó.
Bây giờ hãy mở Trình quản lý cài đặt CompizConfig và đi đến Lệnh trong phần Chung . Kiểm tra hộp kiểm Bật lệnh bên phải. Trong tab Lệnh , nhập riêng hai lệnh sau dưới dạng hai lệnh:
amixer set Master 5%+ -q
amixer set Master 5%- -q
Gán hai phím tắt cho các lệnh trong tab Liên kết khóa . Tôi sử dụng kết hợp Super + [và Super +]. Bây giờ hãy đóng Trình quản lý cài đặt CompizConfig và nó sẽ hoạt động.
Tôi không chắc chắn nếu bạn có thể gán các lệnh cho bộ điều khiển âm lượng tích hợp của máy tính.
amixer
lệnh là tuyệt vời, nhưng không có nhu cầu để bạn có thể hướng dẫn bạn đọc để cài đặt CompizConfig Settings Manager.
Nếu bạn muốn điều khiển âm lượng pulseaudio trực tiếp hơn là đi theo tuyến ALSA, bạn có thể sử dụng tập lệnh sau. Mặc dù cũng có thể điều khiển âm lượng qua DBUS như được nêu chi tiết trong câu trả lời Stackoverflow này , tuy nhiên tôi không thể tìm ra cách để làm cho điều này hoạt động trong Ubuntu 12.04.
Như đã nói trong chính kịch bản, nó sử dụng câu trả lời Stackoverflow này về cách thay đổi âm lượng theo chương trình trong Ubuntu và mở rộng ý tưởng thành tập lệnh lấy thay đổi âm lượng làm đối số dòng lệnh và cũng hiển thị thông báo OSD. Tôi đã cố gắng mô hình hóa nó càng chặt chẽ càng tốt với hành vi mặc định của Ubuntu (12.04).
Tập lệnh lấy các thay đổi âm lượng dưới dạng số tuyệt đối hoặc tương đối hoặc giá trị phần trăm. Ví dụ:
pavol.sh 2000
đặt âm lượng thành 2000,pavol.sh 30%
đặt âm lượng thành 30 phần trăm,pavol.sh +1000
tăng âm lượng lên 1000 vàpavol.sh -5%
giảm âm lượng 5 phần trăm.Nó cũng được bình luận khá tự do với hy vọng rằng nó hữu ích cho việc điều chỉnh thêm.
Sử dụng trình soạn thảo văn bản yêu thích của bạn để tạo một tệp trong thư mục nhà của bạn (hoặc bất kỳ nơi nào khác thực sự - chỉ cần nhớ đường dẫn) được gọi pavol.sh
và sao chép và dán nội dung bên dưới vào tệp đó, nghĩa là
gedit ~/pavol.sh
Chạy chmod a+x ~/pavol.sh
để làm cho nó thực thi.
Sau đó mở Sytem Settings
, đi đến Keyboard
cài đặt và chuyển sang Shortcuts
tab. Ở đó bấm vào Custom Shortcuts
và tạo hai phím tắt mới bằng nút dấu cộng.
Đặt cho mỗi người một tên và dưới dạng lệnh nhập một cái gì đó như thế này: /home/username/pavol.sh "+3%"
Điều quan trọng là phải nhập đường dẫn đầy đủ đến pavol.sh
tập lệnh (trừ khi tập lệnh nằm trong một thư mục được bao gồm trong biến môi trường PATH). Đồng thời sử dụng dấu ngoặc kép ""
xung quanh giá trị âm lượng hoặc phím tắt sẽ không hoạt động.
Sau đó bấm vào bên phải của mỗi mục để đặt tổ hợp phím hoặc khóa đa phương tiện. Nếu tổ hợp hoặc khóa mong muốn đã được gán cho một phím tắt khác, chương trình sẽ hỏi bạn có muốn gán lại nó không.
#!/bin/bash --
## This script expands upon this answer on stackoverflow:
## https://stackoverflow.com/a/10739764
##
## GLOBAL VARIABLES
# restrict usable commands
PATH="/bin:/usr/bin"
# this script changes the volume of the default sink (as set, for instance, via the Ubuntu sound menu);
# use "pactl info" to display these settings neatly in a terminal
DEFAULT_SINK=$(pacmd dump | grep 'set-default-sink' | cut -d ' ' -f 2)
# get max. volume from the DEFAULT_SINK
MAX_VOL=$(pacmd list-sinks | grep -A 20 "name: <${DEFAULT_SINK}>" | grep "volume steps:" | tr -d '[:space:]' | cut -d ':' -f 2)
# show debug messages?
# 0 means no debug messages; 1 prints the current volume to the console at the end of the script; 2 switches on bash debugging via "set -x"
DEBUG=0
## FUNCTIONS
# generate trace output if DEBUG is 2 or higher
if [ ${DEBUG} -gt 1 ]; then set -x; fi
# use poor man's return buffer via this variable (This is not stackable!)
RETVAL=""
# print simple usage text to console
show_usage() {
echo "Usage: $(basename ${0}) [+|-][number|percentage]"
}
# return (via RETVAL) the current pulseaudio volume as hexadecimal value
get_cur_vol() {
RETVAL=$(pacmd dump | grep "set-sink-volume ${DEFAULT_SINK}" | cut -d ' ' -f 3)
}
# change the pulseaudio volume as set in the first parameter variable, i.e. ${1};
# this can either be an absolute percentage or normal value, for instance 20% or 2000,
# or a relative percentage or normal value, for instance +3% or -5% or +200 or -1000
change_vol() {
step=${1}
relative=${step:0:1} # extract first character
percent=${step: -1} # extract last character
# cut off first character for easier calculations, if it is either a "+" or "-"
if [ "${relative}" = "+" -o "${relative}" = "-" ]; then step=${step:1}; fi
# if the last character of ${step} was, in fact, a percent sign...
if [ "${percent}" = "%" ]; then
step=${step:0:-1} # cut off last character for easier calculations
step=$[step*MAX_VOL/100] # change percentage into fixed value via MAX_VOL
fi
# save current volume in ${old_vol}
get_cur_vol
old_vol=$[RETVAL+0] # the dummy calculation turns the hexadecimal number to a decimal one
# calculate the new volume value ${new_vol} with the operand that was extracted earlier
if [ "${relative}" = "+" ]; then
new_vol=$[old_vol+step]
else
if [ "${relative}" = "-" ]; then
new_vol=$[old_vol-step]
else
# no operand found, so ${step} must be an absolute value
new_vol=${step}
fi
fi
# check boundaries - don't go below 0 and above MAX_VOL
if [ ${new_vol} -lt 0 ]; then new_vol=0; fi
if [ ${new_vol} -gt ${MAX_VOL} ]; then new_vol=${MAX_VOL}; fi
# set the new volume
pactl -- set-sink-volume "${DEFAULT_SINK}" "${new_vol}"
# mute the sink if the new volume drops to 0 ...
if [ ${new_vol} -le 0 ]; then
pactl -- set-sink-mute "${DEFAULT_SINK}" yes
else
# ... or unmute the sink if the new volume is greater than the old
if [ ${new_vol} -gt ${old_vol} ]; then
pactl -- set-sink-mute "${DEFAULT_SINK}" no
fi
fi
}
# show an OSD notification
notify_osd() {
# get current volume
get_cur_vol
cur_vol_percent=$[RETVAL*100/MAX_VOL]
# get mute state (gives "yes" or "no")
muted=$(pacmd dump | grep "set-sink-mute ${DEFAULT_SINK}" | cut -d ' ' -f 3)
# choose suitable icon (modeled after the default Ubuntu 12.04 behavior):
# muted-icon if volume is muted
if [ "${muted}" = "yes" ]; then
icon="notification-audio-volume-muted"
else
# icon with loudspeaker and 1 of the 3 circle segments filled if volume is less than 34%
if [ ${cur_vol_percent} -lt 34 ]; then
icon="notification-audio-volume-low"
else
# icon with loudspeaker and 2 of the 3 circle segments filled if volume is between 34% and 66%
if [ ${cur_vol_percent} -lt 67 ]; then
icon="notification-audio-volume-medium"
else
# icon with loudspeaker and all 3 of the 3 circle segments filled if volume is higher than 66%
icon="notification-audio-volume-high"
fi
fi
fi
# show notification
notify-send "Volume" -i ${icon} -h int:value:${cur_vol_percent} -h string:synchronous:volume
}
# fake main function, that gets called first and kicks off all the other functions
main() {
# only change volume if input is a number with either a +/- prefix and/or a % suffix
if [[ "${1}" =~ ^[+-]?[0-9]+[%]?$ ]]; then
change_vol ${1}
else
show_usage
fi
# show volume osd
notify_osd
# show the new - now current - volume in hexadecimal, decimal and percentage if DEBUG is greater than 0
if [ ${DEBUG} -gt 0 ]; then
get_cur_vol
echo "${RETVAL} - $[RETVAL+0] - $[RETVAL*100/MAX_VOL]%"
fi
}
## REAL MAIN
# run the fake main function and pass on all command line arguments; then exit the script
main ${@}
exit 0
--hint=int:transient:1
trước "Volume"
vào dòng bằng lệnh thông báo gửi (nên là số dòng 130). Có lẽ nó giúp.
Chỉnh sửa tập tin main.xml
thường được tìm thấy tại:
/usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/config/main.xml
như root.
Tìm mục nhập volumeStep:
<entry name="volumeStep" type="Int">
<default>2</default>
</entry>
và thay đổi tỷ lệ phần trăm trên mỗi bước thành bất cứ điều gì bạn muốn. Tôi sử dụng 2% như bạn có thể thấy.
Như được viết tại Kubfox 16.04, bạn sẽ cần khởi động lại Plasma để điều này có hiệu lực:
killall plasmashell #to stop it
kstart plasmashell #to restart it
Tôi đã nâng cấp từ 14.04, có mức âm lượng chính cũng như các nguồn đầu vào và nguồn đầu ra riêng lẻ và bước tăng / giảm 3% (sau này thay đổi thành 5%). Tôi quản lý để giữ nó ở mức khoảng 2% và 3% bằng cách điều chỉnh mức âm lượng nguồn đầu ra để bù cho các bước âm lượng chính.
Vì vậy, một cách tự nhiên, tôi đã có một chút khó chịu khi 16.04 tăng mức này lên 6% và loại bỏ điều khiển âm lượng chính, thay vào đó các nút âm lượng điều khiển cả hai nguồn đầu ra.
Bản sửa lỗi trên cho Ubuntu 16.04 không hoạt động với giao diện Plasma 5 được sử dụng trên KDE5, vì vậy sẽ không hoạt động cho Kubfox 16.04 - Tôi đã thử và nó không hoạt động.
Vì vậy, tôi đã kiểm tra nhanh trên mạng và quá trình này yêu cầu thay đổi tệp theo cách thủ công, nhưng nó khá đơn giản.
Chỉnh sửa tập tin ListItemBase.qml
thường được tìm thấy tại /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/ListItemBase.qml
root.
Có một vài dòng trong các hàm increaseVolume
và decreaseVolume
xác định bước bằng cách chia âm lượng tối đa cho 15. Chúng trông giống như:
var step = slider.maximumValue / 15;
Con số càng cao, các bước càng nhỏ. Nếu đây là 1, âm lượng là 0% hoặc 100%, nhưng nếu đây là 100, âm lượng sẽ tăng lên theo các bước 1%.
Cá nhân, tôi nhắm tới 2%, vì vậy tôi đã thay đổi cả hai dòng này thành
var step = slider.maximumValue / 50;
Tín dụng vào Reddit này: https://www.reddit.com/r/kde/comments/3t1xr0/how_to_change_the_volume_increment_step_size_for/
Tuy nhiên, bạn sẽ cần khởi động lại Plasma để điều này có hiệu lực:
killall plasmashell #to stop it
kstart plasmashell #to restart it
Hy vọng rằng điều này sẽ giúp ai đó thoát ra, hoặc thậm chí có thể dẫn đến việc ai đó gửi thay đổi trong Plasma để điều chỉnh cấu hình này ... cả hai cuối cùng có thể là tôi sau một bản cập nhật khác.