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

50

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

    
задан ændrük 31.10.2010 в 05:24
источник

9 ответов

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 и скопируйте & amp; вставьте текст ниже в нижней части этого файла. то есть.

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"
    
ответ дан fossfreedom 09.04.2012 в 23:18
источник
16

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

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

ЯзагрузилпакетывPPA:

ppa:george-edison55/gnome-settings-daemon Launchpad logo (Click here for instructions on using PPAs.)

После того, как вы добавили PPA, запустите:

sudo apt-get update
sudo apt-get upgrade

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

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

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

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

    
ответ дан Nathan Osman 01.12.2015 в 21:09
11

10,04 / 10,10 / 11,04

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

/apps/gnome_settings_daemon/volume_step

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

    
ответ дан ændrük 18.02.2011 в 20:39
10

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

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

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

  2. Отключите существующие сочетания «Уменьшение громкости» и «Уменьшить громкость». Чтобы сделать это, нажмите каждый раз, чтобы выбрать его, а затем нажмите Backspace, чтобы очистить любую комбинацию клавиш, связанную с ним.

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

    Name: Volume Up
    Command: amixer set Master 3%+
    Name: Volume Down
    Command: amixer set Master 3%-

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

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

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

    
ответ дан cdaddr 11.11.2012 в 20:41
5

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

Теперь откройте диспетчер настроек CompizConfig и перейдите в Команды в разделе Общие . Установите флажок Включить команды справа. На вкладке Команды введите две следующие команды отдельно в виде двух команд:

amixer set Master 5%+ -q

amixer set Master 5%- -q

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

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

    
ответ дан thameera 31.10.2010 в 13:15
3

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

Если вы хотите напрямую управлять томом pulseaudio, а не идти по маршруту ALSA, вы можете использовать следующий скрипт. Хотя также можно контролировать громкость через DBUS, как подробно описано в этом ответе Stackoverflow , я, однако, не смог найти способ сделать эта работа в 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 , и скопируйте и вставьте содержимое ниже в этот файл, т. е.

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
    
ответ дан Kuro 24.08.2012 в 00:54
3

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

    
ответ дан Nonny Moose 04.02.2018 в 23:16
2

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
    
ответ дан Bas 07.08.2017 в 16:41
0

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.

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

var step = slider.maximumValue / 15;

Чем больше число, тем меньше шагов. Если это было 1, объем равен 0% или 100%, но если бы это было 100, объем увеличивался бы с шагом 1%.

Лично я нацелился на 2%, поэтому я изменил обе эти строки на

var step = slider.maximumValue / 50;

Кредит идет на этот Reddit: Ссылка

Однако для этого вам необходимо перезапустить Plasma:

killall plasmashell #to stop it
kstart plasmashell #to restart it

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

    
ответ дан SEoF 17.11.2016 в 12:50