如何使音量以较小的增量变化?

ænd*_*rük 59 sound shortcut-keys

当我按键盘上的音量增大/减小键时,音量变化太大。如何使步长更小,以便更好地控制?

Non*_*ose 27

Ubuntu 17.10 及更高版本

值得注意的是,在 Ubuntu 17.10 及更高版本的 GNOME Shell 上,已经(尽管有些复杂)对此提供支持。

Shift+XF86AudioRaiseVolumeShift+ XF86AudioLowerVolume(通常是键盘上专用的音量增大/减小键)以较小的步长更改音量。

在此处输入图片说明

  • 您还可以将键绑定直接分配给“精确”音量调节快捷键(至少在 Gnome 3.30 中有效),但您必须使用 dconf 来执行此操作。例如`dconf write /org/gnome/settings-daemon/plugins/media-keys/volume-down-precise ['<Alt>Page_Down']` 或者你可以直接使用dconf改变音量步长,`dconf写/org/gnome/settings-daemon/plugins/media-keys/volume-step <NUM>` (2认同)

Nat*_*man 18

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

我终于为 Trusty、Vivid、Wily、Xenial、Yakkety 和 Zesty 用户提供了合适的解决方案。我决定解决源代码中的问题,而不是使用一堆技巧或脚本。我将此补丁(现已损坏)应用于gnome-settings-daemon安装 gnome-settings-daemonunity-settings-daemon安装 unity-settings-daemon (对补丁进行了一些微不足道的修改)。

我已将软件包上传到 PPA:

ppa:george-edison55/gnome-settings-daemon 启动台徽标单击此处获取有关使用 PPA 的说明。

添加 PPA 后,运行:

sudo apt-get update
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

安装完成后需要重新启动。一旦包已升级,就可以使用dconf命令联机帮助页图标 改变音量增量:

dconf write /org/gnome/settings-daemon/plugins/sound/volume-step 2
Run Code Online (Sandbox Code Playgroud)

(默认值为 6。)

现在,当您按下音量键时,音量将以 2 为增量变化:

在此处输入图片说明

  • @AlexGrin 好消息 - MATE 已经支持这种开箱即用的功能。您只需要使用不同的命令来更改增量值:`dconf write /org/mate/settings-daemon/plugins/media-keys/volume-step <NUM>` 其中 `<NUM>` 是新值。我刚刚在 MATE 16.04 上测试了这个。 (4认同)
  • 此 ppa 将来会与上游 gnome/unity-settings-daemon 保持同步吗? (3认同)

fos*_*dom 16

11.10/12.04

从这个错误报告中可以看出,volume-step 键在 11.10 中消失了,并且(到目前为止)还没有重新出现。

因此,您无法通过简单直接的配置更改来减少音量步骤。

链接中的帖子 #18 提供了一个有趣的解决方法,其中涉及使用alsamixer递增和递减功能以及向桌面发送通知。

但是我无法让它工作 - 因此我对解决方案的看法是基于那篇文章。

使用此解决方案,默认的音量步长将减少到百分之二的步长。


如何

安装xbindkeys软件包(使用 Synaptic 或使用sudo apt-get install xbindkeys)。

使用您最喜欢的文本编辑器,在您的主文件夹中创建一个名为的文件,.volumeHack.sh然后将以下内容复制并粘贴到该文件中,即

gedit ~/.volumeHack.sh
Run Code Online (Sandbox Code Playgroud)

运行chmod a+x .volumeHack.sh以使其可执行。

然后编辑文件~/.xbindkeysrc并将下面的文本复制并粘贴到此文件的底部。IE

gedit ~/.xbindkeysrc
Run Code Online (Sandbox Code Playgroud)

注销和登录

.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
Run Code Online (Sandbox Code Playgroud)

.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"
Run Code Online (Sandbox Code Playgroud)


ænd*_*rük 11

10.04/10.10/11.04

我刚刚发现gconf-editor有一个“音量步长为音量百分比”的设置:

/apps/gnome_settings_daemon/volume_step

更优雅,它适用于 OSD 音量通知。


cda*_*ddr 10

这个简单的解决方案适用于(至少)12.04 并且不需要 CCSM。

当您使用键盘快捷键时,您将不会有屏幕上的音量条操作,但是您可以根据需要进行细粒度的音量控制。

  1. 系统设置 > 键盘 > “快捷方式”选项卡 > “声音和媒体”类别

  2. 禁用现有的“降低音量”和“提高音量”快捷键。为此,每次单击以选择它,然后按 Backspace 清除与其关联的任何组合键。

  3. 现在选择“自定义快捷方式”类别并单击“+”图标以创建两个新快捷方式,如下所示:

    名称:音量调高
    命令:amixer set Master 3%+
    名称:降低音量
    命令:amixer set Master 3%-

    (试验百分比。如果您需要非常精细,则省略 % 符号,它将使用 0-255 比例而不是百分比)。

  4. 现在将您的每个新快捷键分配给一个键或键组合:选择一个快捷键并在键盘上键入所需的一个或多个键。

在此之后,当您使用键盘音量控制时,您应该拥有您指定的任何音量增量。您始终可以通过禁用自定义快捷方式并重新启用“声音和媒体”类别中的预制快捷方式来恢复原始行为。


tha*_*era 5

您可以使用 CompizConfig 设置管理器执行此操作。sudo apt-get install compizconfig-settings-manager 如果尚未安装,请使用该命令 。

现在打开CompizConfig设置管理器并转到命令常规部分。选中右侧的启用命令复选框。在命令选项卡中,将以下两个命令分别输入为两个命令:

amixer set Master 5%+ -q

amixer set Master 5%- -q

键绑定选项卡中的命令分配两个键盘快捷。我使用 Super+[ 和 Super+] 组合。现在关闭 CompizConfig 设置管理器,这应该可以工作。

我不确定您是否可以将命令分配给计算机的内置音量控制器。

  • `amixer` 命令很棒,但您无需指导读者安装 CompizConfig 设置管理器。 (2认同)
  • 起初这对我有用,但好的结果并不稳定。没有明显的原因,我的 12.04 系统恢复到其原始行为,音量增量太大,即使我的新设置仍然在 CCSM 中设置和启用。我也尝试删除并重新创建它们无济于事。我找到了另一种 12.04 友好的方法来做到这一点,并将其作为另一个答案发布。 (2认同)