Come posso modificare il volume in incrementi più piccoli?

50

Quando premo i tasti volume su / giù sulla tastiera, il volume cambia troppo. Come posso ridurre la dimensione del passo in modo da avere un controllo più preciso?

    
posta ændrük 31.10.2010 - 05:24

9 risposte

11

11.10 / 12.04

Da questo rapporto bug appare il passo del volume la chiave è scomparsa in 11.10 e non è (ancora) riapparsa.

Pertanto, non è possibile apportare una semplice modifica alla configurazione che è possibile apportare per ridurre il passaggio del volume.

Il post # 18 nel link offre una soluzione interessante che comporta l'utilizzo della capacità di incremento e decremento di alsamixer insieme all'invio di notifiche al desktop.

Tuttavia non ho potuto farlo funzionare - quindi la mia opinione sulla soluzione si basa su quel post.

Con questa soluzione, il passaggio del volume predefinito verrà ridotto a due punti percentuali.

Come

Installa il pacchetto xbindkeys (utilizzando Synaptic o con sudo apt-get install xbindkeys ).

Usando il tuo editor di testo preferito, crea un file nella tua cartella home chiamata .volumeHack.sh e copia e incolla il contenuto seguente in quel file, cioè

gedit ~/.volumeHack.sh

Esegui chmod a+x .volumeHack.sh per renderlo eseguibile.

Quindi modifica il file ~/.xbindkeysrc e copia & amp; incolla il testo qui sotto in fondo a questo file. cioè.

gedit ~/.xbindkeysrc

Esci e accedi

.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"
    
risposta data fossfreedom 09.04.2012 - 23:18
16

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

Finalmente ho una soluzione adeguata per gli utenti di Trusty, Vivid, Wily, Xenial, Yakkety e Zesty. Piuttosto che usare un gruppo di hack o uno script, ho deciso di risolvere il problema nel codice sorgente. Ho applicato questa patch a gnome-settings-daemon e unity-settings-daemon (alcunepiccolemodifichesonostateapportateallapatch).

HocaricatoipacchettisuunPPA:

%Bl0ck_qu0te%

DopoaveraggiuntoilPPA,esegui:

sudoapt-getupdatesudoapt-getupgrade

Sarànecessarioriavviarealterminedell'installazione.Unavoltacheipacchettisonostatiaggiornati,puoiusare il comando dconf per modificare l'incremento del volume:

dconf write /org/gnome/settings-daemon/plugins/sound/volume-step 2

(Il valore predefinito è 6.)

Ora quando premi i tasti del volume, il volume cambia in incrementi di 2:

    
risposta data Nathan Osman 01.12.2015 - 21:09
11

10.04 / 10.10 / 11.04

Ho appena scoperto che gconf-editor ha un'impostazione per "Passaggio del volume come percentuale del volume":

/apps/gnome_settings_daemon/volume_step

Molto più elegante e funziona con le notifiche del volume OSD.

    
risposta data ændrük 18.02.2011 - 20:39
10

Questa semplice soluzione funziona per (almeno) 12.04 e non richiede CCSM.

Non avrai azioni sulla barra del volume su schermo quando usi le scorciatoie da tastiera, ma avrai comunque il controllo del volume a grana fine come desideri.

  1. Impostazioni di sistema & gt; Tastiera & gt; Scheda "Scorciatoie" & gt; Categoria "Suono e media"

  2. Disabilita le scorciatoie esistenti "Volume giù" e "Volume su". Per fare ciò, fai clic su ciascun clic per selezionarlo e quindi premi Backspace per eliminare qualsiasi combinazione di tasti associata.

  3. Ora seleziona la categoria "Scorciatoie personalizzate" e fai clic sull'icona "+" per creare due nuove scorciatoie come segue:

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

    (Sperimenta le percentuali. Se devi andare estremamente bene, ometti il segno% e userà una scala 0-255 anziché percentuale).

  4. Ora assegna ognuno dei tuoi nuovi collegamenti a una combinazione di tasti o tasti: seleziona un collegamento e digita il tasto o i tasti desiderati sulla tastiera.

Dopodiché, quando si utilizzano i controlli del volume della tastiera, è necessario disporre degli incrementi di volume specificati. Puoi sempre tornare al comportamento originale disattivando le scorciatoie personalizzate e riattivando quelle premade nella categoria "Suoni e contenuti multimediali".

    
risposta data cdaddr 11.11.2012 - 20:41
5

Puoi farlo con CompizConfig Settings Manager. Usa il comando %codice% se non l'hai già installato.

Ora apri Gestione impostazioni CompizConfig e vai a Comandi nella sezione Generali . Seleziona la casella di controllo Attiva comandi a destra. Nella scheda Comandi , inserisci i seguenti due comandi separatamente come due comandi:

sudo apt-get install compizconfig-settings-manager

amixer set Master 5%+ -q

Assegna due scorciatoie da tastiera per i comandi nella scheda Associazioni chiave . Io uso la combinazione Super + [e Super +]. Ora chiudi il Gestore impostazioni di CompizConfig e questo dovrebbe funzionare.

Non sono sicuro che tu possa comunque assegnare i comandi ai controller del volume integrati nel computer.

    
risposta data thameera 31.10.2010 - 13:15
4

