Respostas:
Neste relatório de erro , parece que a chave da etapa do volume desapareceu na 11.10 e ainda não reapareceu.
Portanto, não há uma alteração simples na configuração que você possa fazer para reduzir a etapa do volume.
A publicação nº 18 do link fornece uma solução interessante, que envolve o uso da alsamixer
capacidade de incremento e decremento juntamente com o envio de notificações para a área de trabalho.
No entanto, eu não consegui fazê-lo funcionar - portanto, minha opinião sobre a solução é baseada nesse post.
Com esta solução, a etapa de volume padrão será reduzida para etapas de dois por cento.
Instale o xbindkeys
pacote (usando Synaptic, ou com sudo apt-get install xbindkeys
).
Usando seu editor de texto favorito, crie um arquivo em sua pasta pessoal chamado .volumeHack.sh
e copie e cole o conteúdo abaixo nesse arquivo, ou seja,
gedit ~/.volumeHack.sh
Execute chmod a+x .volumeHack.sh
para torná-lo executável.
Em seguida, edite o arquivo ~/.xbindkeysrc
e copie e cole o texto abaixo na parte inferior deste arquivo. ie
gedit ~/.xbindkeysrc
Logout e login
# 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"
Finalmente, tenho uma solução adequada para usuários Trusty, Vivid, Wily, Xenial, Yakkety e Zesty. Em vez de usar um monte de hacks ou um script, decidi corrigir o problema no código-fonte. Eu apliquei este patch no gnome-settings-daemon e no unity-settings-daemon (algumas modificações triviais foram feitas no patch).
Fiz upload dos pacotes para um PPA:
ppa: george-edison55 / gnome-settings-daemon ( Clique aqui para obter instruções sobre o uso de PPAs. )
Depois de adicionar o PPA, execute:
sudo apt-get update
sudo apt-get upgrade
Você precisará reiniciar após a instalação ser concluída. Após a atualização dos pacotes, você pode usar o dconf
comando para alterar o incremento de volume:
dconf write /org/gnome/settings-daemon/plugins/sound/volume-step 2
(O valor padrão é 6.)
Agora, quando você pressiona as teclas de volume, o volume muda em incrementos de 2:
mate-settings-daemon
? Eu ficaria eternamente grato :-)
dconf write /org/mate/settings-daemon/plugins/media-keys/volume-step <NUM>
onde <NUM>
está o novo valor. Acabei de testar isso no MATE 16.04.
Você não terá a ação da barra de volume na tela ao usar os atalhos do teclado, mas terá o controle de volume mais refinado que desejar.
Configurações do sistema> Teclado> guia "Atalhos"> categoria "Som e mídia"
Desative os atalhos "Diminuir volume" e "Aumentar volume" existentes. Para fazer isso, clique em cada um para selecioná-lo e pressione Backspace para limpar qualquer combinação de teclas associada a ele.
Agora selecione a categoria "Atalhos personalizados" e clique no ícone "+" para criar dois novos atalhos da seguinte maneira:
Nome:
Aumentar volume Comando: amixer set Master 3% +
Nome: Volume Down
Command: amixer set Master 3% -
(Experimente as porcentagens. Se precisar ir extremamente bem, omita o sinal de% e ele usará uma escala de 0 a 255 no lugar de porcentagem).
Agora atribua cada um dos seus novos atalhos a uma tecla ou combinação de teclas: Selecione um atalho e digite a tecla ou teclas desejadas no teclado.
Depois disso, ao usar os controles de volume do teclado, você deverá ter os incrementos especificados. Você sempre pode voltar ao comportamento original desativando seus atalhos personalizados e reativando os pré-configurados na categoria "Som e mídia".
Vale a pena notar que no Ubuntu 17.10 já existe (embora um tanto complicado) tipo de suporte para isso. Pressione Shift+ XF86AudioRaiseVolume(ou XF86AudioLowerVolume) para alterar o volume com um tamanho de passo menor.
Você pode fazer isso com o Gerenciador de configurações do CompizConfig. Use o comando
sudo apt-get install compizconfig-settings-manager
se você ainda não o instalou.
Agora abra o Gerenciador de configurações do CompizConfig e vá para Comandos na seção Geral . Marque a caixa de seleção Ativar comandos à direita. Na guia Comandos , insira os dois comandos a seguir separadamente como dois comandos:
amixer set Master 5%+ -q
amixer set Master 5%- -q
Atribua dois atalhos de teclado para os comandos na guia Ligações de teclas . Eu uso a combinação Super + [e Super +]. Agora feche o Gerenciador de configurações do CompizConfig e isso deve funcionar.
Não tenho certeza se você pode atribuir os comandos aos controladores de volume internos do computador.
amixer
comando é maravilhoso, mas não há necessidade de você instruir os leitores a instalar o CompizConfig Settings Manager.
Se você deseja controlar o volume do pulseaudio diretamente, em vez de seguir a rota ALSA, pode usar o seguinte script. Embora também seja possível controlar o volume via DBUS, conforme detalhado nesta resposta do Stackoverflow , no entanto, não consegui encontrar uma maneira de fazer isso funcionar no Ubuntu 12.04.
Como é dito no próprio script, ele usa esta resposta do Stackoverflow sobre como alterar programaticamente o volume no Ubuntu e expande a idéia para um script que aceita a alteração do volume como argumento de linha de comando e também mostra uma notificação OSD. Tentei modelá-lo o mais próximo possível do comportamento padrão do Ubuntu (12.04).
O script aceita alterações de volume como um número absoluto ou relativo ou valor percentual. Então, por exemplo:
pavol.sh 2000
define o volume para 2000,pavol.sh 30%
define o volume para 30%,pavol.sh +1000
aumenta o volume em 1000 epavol.sh -5%
diminui o volume em 5%.Também é comentado de maneira bastante liberal, na esperança de que seja útil para ajustes adicionais.
Use seu editor de texto favorito para criar um arquivo em sua pasta pessoal (ou em qualquer outro lugar - lembre-se do caminho) chamado pavol.sh
e copie e cole o conteúdo abaixo nesse arquivo, ou seja,
gedit ~/pavol.sh
Execute chmod a+x ~/pavol.sh
para torná-lo executável.
Em seguida Sytem Settings
, abra , vá para as Keyboard
configurações e mude para a Shortcuts
guia. Lá, clique em Custom Shortcuts
e crie dois novos atalhos de teclado com o botão mais.
Dê um nome a cada um e, como comando, digite algo como isto: /home/username/pavol.sh "+3%"
É importante inserir o caminho completo para o pavol.sh
script (a menos que o script esteja em uma pasta incluída na variável de ambiente PATH). Também use aspas ""
ao redor do valor do volume ou o atalho do teclado não funcionará.
Depois disso, clique no lado direito de cada entrada para definir uma combinação de teclas ou chave multimídia. Se a combinação ou tecla desejada já estiver atribuída a outro atalho, o programa perguntará se você deseja atribuí-lo novamente.
#!/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
antes "Volume"
na linha com o comando notify-send (deve ser o número da linha 130). Talvez ajude.
Edite o arquivo main.xml
normalmente encontrado em:
/usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/config/main.xml
como root.
Procure a entrada volumeStep:
<entry name="volumeStep" type="Int">
<default>2</default>
</entry>
e altere a porcentagem por etapa para o que você quiser. Eu uso 2% como você pode ver.
Como está escrito no Kubuntu 16.04, você precisará reiniciar o Plasma para que isso entre em vigor:
killall plasmashell #to stop it
kstart plasmashell #to restart it
Atualizei a partir do 14.04, que tinha um nível de volume principal, bem como as fontes de entrada e de saída individuais, e uma etapa de incremento / decremento de 3% (que mais tarde mudou para 5%). Consegui manter as etapas em torno de 2% e 3%, simplesmente ajustando os níveis de volume da fonte de saída para compensar as etapas do volume principal.
Então, naturalmente, fiquei um pouco irritado quando o 16.04 aumentou para 6% e removi o controle de volume principal. Em vez disso, os botões de volume controlam as duas fontes de saída.
A correção acima para o Ubuntu 16.04 não funciona com a interface Plasma 5 usada no KDE5, portanto não funcionará no Kubuntu 16.04 - tentei e não funciona.
Portanto, fiz uma verificação rápida on-line, e o processo requer a alteração manual de um arquivo, mas é bastante direto.
Edite o arquivo ListItemBase.qml
normalmente encontrado /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/ListItemBase.qml
como raiz.
Há algumas linhas nas funções increaseVolume
e decreaseVolume
que definem a etapa dividindo o volume máximo por 15. Elas se parecem com:
var step = slider.maximumValue / 15;
Quanto maior o número, menores as etapas. Se fosse 1, o volume seria 0% ou 100%, mas se fosse 100, o volume aumentaria em etapas de 1%.
Pessoalmente, eu apontei 2%, então mudei as duas linhas para
var step = slider.maximumValue / 50;
O crédito vai para este Reddit: https://www.reddit.com/r/kde/comments/3t1xr0/how_to_change_the_volume_increment_step_size_for/
No entanto, você precisará reiniciar o Plasma para que isso entre em vigor:
killall plasmashell #to stop it
kstart plasmashell #to restart it
Espero que isso ajude alguém, ou talvez até leve alguém a enviar uma alteração no Plasma para fazer com que essa configuração seja conduzida ... ambos podem acabar sendo eu depois de outra atualização.