Как я могу изменить громкость с меньшими приращениями?

Когда я нажимаю клавиши увеличения / уменьшения громкости на клавиатуре, громкость меняется слишком сильно. Как я могу уменьшить размер шага, чтобы лучше контролировать?

59
задан 31 October 2010 в 07:24

11 ответов

11.10 / 12.04

Из этого отчета об ошибке видно, что клавиша регулировки громкости исчезла в 11.10 и (пока) не появилась снова.

Таким образом, , не существует простого изменения конфигурации, которое можно было бы сделать для уменьшения шага громкости.

Сообщение № 18 в ссылке дает интересный обходной путь, который включает использование возможности увеличения и уменьшения alsamixer вместе с отправкой уведомления на рабочий стол.

Однако я не смог заставить его работать - таким образом, мой взгляд на решение основан на этом сообщении.

В этом решении шаг громкости по умолчанию будет уменьшен до двух процентов.


Как

Установить пакет xbindkeys (с помощью Synaptic или с помощью sudo apt-get install xbindkeys ).

Используя свой любимый текстовый редактор, создайте файл в вашей домашней папке с именем .volumeHack.sh и скопируйте и вставьте содержимое ниже в этот файл, т.е.

gedit ~/.volumeHack.sh

Запустите chmod a + x .volumeHack.sh , чтобы сделать его исполняемым.

Затем отредактируйте файл ~ / .xbindkeysrc и скопируйте и вставьте текст ниже в конец этого файла. т.е.

gedit ~/.xbindkeysrc

Выйти и войти в систему

.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"
15
ответ дан 31 October 2010 в 07:24

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

Наконец-то у меня есть подходящее решение для пользователей Trusty, Vivid, Wily, Xenial, Yakkety и Zesty. Вместо того, чтобы использовать кучу хаков или скрипт, я решил исправить проблему в исходном коде. Я применил этот патч к gnome-settings-daemon Install gnome-settings-daemon и unity-settings-daemon Install unity-settings-daemon (в патч были внесены некоторые тривиальные изменения).

У меня есть загрузили пакеты в PPA:

ppa: george-edison55 / gnome-settings-daemon Launchpad logo ( Щелкните здесь, чтобы получить инструкции по использованию PPA. )

После добавления PPA , запустите:

sudo apt-get update
sudo apt-get upgrade

После завершения установки потребуется перезагрузка. После обновления пакетов вы можете использовать команду dconf Manpage icon , чтобы изменить приращение тома:

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

(значение по умолчанию - 6.)

Теперь, когда вы нажимаете кнопку клавиши громкости, громкость будет изменяться с шагом 2:

enter image description here

18
ответ дан 31 October 2010 в 07:24

10.04 / 10.10 / 11.04

Я только что обнаружил, что gconf-editor имеет настройку «Шаг громкости в процентах от громкости»:

/ apps / gnome_settings_daemon / volume_step

Намного более элегантный, и он работает с уведомлениями о громкости OSD.

11
ответ дан 31 October 2010 в 07:24

Вы можете сделать это с помощью CompizConfig Settings Manager. Используйте команду sudo apt-get install compizconfig-settings-manager если вы еще не установили его.

Теперь откройте CompizConfig Settings Manager и перейдите к Commands в разделе General. Установите флажок Enable commands (Включить команды) справа. На вкладке Commands введите две следующие команды по отдельности в качестве двух команд:

установка микшера Master 5%+ -q

установка микшера Master 5%- -q

Назначьте две клавиатурные комбинации клавиш для команд в закладке привязки клавиш. Я использую комбинацию Super+[ и Super+]. Теперь закройте CompizConfig Settings Manager и это должно сработать.

Я не уверен, сможете ли вы назначить команды встроенным контроллерам громкости компьютера.

5
ответ дан 31 October 2010 в 07:24

Ubuntu 17.10 и новее

Стоит отметить, что в Ubuntu 17.10 и новее с GNOME Shell уже есть (хотя и несколько запутанно) своего рода подтверждение этого.

Нажмите Shift + XF86AudioRaiseVolume или Shift + XF86AudioLowerVolume (обычно это специальные клавиши увеличения / уменьшения громкости на клавиатуре), чтобы изменить том с меньшим размером шага.

enter image description here

22
ответ дан 31 October 2010 в 07:24

Это простое решение работает в течение (по крайней мере) 12.04 и не требует CCSM.

У вас не будет экранной панели громкости при использовании сочетаний клавиш, но вы будете иметь, тем не менее, тонкий регулятор громкости по вашему желанию.

  1. Системные настройки > Клавиатура > вкладка "Ярлыки" > категория "Звук и носитель"

  2. Отключите существующие сочетания клавиш "Громкость вниз" и "Вверх". Для этого на каждом щелчке мыши выделите его и нажмите Backspace, чтобы очистить любую комбинацию клавиш, связанную с ним.

  3. Теперь выберите категорию "Пользовательские ярлыки" и нажмите на иконку "+", чтобы создать два новых ярлыка следующим образом:

    Название: Увеличить громкость
    Команда: установка миксера Мастер 3%+
    Название: Низкий уровень громкости
    Команда: набор миксеров Мастер 3%-

    (Экспериментируйте с процентами. Если вам нужно идти очень хорошо, опустите знак %, и он будет использовать шкалу 0-255, а не проценты)

  4. Теперь назначьте каждый из ваших новых ярлыков клавишам или комбинациям клавиш: Выберите сочетание клавиш и введите нужную клавишу или клавиши на клавиатуре.

