Antworten:
Aus diesem Bug-Report geht hervor, dass der Volume-Step-Key in 11.10 verschwunden ist und (noch) nicht wieder aufgetaucht ist.
Daher gibt es keine einfache Konfigurationsänderung, die Sie vornehmen können, um den Lautstärkeschritt zu reduzieren.
Beitrag Nr. 18 im Link bietet eine interessante Problemumgehung, bei der die alsamixer
Inkrementierungs- und Dekrementierungsfunktion zusammen mit dem Senden von Benachrichtigungen an den Desktop verwendet wird.
Ich konnte es jedoch nicht zum Laufen bringen - daher basiert meine Meinung zur Lösung auf diesem Beitrag.
Mit dieser Lösung wird der Standardlautstärkeschritt auf zwei Prozent reduziert.
Installieren Sie das xbindkeys
Paket (mit Synaptic oder mit sudo apt-get install xbindkeys
).
Erstellen Sie mit Ihrem bevorzugten Texteditor eine Datei in Ihrem Home-Ordner mit dem Namen .volumeHack.sh
und kopieren Sie den folgenden Inhalt und fügen Sie ihn in diese Datei ein
gedit ~/.volumeHack.sh
Führen Sie es aus chmod a+x .volumeHack.sh
, um es ausführbar zu machen.
Bearbeiten Sie dann die Datei ~/.xbindkeysrc
und kopieren Sie den Text unten in diese Datei. dh
gedit ~/.xbindkeysrc
Abmelden und einloggen
# 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"
Endlich habe ich eine richtige Lösung für Benutzer von Trusty, Vivid, Wily, Xenial, Yakkety und Zesty. Anstatt ein paar Hacks oder ein Skript zu verwenden, habe ich beschlossen, das Problem im Quellcode zu beheben. Ich habe diesen Patch auf gnome-settings-daemon und unity-settings-daemon angewendet (einige geringfügige Änderungen wurden am Patch vorgenommen).
Ich habe die Pakete auf eine PPA hochgeladen:
ppa: george-edison55 / gnome-settings-daemon ( Klicken Sie hier, um Anweisungen zur Verwendung von PPAs zu erhalten. )
Nachdem Sie die PPA hinzugefügt haben, führen Sie Folgendes aus:
sudo apt-get update
sudo apt-get upgrade
Sie müssen nach Abschluss der Installation neu starten. Nach dem Upgrade der Pakete können Sie mit dem dconf
Befehl das Volumeninkrement ändern:
dconf write /org/gnome/settings-daemon/plugins/sound/volume-step 2
(Der Standardwert ist 6.)
Wenn Sie nun die Lautstärketasten drücken, ändert sich die Lautstärke in Schritten von 2:
mate-settings-daemon
? Ich wäre auf ewig dankbar :-)
dconf write /org/mate/settings-daemon/plugins/media-keys/volume-step <NUM>
Wo <NUM>
ist der neue Wert ? Ich habe das gerade auf MATE 16.04 getestet.
Wenn Sie die Tastaturkürzel verwenden, wird die Lautstärkeleiste nicht auf dem Bildschirm angezeigt, Sie können jedoch die Lautstärke nach Belieben fein einstellen.
Systemeinstellungen> Tastatur> Registerkarte "Verknüpfungen"> Kategorie "Sound und Medien"
Deaktivieren Sie die vorhandenen Verknüpfungen "Lautstärke verringern" und "Lautstärke erhöhen". Wählen Sie dies bei jedem Klick aus und drücken Sie die Rücktaste, um die zugehörige Tastenkombination zu löschen.
Wählen Sie nun die Kategorie "Benutzerdefinierte Verknüpfungen" und klicken Sie auf das Symbol "+", um zwei neue Verknüpfungen wie folgt zu erstellen:
Name: Volume Up
Befehl: amixer set Master 3% +
Name: Volume Down
Befehl: amixer set Master 3% -
(Experimentieren Sie mit den Prozentsätzen. Wenn Sie extrem gute Ergebnisse erzielen möchten, lassen Sie das% -Zeichen weg, und es wird eine Skala von 0 bis 255 anstelle von Prozent verwendet.)
Weisen Sie nun jede Ihrer neuen Verknüpfungen einer Taste oder Tastenkombination zu: Wählen Sie eine Verknüpfung aus und geben Sie die gewünschte (n) Taste (n) auf Ihrer Tastatur ein.
Wenn Sie danach die Lautstärkeregler Ihrer Tastatur verwenden, sollten Sie die von Ihnen angegebenen Lautstärkeschritte verwenden. Sie können jederzeit zum ursprünglichen Verhalten zurückkehren, indem Sie Ihre benutzerdefinierten Verknüpfungen deaktivieren und die vorgefertigten Verknüpfungen in der Kategorie "Sound and Media" wieder aktivieren.
Es ist erwähnenswert, dass es unter Ubuntu 17.10 bereits eine (wenn auch etwas verschlungene) Art von Unterstützung dafür gibt. Drücken Sie Shift+ XF86AudioRaiseVolume(oder XF86AudioLowerVolume), um die Lautstärke mit einer kleineren Schrittgröße zu ändern.
Sie können dies mit CompizConfig Settings Manager tun. Verwenden Sie den Befehl,
sudo apt-get install compizconfig-settings-manager
wenn Sie ihn noch nicht installiert haben.
Öffnen Sie nun den CompizConfig Settings Manager und gehen Sie zu Commands im Bereich General . Aktivieren Sie das Kontrollkästchen Befehle aktivieren auf der rechten Seite. Im Commands Register geben Sie die folgenden zwei Befehle separat als zwei Befehle:
amixer set Master 5%+ -q
amixer set Master 5%- -q
Ordnen Sie zwei Tastenkombinationen für die Befehle in der Tasturbefehle Registerkarte. Ich benutze die Super + [und Super +] Kombination. Schließen Sie nun den CompizConfig Settings Manager und das sollte funktionieren.
Ich bin mir nicht sicher, ob Sie die Befehle den eingebauten Lautstärkereglern des Computers zuordnen können.
amixer
Befehl ist wunderbar, aber Sie müssen die Leser nicht anweisen, CompizConfig Settings Manager zu installieren.
Wenn Sie die pulseaudio-Lautstärke direkt steuern möchten, anstatt die ALSA-Route zu verwenden, können Sie das folgende Skript verwenden. Es sollte zwar auch möglich sein, die Lautstärke über DBUS zu steuern, wie in dieser Stackoverflow-Antwort beschrieben. In Ubuntu 12.04 konnte ich jedoch keine Möglichkeit finden, diese Funktion zu nutzen.
Wie im Skript selbst gesagt, verwendet es diese Stackoverflow-Antwort zum programmgesteuerten Ändern des Volumes in Ubuntu und erweitert die Idee zu einem Skript, das die Volumenänderung als Befehlszeilenargument verwendet und auch eine OSD-Benachrichtigung anzeigt. Ich habe versucht, es so gut wie möglich an das Standardverhalten von Ubuntu (12.04) anzupassen.
Das Skript nimmt Volumenänderungen als absolute oder relative Zahl oder als Prozentwert entgegen. Also zum Beispiel:
pavol.sh 2000
stellt die Lautstärke auf 2000 ein,pavol.sh 30%
setzt die Lautstärke auf 30 Prozent,pavol.sh +1000
erhöht die Lautstärke um 1000 undpavol.sh -5%
verringert die Lautstärke um 5 Prozent.Es wird auch ziemlich großzügig in der Hoffnung kommentiert, dass es für weitere Optimierungen nützlich ist.
Verwenden Sie Ihren bevorzugten Texteditor, um eine Datei in Ihrem Home-Ordner (oder an einem anderen Ort - merken Sie sich den Pfad) zu erstellen, pavol.sh
kopieren Sie den folgenden Inhalt und fügen Sie ihn in diese Datei ein, d. H
gedit ~/pavol.sh
Führen Sie es aus chmod a+x ~/pavol.sh
, um es ausführbar zu machen.
Öffnen Sie dann Sytem Settings
, gehen Sie zu den Keyboard
Einstellungen und wechseln Sie zur Shortcuts
Registerkarte. Klicken Sie dort auf Custom Shortcuts
und erstellen Sie zwei neue Tastaturkürzel mit der Plus-Taste.
Geben Sie jedem einen Namen und als Befehl Folgendes ein: /home/username/pavol.sh "+3%"
Es ist wichtig, den vollständigen Pfad zum pavol.sh
Skript einzugeben (es sei denn, das Skript befindet sich in einem Ordner, der in der Umgebungsvariablen PATH enthalten ist). Verwenden Sie auch Anführungszeichen ""
um den Lautstärkewert oder die Tastenkombination funktioniert nicht.
Klicken Sie anschließend auf die rechte Seite jedes Eintrags, um eine Tastenkombination oder eine Multimediataste festzulegen. Wenn die gewünschte Kombination oder Taste bereits einer anderen Verknüpfung zugewiesen ist, werden Sie gefragt, ob Sie sie neu zuweisen möchten.
#!/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
vorher "Volume"
in der Zeile den Befehl notify-send ein (sollte Zeilennummer 130 sein). Vielleicht hilft es.
Bearbeiten Sie die Datei, die main.xml
normalerweise unter:
/usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/config/main.xml
als root gefunden wird.
Suchen Sie nach dem Eintrag volumeStep:
<entry name="volumeStep" type="Int">
<default>2</default>
</entry>
und ändern Sie den Prozentsatz pro Schritt nach Belieben. Ich verwende 2%, wie Sie sehen können.
Wie unter Kubuntu 16.04 beschrieben, müssen Sie Plasma neu starten, damit dies wirksam wird:
killall plasmashell #to stop it
kstart plasmashell #to restart it
Ich habe ein Upgrade von 14.04 durchgeführt, das einen Master-Lautstärkepegel sowie die einzelnen Eingangs- und Ausgangsquellen hatte und einen 3% -Inkrementierungs- / Dekrementierungsschritt (der sich später in 5% änderte). Ich habe es geschafft, es auf etwa 2% und 3% Schritten zu halten, indem ich einfach die Ausgangsquellenlautstärkepegel anpasste, um die Hauptlautstärkeschritte zu kompensieren.
Ich ärgerte mich natürlich ein wenig, als 16.04 diesen Wert auf 6% erhöhte und den Hauptlautstärkeregler entfernte, stattdessen kontrollierten die Lautstärketasten beide Ausgabequellen.
Das obige Update für Ubuntu 16.04 funktioniert nicht mit der Plasma 5-Schnittstelle, die unter KDE5 verwendet wird. Daher funktioniert es nicht mit Kubuntu 16.04 - ich habe es versucht und es funktioniert nicht.
Also habe ich eine schnelle Online-Überprüfung durchgeführt und der Vorgang erfordert das manuelle Ändern einer Datei, ist aber ziemlich einfach.
Bearbeiten Sie die Datei, die Sie ListItemBase.qml
normalerweise /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/ListItemBase.qml
als root finden.
Es gibt ein paar Zeilen innerhalb von Funktionen increaseVolume
und decreaseVolume
das den Schritt definieren , indem die maximale Lautstärke von 15. Dividieren Sie wie folgt aussehen:
var step = slider.maximumValue / 15;
Je höher die Zahl, desto kleiner die Schritte. Wenn dies 1 wäre, ist das Volumen entweder 0% oder 100%, aber wenn dies 100 wäre, würde das Volumen in Schritten von 1% steigen.
Persönlich habe ich 2% angestrebt, also habe ich beide Zeilen in geändert
var step = slider.maximumValue / 50;
Das Guthaben wird diesem Reddit gutgeschrieben: https://www.reddit.com/r/kde/comments/3t1xr0/how_to_change_the_volume_increment_step_size_for/
Sie müssen Plasma jedoch neu starten, damit dies wirksam wird:
killall plasmashell #to stop it
kstart plasmashell #to restart it
Hoffentlich hilft dies jemandem, oder es kann sogar dazu führen, dass jemand eine Änderung in Plasma vornimmt, um diese Konfiguration zu optimieren. Beide sind möglicherweise nach einem weiteren Update ich.