回答:
このバグレポートから、11.10でボリュームステップキーが消え、(まだ)再出現していないようです。
したがって、ボリュームのステップを減らすために行うことができる単純な単純な構成変更はありません。
リンクの投稿#18はalsamixer
、デスクトップへの通知の送信とともにインクリメントおよびデクリメント機能を使用する興味深い回避策を提供します。
しかし、私はそれを機能させることができませんでした-したがって、ソリューションに対する私の見解はその投稿に基づいています。
このソリューションでは、デフォルトのボリュームステップが2パーセントステップに削減されます。
xbindkeys
パッケージをインストールします(Synapticを使用するか、withを使用sudo apt-get install xbindkeys
)。
お気に入りのテキストエディターを使用して、ホームフォルダーにファイルを作成し、.volumeHack.sh
以下の内容をコピーしてそのファイルに貼り付けます。
gedit ~/.volumeHack.sh
実行chmod a+x .volumeHack.sh
して実行可能にします。
次に、ファイル~/.xbindkeysrc
を編集し、このファイルの下部にある以下のテキストをコピーして貼り付けます。すなわち
gedit ~/.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
#!/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"
私はついに、Trusty、Vivid、Wily、Xenial、Yakkety、Zestyユーザー向けの適切なソリューションを手に入れました。大量のハックやスクリプトを使用するのではなく、ソースコードの問題を修正することにしました。このパッチをgnome-settings-daemonおよびunity-settings-daemonに適用しました(パッチにいくつかの些細な変更が加えられました)。
パッケージをPPAにアップロードしました。
ppa:george-edison55 / gnome-settings-daemon(PPAの使用方法については、ここをクリックしてください。)
PPAを追加したら、次を実行します。
sudo apt-get update
sudo apt-get upgrade
インストールが完了したら、再起動する必要があります。パッケージがアップグレードされたら、dconf
コマンドを使用してボリュームの増分を変更できます。
dconf write /org/gnome/settings-daemon/plugins/sound/volume-step 2
(デフォルト値は6です。)
音量キーを押すと、音量が2ずつ変化します。
mate-settings-daemon
か?私は永遠に感謝します:-)
dconf write /org/mate/settings-daemon/plugins/media-keys/volume-step <NUM>
どこに<NUM>
ありますか。これをMATE 16.04でテストしました。
キーボードショートカットを使用する場合、画面上のボリュームバーアクションはありませんが、必要に応じてきめ細かなボリュームコントロールを使用できます。
[システム設定]> [キーボード]> [ショートカット]タブ> [サウンドとメディア]カテゴリ
既存の「音量を下げる」および「音量を上げる」ショートカットを無効にします。これを行うには、クリックするたびに選択し、Backspaceキーを押して、関連付けられているキーの組み合わせをクリアします。
「カスタムショートカット」カテゴリを選択し、「+」アイコンをクリックして、次の2つの新しいショートカットを作成します。
名前:ボリュームアップ
コマンド:amixer set Master 3%+
名前:ボリュームダウン
コマンド:amixer set Master 3%-
(パーセンテージで実験します。非常にうまくいく必要がある場合は、%記号を省略し、パーセントではなく0〜255のスケールを使用します)。
次に、新しいショートカットをそれぞれキーまたはキーコンボに割り当てます。ショートカットを選択し、キーボードで目的のキーを入力します。
この後、キーボードのボリュームコントロールを使用するときは、指定した音量増分が必要です。カスタムショートカットを無効にして、「サウンドとメディア」カテゴリの既製のショートカットを再度有効にすることで、いつでも元の動作に戻すことができます。
Ubuntu 17.10では、すでに(多少複雑ではありますが)この種のサポートが行われていることに注意してください。小さいステップサイズで音量を変更するには、Shift+ XF86AudioRaiseVolume(またはXF86AudioLowerVolume)を押します。
CompizConfig Settings Managerでこれを行うことができます。sudo apt-get install compizconfig-settings-manager
まだインストールしていない場合は、コマンドを使用し
ます。
今CompizConfig設定マネージャを開いて、に行くコマンドで一般的なセクション。右側の[ コマンドを有効にする]チェックボックスをオンにします。ではコマンドタブ、二つのコマンドとして別途以下の2つのコマンドを入力します。
amixer set Master 5%+ -q
amixer set Master 5%- -q
[ キーバインド ]タブのコマンドに2つのキーボードショートカットを割り当てます。Super + [とSuper +]の組み合わせを使用します。CompizConfig Settings Managerを閉じると、これが機能するはずです。
ただし、コマンドをコンピューターの組み込みボリュームコントローラーに割り当てることができるかどうかはわかりません。
amixer
コマンドは素晴らしいですが、読者にCompizConfig Settings Managerをインストールするように指示する必要はありません。
ALSAルートに行くのではなく、pulseaudioの音量を直接制御する場合は、次のスクリプトを使用できます。このStackoverflowの回答で詳述されているように、DBUSを介してボリュームを制御することも可能ですが、Ubuntu 12.04でこの機能を実現する方法は見つかりませんでした。
スクリプト自体で述べられているように、Ubuntuでプログラムでボリュームを変更する方法についてこのStackoverflowの回答を使用し、コマンドライン引数としてボリュームの変更を取り、OSD通知も表示するスクリプトにアイデアを拡張します。デフォルトのUbuntu(12.04)の動作にできるだけ近づけてモデル化しようとしました。
スクリプトは、ボリュームの変更を絶対値または相対値、またはパーセント値として受け取ります。したがって、たとえば:
pavol.sh 2000
ボリュームを2000に設定し、pavol.sh 30%
ボリュームを30%に設定します。pavol.sh +1000
ボリュームを1000増やし、pavol.sh -5%
ボリュームを5%減らします。また、さらに微調整するのに役立つことを期待して、かなり寛大にコメントされています。
お気に入りのテキストエディターを使用して、ホームフォルダー(または実際に他の場所-パスを覚えておいてください)にファイルを作成し、pavol.sh
以下の内容をコピーしてそのファイルに貼り付けます。
gedit ~/pavol.sh
実行chmod a+x ~/pavol.sh
して実行可能にします。
次に、を開きSytem Settings
、Keyboard
設定に移動してShortcuts
タブに切り替えます。そこをクリックしCustom Shortcuts
て、プラスボタンで2つの新しいキーボードショートカットを作成します。
それぞれに名前を付けて、コマンドとして次のよう/home/username/pavol.sh "+3%"
に入力しpavol.sh
ます。スクリプトへのフルパスを入力することが重要です(スクリプトがPATH環境変数に含まれるフォルダーにない場合)。また""
、ボリューム値を引用符で囲むと、キーボードショートカットが機能しなくなります。
その後、各エントリの右側をクリックして、キーの組み合わせまたはマルチメディアキーを設定します。目的の組み合わせまたはキーが既に別のショートカットに割り当てられている場合、プログラムはそれを再割り当てするかどうかを尋ねます。
#!/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
前"Volume"
に追加するだけです(行番号130でなければなりません)。たぶんそれが役立ちます。
main.xml
通常
、次の場所にあるファイル/usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/config/main.xml
をルートとして編集します。
volumeStepエントリを探します。
<entry name="volumeStep" type="Int">
<default>2</default>
</entry>
ステップごとの割合を必要なものに変更します。ご覧のとおり、2%を使用しています。
Kubuntu 16.04で書かれているように、これを有効にするにはプラズマを再起動する必要があります。
killall plasmashell #to stop it
kstart plasmashell #to restart it
マスターボリュームレベル、個々の入力ソースと出力ソース、および3%の増分/減分ステップ(後で5%に変更)を備えた14.04からアップグレードしました。マスターボリュームのステップを補正するために出力ソースのボリュームレベルを調整するだけで、約2%と3%のステップに保つことができました。
当然、16.04でこれを6%に上げ、マスターボリュームコントロールを削除すると、少しイライラし、代わりにボリュームボタンが両方の出力ソースをコントロールしました。
上記のUbuntu 16.04の修正は、KDE5で使用されるPlasma 5インターフェイスでは機能しないため、Kubuntu 16.04では機能しません-試しましたが、機能しません。
そのため、オンラインで簡単に確認しました。このプロセスではファイルを手動で変更する必要がありますが、それは非常に簡単です。
ListItemBase.qml
通常/usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/ListItemBase.qml
ルートにあるファイルを編集します。
そこの関数内の行のカップルだincreaseVolume
とdecreaseVolume
、それは彼らがどのように見える15による最大のボリュームを分割することにより、ステップを定義します。
var step = slider.maximumValue / 15;
数値が大きいほど、ステップは小さくなります。これが1の場合、ボリュームは0%または100%のいずれかですが、100の場合、ボリュームは1%ずつ増加します。
個人的には2%を目指していたので、これらの行を両方とも
var step = slider.maximumValue / 50;
クレジットはこのRedditに送られます:https : //www.reddit.com/r/kde/comments/3t1xr0/how_to_change_the_volume_increment_step_size_for/
ただし、これを有効にするには、Plasmaを再起動する必要があります。
killall plasmashell #to stop it
kstart plasmashell #to restart it
うまくいけば、これが誰かを助けたり、誰かがこの設定を駆動するためにPlasmaの変更を提出することにつながる可能性があります...両方が別の更新後に私になる可能性があります。