Vale la pena notare che su Ubuntu 17.10 esiste già (anche se un po 'contorto) tipo di supporto per questo. Premi Maiusc + XF86AudioRaiseVolume (o XF86AudioLowerVolume ) per modificare il volume con una dimensione di passo inferiore.

    
risposta data Nonny Moose 04.02.2018 - 23:16
3

12.04 (e possibilmente 11.10)

Se si desidera controllare direttamente il volume di pulseaudio anziché utilizzare la rotta ALSA, è possibile utilizzare il seguente script. Anche se dovrebbe essere possibile controllare il volume tramite DBUS come descritto in questa risposta StackOverflow , tuttavia non sono riuscito a trovare un modo per questo lavoro su Ubuntu 12.04.

Come detto nello script stesso, utilizza questa risposta StackOverflow su come modificare a livello di programmazione il volume in Ubuntu e espande l'idea in uno script che accetta il cambiamento del volume come argomento della riga di comando e mostra anche una notifica OSD. Ho provato a modellarlo il più fedelmente possibile al comportamento predefinito di Ubuntu (12.04).

Lo script prende i cambiamenti di volume come numero assoluto o relativo o valore percentuale. Quindi, ad esempio:

  • pavol.sh 2000 imposta il volume su 2000,
  • pavol.sh 30% imposta il volume al 30 percento,
  • pavol.sh +1000 aumenta il volume di 1000 e
  • pavol.sh -5% diminuisce il volume del 5 percento.

È anche abbastanza genericamente commentato nella speranza che sia utile per ulteriori modifiche.

HowTo

Usa il tuo editor di testo preferito per creare un file nella tua cartella Inizio (o in qualsiasi altro luogo - ricorda solo il percorso) chiamato pavol.sh e copia e incolla il contenuto qui sotto in quel file, cioè

gedit ~/pavol.sh

Esegui chmod a+x ~/pavol.sh per renderlo eseguibile.

Quindi apri Sytem Settings , vai alle impostazioni Keyboard e passa alla scheda Shortcuts . Qui fai clic su Custom Shortcuts e crea due nuove scorciatoie da tastiera con il pulsante più.

Assegna a ognuno un nome e come comando inserisci qualcosa di simile: /home/username/pavol.sh "+3%" È importante inserire il percorso completo dello script pavol.sh (a meno che lo script non si trovi in una cartella inclusa nella variabile d'ambiente PATH) . Utilizza anche i segni di virgoletta "" attorno al valore del volume o la scorciatoia da tastiera non funzionerà.

Dopo questo clic sul lato destro di ogni voce per impostare una combinazione di tasti o un tasto multimediale. Se la combinazione o la chiave desiderata è già assegnata a un'altra scorciatoia, il programma ti chiederà se desideri riassegnarlo.

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
    
risposta data Kuro 24.08.2012 - 00:54
2

Kubuntu 17.04

Modifica il file main.xml trovato in genere su: /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/config/main.xml come utente root.

Cerca la voce volumeStep:

<entry name="volumeStep" type="Int">
  <default>2</default>
</entry>

e modifica la percentuale per passaggio in base a ciò che desideri. Io uso il 2% come puoi vedere.

Come scritto su Kubuntu 16.04, per far ciò avrà bisogno di riavviare Plasma:

killall plasmashell #to stop it
kstart plasmashell #to restart it
    
risposta data Bas 07.08.2017 - 16:41
0

Kubuntu 16.04

Ho aggiornato dalla 14.04, che aveva un livello di volume principale, nonché le singole sorgenti di input e sorgenti di output, e un incremento / decremento del 3% (che successivamente è cambiato al 5%). Sono riuscito a mantenere il passo del 2% e del 3% circa semplicemente regolando i livelli del volume della sorgente di uscita per compensare i passaggi del volume principale.

Quindi, naturalmente, mi sono un po 'annoiato quando 16.04 ha aumentato questo valore al 6% e rimosso il controllo del volume principale, invece i pulsanti del volume controllano entrambe le sorgenti di output.

La precedente fix per Ubuntu 16.04 non funziona con l'interfaccia di Plasma 5 usata su KDE5, quindi non funzionerà con Kubuntu 16.04 - Ho provato, e non funziona.

Quindi, ho eseguito un controllo rapido online e il processo richiede la modifica manuale di un file, ma è abbastanza semplice.

Modifica il file ListItemBase.qml trovato in /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/ListItemBase.qml come root.

Ci sono un paio di righe all'interno delle funzioni increaseVolume e decreaseVolume che definiscono il passo dividendo il volume massimo di 15. Assomigliano a:

var step = slider.maximumValue / 15;

Più alto è il numero, più piccoli sono i passaggi. Se questo fosse 1, il volume è 0% o 100%, ma se questo fosse 100, il volume salirà in passi dell'1%.

Personalmente, miravo al 2%, quindi ho cambiato entrambe le righe in

var step = slider.maximumValue / 50;

Il credito va a questo Reddit: link

Tuttavia, dovrai riavviare Plasma perché ciò abbia effetto:

killall plasmashell #to stop it
kstart plasmashell #to restart it

Speriamo che questo possa aiutare qualcuno, o forse addirittura portare qualcuno a presentare un cambiamento in Plasma per rendere questa configurazione guidata ... entrambi potrebbero finire per essere io dopo un altro aggiornamento.

    
risposta data SEoF 17.11.2016 - 12:50

Leggi altre domande sui tag