Risposte:
Da questo bug report sembra che la chiave del passo del volume sia scomparsa in 11.10 e non sia (ancora) ricomparsa.
Pertanto, non è possibile apportare una semplice modifica alla configurazione per ridurre il volume.
Il post n. 18 nel collegamento offre un'interessante soluzione che prevede l'utilizzo della funzionalità di alsamixer
incremento e decremento insieme all'invio di notifiche sul desktop.
Tuttavia non sono riuscito a farlo funzionare, quindi la mia opinione sulla soluzione si basa su quel post.
Con questa soluzione, il passaggio del volume predefinito verrà ridotto a passi del due percento.
Installa il xbindkeys
pacchetto (usando Synaptic o con sudo apt-get install xbindkeys
).
Usando il tuo editor di testo preferito, crea un file nella tua cartella home chiamato .volumeHack.sh
e copia e incolla il contenuto qui sotto in quel file
gedit ~/.volumeHack.sh
Esegui chmod a+x .volumeHack.sh
per renderlo eseguibile.
Quindi modifica il file ~/.xbindkeysrc
e copia e incolla il testo qui sotto in fondo a questo file. vale a dire
gedit ~/.xbindkeysrc
Esci e accedi
# 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 ho una soluzione adeguata per gli utenti di Trusty, Vivid, Wily, Xenial, Yakkety e Zesty. Piuttosto che usare un mucchio 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 (alla patch sono state apportate alcune banali modifiche).
Ho caricato i pacchetti su un PPA:
ppa: george-edison55 / gnome-settings-daemon (fare clic qui per istruzioni sull'uso dei PPA. )
Dopo aver aggiunto il PPA, esegui:
sudo apt-get update
sudo apt-get upgrade
Sarà necessario riavviare al termine dell'installazione. Dopo aver aggiornato i pacchetti, è possibile utilizzare il dconf
comando per modificare l'incremento del volume:
dconf write /org/gnome/settings-daemon/plugins/sound/volume-step 2
(Il valore predefinito è 6.)
Ora quando si premono i tasti del volume, il volume cambierà con incrementi di 2:
mate-settings-daemon
? Sarei eternamente grato :-)
dconf write /org/mate/settings-daemon/plugins/media-keys/volume-step <NUM>
dov'è <NUM>
il nuovo valore. Ho appena provato questo il MATE 16.04.
Quando si utilizzano le scorciatoie da tastiera, non si avrà un'azione sulla barra del volume sullo schermo, ma si avrà comunque un controllo del volume a grana fine come si desidera.
Impostazioni di sistema> Tastiera> scheda "Scorciatoie"> categoria "Audio e contenuti multimediali"
Disabilita le scorciatoie "Volume giù" e "Volume su" esistenti. Per fare ciò, su ciascuno di essi fare clic per selezionarlo e quindi premere Backspace per cancellare qualsiasi combinazione di tasti ad esso associata.
Ora seleziona la categoria "Collegamenti personalizzati" e fai clic sull'icona "+" per creare due nuovi collegamenti come segue:
Nome: Volume Up
Comando: set amixer Master 3% +
Nome: Volume Down
Comando: set amixer Master 3% -
(Sperimenta con le percentuali. Se hai bisogno di andare molto bene, ometti il segno% e utilizzerà una scala 0-255 anziché la percentuale).
Ora assegna a ciascuna delle tue nuove scorciatoie un tasto o una combinazione di tasti: seleziona un tasto di scelta rapida e digita il tasto oi tasti desiderati sulla tastiera.
Dopodiché, quando usi i controlli del volume della tastiera, dovresti avere gli incrementi di volume che hai specificato. Puoi sempre tornare al comportamento originale disabilitando le scorciatoie personalizzate e riattivando quelle predefinite nella categoria "Audio e media".
Vale la pena notare che su Ubuntu 17.10, esiste già (anche se un po 'contorto) tipo di supporto per questo. Premere Shift+ XF86AudioRaiseVolume(o XF86AudioLowerVolume) per modificare il volume con un passo più piccolo.
Puoi farlo con CompizConfig Settings Manager. Utilizzare il comando
sudo apt-get install compizconfig-settings-manager
se non lo si è già installato.
Ora apri Gestione impostazioni CompizConfig e vai a Comandi nella sezione Generale . Seleziona la casella di controllo Abilita comandi a destra. Nella scheda Comandi , immettere i seguenti due comandi separatamente come due comandi:
amixer set Master 5%+ -q
amixer set Master 5%- -q
Assegna due scorciatoie da tastiera per i comandi nella scheda Associazioni tasti . Uso la combinazione Super + [e Super +]. Ora chiudi CompizConfig Settings Manager e questo dovrebbe funzionare.
Non sono sicuro di poter assegnare i comandi ai controller di volume integrati nel computer.
amixer
comando è meraviglioso, ma non è necessario per istruire i lettori a installare CompizConfig Settings Manager.
Se si desidera controllare direttamente il volume di pulseaudio piuttosto che seguire il percorso ALSA, è possibile utilizzare il seguente script. Mentre dovrebbe anche essere possibile controllare il volume tramite DBUS come dettagliato in questa risposta StackOverflow , tuttavia non sono riuscito a trovare un modo per farlo funzionare in Ubuntu 12.04.
Come si dice nello script stesso, utilizza questa risposta StackOverflow su come modificare a livello di programmazione il volume in Ubuntu ed espande l'idea in uno script che accetta la modifica del volume come argomento della riga di comando e mostra anche una notifica OSD. Ho provato a modellarlo il più vicino possibile al comportamento predefinito di Ubuntu (12.04).
Lo script accetta le modifiche del volume come numero assoluto o relativo o valore percentuale. Quindi per 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 epavol.sh -5%
riduce il volume del 5 percento.È anche abbastanza liberamente commentato nella speranza che sia utile per ulteriori modifiche.
Usa il tuo editor di testo preferito per creare un file nella tua cartella home (o in qualsiasi altro luogo - ricorda il percorso) chiamato pavol.sh
e copia e incolla i contenuti sottostanti in quel file, ad es.
gedit ~/pavol.sh
Esegui chmod a+x ~/pavol.sh
per renderlo eseguibile.
Quindi apri Sytem Settings
, vai alle Keyboard
impostazioni e passa alla Shortcuts
scheda. Fai clic su Custom Shortcuts
e crea due nuove scorciatoie da tastiera con il pulsante più.
Dai a ciascuno un nome e come comando inserisci qualcosa del genere: /home/username/pavol.sh "+3%"
è importante inserire il percorso completo dello pavol.sh
script (a meno che lo script non si trovi in una cartella inclusa nella variabile di ambiente PATH). Usa anche le virgolette ""
intorno al valore del volume o la scorciatoia da tastiera non funzionerà.
Successivamente, fai clic sul lato destro di ciascuna voce per impostare una combinazione di tasti o un tasto multimediale. Se la combinazione o il tasto desiderato è già assegnato a un altro collegamento, il programma chiederà se si desidera riassegnarlo.
#!/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
prima "Volume"
sulla riga con il comando di notifica-invio (dovrebbe essere il numero di riga 130). Forse aiuta.
Modifica il file che main.xml
si trova in genere su:
/usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/config/main.xml
come 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. Uso il 2% come puoi vedere.
Come scritto in Kubuntu 16.04, dovrai riavviare Plasma affinché questo abbia effetto:
killall plasmashell #to stop it
kstart plasmashell #to restart it
Ho eseguito l'aggiornamento da 14.04, che aveva un livello di volume principale, nonché le singole fonti di input e di output e un passaggio di incremento / decremento del 3% (che in seguito è passato al 5%). Sono riuscito a mantenerlo a circa il 2% e il 3% di passi semplicemente regolando i livelli del volume della sorgente di uscita per compensare i passi del volume principale.
Quindi, naturalmente, mi sono un po 'seccato quando il 16.04 ha aumentato questo valore al 6% e rimosso il controllo del volume principale, invece i pulsanti del volume controllano entrambe le fonti di uscita.
La correzione precedente per Ubuntu 16.04 non funziona con l'interfaccia Plasma 5 usata su KDE5, quindi non funzionerà per Kubuntu 16.04 - Ho provato e non funziona.
Quindi, ho fatto un rapido controllo online e il processo richiede la modifica manuale di un file, ma è abbastanza semplice.
Modifica il file che ListItemBase.qml
si trova in genere /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 per 15. Sembrano:
var step = slider.maximumValue / 15;
Più alto è il numero, minori sono i passaggi. Se fosse 1, il volume è 0% o 100%, ma se fosse 100, il volume aumenterebbe con incrementi dell'1%.
Personalmente, ho puntato al 2%, quindi ho cambiato entrambe queste linee in
var step = slider.maximumValue / 50;
Il merito va a questo Reddit: https://www.reddit.com/r/kde/comments/3t1xr0/how_to_change_the_volume_increment_step_size_for/
Tuttavia, è necessario riavviare Plasma affinché questo abbia effetto:
killall plasmashell #to stop it
kstart plasmashell #to restart it
Spero che questo possa aiutare qualcuno, o forse anche portare qualcuno a presentare una modifica al plasma per rendere questa configurazione guidata ... entrambi potrebbero finire per essere me dopo un altro aggiornamento.