После этого, когда вы используете регуляторы громкости клавиатуры, у вас должны быть любые заданные вами приращения громкости. Вы всегда можете вернуться к исходному поведению, отключив свои пользовательские ярлыки и повторно включив предварительно созданные в категории "Звук и носитель".

10
ответ дан 31 October 2010 в 07:24

Kubuntu 16.04

Я обновился с версии 14.04, в которой был общий уровень громкости, а также отдельные входные и выходные источники, а также шаг увеличения / уменьшения 3% (который позже был изменен на 5%). Мне удалось сохранить его на уровне примерно 2% и 3%, просто отрегулировав уровни громкости выходного источника, чтобы компенсировать шаги мастер-громкости.

Естественно, я был немного раздражен, когда 16.04 увеличил это значение до 6% и удалил основной регулятор громкости, вместо этого кнопки громкости управляют обоими источниками вывода.

Вышеупомянутое исправление для Ubuntu 16.04 не работает с интерфейсом Plasma 5, используемым в KDE5, поэтому не будет работать для Kubuntu 16.04 - я попробовал, и он не работает.

Итак, я быстро проверил онлайн, и этот процесс требует изменения файла вручную, но это довольно просто.

Отредактируйте файл ListItemBase.qml , который обычно находится по адресу /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/ListItemBase.qml от имени пользователя root.

В функциях extensionVolume и reduceVolume , которые определяют шаг путем деления максимальной громкости на 15. Они выглядят так:

var step = slider.maximumValue / 15;

Чем выше число, th е меньше шагов. Если бы это было 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 изменения, чтобы сделать эту конфигурацию управляемой ... после следующего обновления оба могут оказаться мной.

0
ответ дан 31 October 2010 в 07:24

Kubuntu 17.04

Отредактируйте файл main.xml обычно находится по адресу: /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/config/main.xml как root.

Найдите запись volumeStep:

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

и измените процент- за шаг к тому, что вы хотите. Как видите, я использую 2%.

Как написано в Kubuntu 16.04, вам необходимо перезапустить Plasma, чтобы это вступило в силу:

killall plasmashell #to stop it
kstart plasmashell #to restart it
2
ответ дан 31 October 2010 в 07:24

12.04 (и, возможно, 11.10)

Если вы хотите управлять громкостью пульсаудио напрямую, а не идти по маршруту ALSA, вы можете использовать следующий скрипт. Хотя это также должно быть возможно управлять громкостью через DBUS, как подробно описано в этом Stackoverflow answer, я, однако, не смог найти способ сделать эту работу в Ubuntu 12.04.

Как сказано в самом сценарии, он использует этот Stackoverflow ответ о том, как программно изменить громкость в Ubuntu и расширяет идею в сценарий, который принимает изменение громкости в качестве аргумента командной строки, а также показывает оповещение OSD. Я попытался смоделировать его как можно ближе к поведению Ubuntu (12.04) по умолчанию.

Скрипт принимает изменение объема как абсолютное или относительное число или значение в процентах. Так, например:

  • pavol.sh 2000 устанавливает громкость на 2000,
  • pavol.sh 30% устанавливает громкость на 30%,
  • pavol.sh +1000 увеличивает громкость на 1000 и
  • pavol.sh -5% уменьшает громкость на 5%.

Он также достаточно либерально прокомментирован в надежде, что он будет полезен для дальнейшей доработки.

HowTo

Используйте ваш любимый текстовый редактор, чтобы создать файл в вашей домашней папке (или в любом другом месте - просто запомните путь) с именем pavol.sh и скопируйте и вставьте содержимое, приведенное ниже, в этот файл, i. e.

gedit ~/pavol.sh

Запустите chmod a+x ~/pavol.sh, чтобы сделать его исполняемым.

Затем откройте Sytem Settings, перейдите к настройкам Keyboard и переключитесь на вкладку Shortcuts. Там нажмите на Custom Shortcuts и создайте два новых сочетания клавиш с помощью кнопки плюс.

Дайте каждому из них имя и в качестве команды введите что-нибудь подобное: /home/username/pavol.sh "+3%" Важно ввести полный путь к скрипту pavol.sh (если только скрипт не находится в папке, которая включена в переменную окружения PATH). Также используйте кавычки "" вокруг значения громкости или сочетание клавиш не будет работать.

После этого щелкните по правой стороне каждой записи, чтобы установить комбинацию клавиш или мультимедийную клавишу. Если нужная комбинация или клавиша уже назначена другому сочетанию клавиш, программа спросит, хотите ли вы ее переназначить.

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
3
ответ дан 31 October 2010 в 07:24

Наконец-то он здесь!

gsettings set org.gnome.settings-daemon.plugins.media-keys volume-step <step size>
1
ответ дан 5 January 2021 в 23:58

В Gnome 3.36 (Ubuntu 20.04 LTS) настройки приращения доступны здесь в dconf-редактор

/ org / gnome / settings-daemon / plugins / media-keys / volume-step

0
ответ дан 5 January 2021 в 23:58

Другие вопросы по тегам:

Похожие вопросы: