Como posso alterar o volume em incrementos menores?

51

Quando pressiono as teclas de volume para cima / baixo no meu teclado, o volume muda muito. Como posso diminuir o tamanho do passo para ter um controle mais preciso?

    
por ændrük 31.10.2010 / 05:24

9 respostas

12

11,10 / 12,04

Deste relatório de erros , aparece o passo do volume chave desapareceu em 11,10 e não (ainda) reapareceu.

Assim, não há uma mudança de configuração simples e direta que você possa fazer para reduzir o volume.

A postagem 18 no link fornece uma solução interessante que envolve o uso do recurso de incremento e decremento alsamixer junto com o envio de notificações para a área de trabalho.

No entanto, eu não consegui fazê-lo funcionar - assim, minha opinião sobre a solução é baseada nesse post.

Com essa solução, a etapa de volume padrão será reduzida para etapas de dois por cento.

Como

Instale o pacote xbindkeys (usando o 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, por exemplo

gedit ~/.volumeHack.sh

Execute chmod a+x .volumeHack.sh para torná-lo executável.

Em seguida, edite o arquivo ~/.xbindkeysrc e copie & cole o texto abaixo na parte inferior deste arquivo. ou seja,

gedit ~/.xbindkeysrc

Logout e login

.xbindkeysrc

# 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

.volumeHack.sh

#!/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"
    
por fossfreedom 09.04.2012 / 23:18
16

Ubuntu 14.04 / 15.04 / 15.10 / 16.04 / 16.10 / 17.04

Eu finalmente tenho uma solução adequada para os usuários do 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 para gnome-settings-daemon e unity-settings-daemon (algumasmodificaçõestriviaisforamfeitasparaopatch).

EnvieiospacotesparaumPPA:

ppa:george-edison55/gnome-settings-daemon Launchpad logo (Click here for instructions on using PPAs.)

Depois de adicionar o PPA, execute:

sudo apt-get update
sudo apt-get upgrade

Você precisará reiniciar após a conclusão da instalação. Uma vez que os pacotes tenham sido atualizados, você pode usar o o comando dconf 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:

    
por Nathan Osman 01.12.2015 / 21:09
11

10,04 / 10,10 / 11,04

Acabei de descobrir que gconf-editor tem uma configuração para "Etapa do volume como porcentagem do volume":

/apps/gnome_settings_daemon/volume_step

Muito mais elegante e funciona com as notificações de volume do OSD.

    
por ændrük 18.02.2011 / 20:39
10

Esta solução fácil funciona para (pelo menos) 12.04 e não requer CCSM.

Você não terá ação de barra de volume na tela quando usar os atalhos de teclado, mas terá o controle de volume mais refinado que desejar.

  1. Configurações do sistema > Teclado > Guia "Atalhos" > Categoria "Som e mídia"

  2. Desative os atalhos existentes "Diminuir volume" e "Aumentar volume". Para fazer isso, em cada um clique para selecioná-lo e, em seguida, pressione Backspace para limpar qualquer combinação de teclas associada a ele.

  3. Agora, selecione a categoria "Atalhos personalizados" e clique no ícone "+" para criar dois novos atalhos da seguinte forma:

    Name: Volume Up
    Command: amixer set Master 3%+
    Name: Volume Down
    Command: amixer set Master 3%-

    (experimente as porcentagens. Se você precisar ir muito bem, omita o sinal% e ele usará uma escala de 0-255 em vez de porcentagem).

  4. Agora, atribua cada um dos seus novos atalhos a uma combinação de tecla ou chave: selecione um atalho e digite a tecla ou as teclas desejadas no teclado.

Depois disso, quando você usar os controles de volume do teclado, deverá ter os incrementos de volume especificados. Você sempre pode voltar ao comportamento original desativando seus atalhos personalizados e reativando os pré-criados na categoria "Som e mídia".

    
por cdaddr 11.11.2012 / 20:41
6

Vale 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.

    
por Nonny Moose 04.02.2018 / 23:16
5

Você pode fazer isso com o Gerenciador de configurações do CompizConfig. Use o comando %código% se você ainda nã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:

sudo apt-get install compizconfig-settings-manager

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.

    
por thameera 31.10.2010 / 13:15
3

12,04 (e possivelmente 11,10)

Se você quiser controlar o volume pulseaudio diretamente, em vez de usar o caminho ALSA, use o seguinte script. Embora também deva ser possível controlar o volume por meio do DBUS, conforme detalhado nesta resposta do Stackoverflow , no entanto, não consegui encontrar uma maneira de fazer isso. este trabalho no Ubuntu 12.04.

Como é dito no próprio script, ele usa essa resposta do Stackoverflow sobre como alterar programaticamente o volume no Ubuntu e expande a ideia em um script que leva a alteração de volume como um argumento de linha de comando e também mostra uma notificação de OSD. Eu tentei modelá-lo o mais próximo possível do comportamento padrão do Ubuntu (12.04).

O script recebe alterações de volume como um número absoluto ou relativo ou um 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 e
  • pavol.sh -5% diminui o volume em 5%.

Também é bastante liberalmente comentado na esperança de que seja útil para ajustes adicionais.

HowTo

Use seu editor de texto favorito para criar um arquivo em sua pasta pessoal (ou em qualquer outro lugar - apenas lembre-se do caminho) chamado pavol.sh e copie e cole o conteúdo abaixo nesse arquivo, por exemplo

gedit ~/pavol.sh

Execute chmod a+x ~/pavol.sh para torná-lo executável.

Em seguida, abra Sytem Settings , vá para as configurações de Keyboard e mude para a guia Shortcuts . Clique em Custom Shortcuts e crie dois novos atalhos de teclado com o botão mais.

Dê a cada um um nome e, como comando, insira algo assim: /home/username/pavol.sh "+3%" É importante inserir o caminho completo para o script pavol.sh (a menos que o script esteja em uma pasta incluída na variável de ambiente PATH) . Use também sinais de citação "" em torno do valor do volume ou o atalho de teclado não funcionará.

Depois disso, clique no lado direito de cada entrada para definir uma combinação de teclas ou uma chave multimídia. Se a combinação ou chave desejada já estiver atribuída a outro atalho, o programa perguntará se você deseja reatribuí-lo.

pavol.sh

#!/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
    
por Kuro 24.08.2012 / 00:54
2

Kubuntu 17.04

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 do 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 escrito no Kubuntu 16.04, você precisará reiniciar o Plasma para que isto tenha efeito:

killall plasmashell #to stop it
kstart plasmashell #to restart it
    
por Bas 07.08.2017 / 16:41
0

Kubuntu 16.04

Eu fiz o upgrade a partir de 14.04, que tinha um nível de volume principal, bem como fontes de entrada individuais e fontes de saída, e uma etapa de incremento / decremento de 3% (que depois mudou para 5%). Consegui mantê-lo 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 esse valor para 6% e removeu 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 do Plasma 5 usada no KDE5, então não funciona no Kubuntu 16.04 - eu tentei, e não funciona.

Então, fiz uma verificação rápida on-line e o processo requer a alteração manual de um arquivo, mas é bastante simples.

Edite o arquivo ListItemBase.qml normalmente encontrado em /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/ListItemBase.qml como root.

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 subiria em 1%.

Pessoalmente, eu apontei para 2%, então mudei essas duas linhas para

var step = slider.maximumValue / 50;

O crédito vai para este Reddit: link

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 tornar essa configuração orientada ... ambos podem acabar sendo eu depois de outra atualização.

    
por SEoF 17.11.2016 / 12:50