볼륨을 작은 단위로 변경하려면 어떻게해야합니까?


53

키보드에서 볼륨 높이기 / 내리기 키를 누르면 볼륨이 너무 많이 변경됩니다. 더 세밀하게 제어 할 수 있도록 스텝 크기를 작게 만들려면 어떻게해야합니까?

답변:


12

11.10 / 12.04

버그 보고서 에서 볼륨 단계 키는 11.10에서 사라져서 아직 나타나지 않았습니다.

따라서 볼륨 단계를 줄이기 위해 간단하게 구성을 변경할 수 없습니다.

링크의 Post # 18은 alsamixer알림을 데스크탑에 보내는 것과 함께 증가 및 감소 기능을 사용하는 흥미로운 해결 방법을 제공합니다 .

그러나 나는 그것을 작동시키지 못했습니다. 따라서 솔루션에 대한 나의 입장은 그 게시물을 기반으로합니다.

이 솔루션을 사용하면 기본 볼륨 단계가 2 % 단계로 줄어 듭니다.


어떻게

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"

볼륨 증가 / 감소를 위해 그놈의 키보드 단축키를 비활성화하면 delty의 대답이 저에게 효과적이었습니다. xbindkeys의이 경고는 내가 필요한 단서였습니다. *** 경고 *** xbindkeys에 의해 캡처 된 키 중 하나를 캡처하는 다른 프로그램이 실행되고 있지 않은지 확인하십시오. 충돌이있는 것 같습니다. xbindkeys는 구성 파일에 정의 된 모든 키를 가져올 수 없습니다.

1
기록을 위해, 범인은 그놈 개발자들이 실용적인 해결책을 제공 할 의사가 없다는 것입니다 : bugzilla.gnome.org/show_bug.cgi?id=650371
Jakub Kotowski

17

우분투 14.04 / 15.04 / 15.10 / 16.04 / 16.10 / 17.04

마지막으로 Trusty, Vivid, Wily, Xenial, Yakkety 및 Zesty 사용자에게 적합한 솔루션이 있습니다. 많은 해킹이나 스크립트를 사용하는 대신 소스 코드에서 문제를 해결하기로 결정했습니다. 나는 적용 이 패치그놈 - 설정 - 데몬그놈 설정 데몬 설치단결 - 설정 - 데몬단일 설정 데몬 설치 (일부 사소한 수정이 패치로 만들어졌다).

패키지를 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 씩 증가합니다.

여기에 이미지 설명을 입력하십시오


3
이 ppa는 앞으로 업스트림 그놈 / 유니티 설정 데몬으로 최신 상태를 유지합니까?
starbeamrainbowlabs

1
@starbeamrainbowlabs 예, 그 위에 머물기를 바라고 있습니다.
Nathan Osman

1
감사! 그냥 확인하고 싶었습니다. 나는 당신의 ppa가 메인 ppa로 병합 될 때까지 사용하도록 전환 할 것입니다 (상상 한 것으로 가정).
starbeamrainbowlabs

1
@NathanOsman 패치 및 패키지 mate-settings-daemon도 가능합니까? 나는 영원히 감사 할 것이다 :-)
Alex Grin

3
@AlexGrin good news-MATE는 이미이 기본 지원 기능을 지원합니다. 증분 값을 변경하려면 다른 명령을 사용해야 합니다. 새 값은 dconf write /org/mate/settings-daemon/plugins/media-keys/volume-step <NUM>어디에 있습니까 <NUM>? 나는 이것을 MATE 16.04에서 테스트했습니다.
Nathan Osman

11

10.04 / 10.10 / 11.04

방금 gconf-editor"볼륨 비율로 볼륨 단계"설정이 있음을 발견했습니다 .

/apps/gnome_settings_daemon/volume_step

훨씬 더 우아하며 OSD 볼륨 알림과 함께 작동합니다.


10

이 쉬운 솔루션은 (최소한) 12.04에서 작동하며 CCSM이 필요하지 않습니다.

바로 가기 키를 사용할 때는 화면 볼륨 막대 동작이 없지만 원하는대로 세밀하게 볼륨을 조절할 수 있습니다.

  1. 시스템 설정> 키보드> "바로 가기"탭> "사운드 및 미디어"범주

  2. 기존 "Volume Down"및 "Volume Up"바로 가기를 비활성화하십시오. 이렇게하려면 클릭 할 때마다 클릭하여 선택한 다음 백 스페이스 키를 눌러 연관된 키 조합을 지우십시오.

  3. 이제 "Custom Shortcuts"범주를 선택하고 "+"아이콘을 클릭하여 다음과 같이 두 개의 새로운 바로 가기를 만듭니다.

    이름 : 볼륨 높이기 
    명령 : 믹서 세트 마스터 3 % +
    이름 : 볼륨 작게 
    명령 : 믹서 세트 마스터 3 %-

    (백분율을 사용한 실험. 극도로 잘 진행해야하는 경우 % 부호를 생략하면 백분율 대신 0-255 스케일이 사용됩니다).

  4. 이제 각각의 새로운 단축키를 키 또는 키 콤보에 할당하십시오 : 단축키를 선택하고 키보드에서 원하는 키를 입력하십시오.

그런 다음 키보드 볼륨 컨트롤을 사용할 때 지정한 볼륨을 늘려야합니다. 사용자 정의 바로 가기를 비활성화하고 "사운드 및 미디어"범주에서 미리 만든 바로 가기를 다시 활성화하여 항상 원래 동작으로 돌아갈 수 있습니다.


이것은 어제 명령 줄과 내 키 매핑에서 작동했지만 재부팅 후에는 명령 줄이나 키 매핑에 영향을 미치지 않습니다.
GlenPeterson

8

그것은 우분투 17.10에, (다소 복잡한이기는하지만) 이미이 있음을 언급하는 것은 가치 의 종류 이 지원. 더 작은 스텝 크기로 볼륨을 변경하려면 Shift+ XF86AudioRaiseVolume(또는 XF86AudioLowerVolume)를 누릅니다 .

여기에 이미지 설명을 입력하십시오


그놈에서는 정말 좋았고 시나몬에서는 정말 그리워요. :( (그놈이 나를 위해 미친 것처럼 메모리를 누출했기 때문에 전환해야했습니다. gnome-shell은 최대 6GiB RAM 사용량이었습니다.)
Lundberg Per

@PerLundberg 흥미로운. 메모리 누수로 인한 부작용은 실제로 발생하지 않았습니다.
노니 무스

얼마나 자주 재부팅합니까? 나는 일주일 이상 내 컴퓨터를 가동 시키는데, 이는 문제가 실제로 가속화되는 시점입니다.
Per Lundberg

@PerLundberg는 하루에 한 번 lol. 이제 말이됩니다 XD
Nonny Moose

1
아하 나는 직장에서 Linux를 실행하므로 일반적으로 필요할 때를 제외하고는 절대로 시스템을 종료하지 않습니다. 저녁에 잠을 자고 다음날 아침에 회복하십시오.
Per Lundberg

5

CompizConfig 설정 관리자를 사용하여이 작업을 수행 할 수 있습니다. 명령 sudo apt-get install compizconfig-settings-manager 을 아직 설치하지 않은 경우 사용하십시오 .

이제 CompizConfig 설정 관리자를 열고 일반 섹션의 명령 으로 이동 하십시오. 오른쪽의 명령 사용 확인란을 선택 하십시오 . 에서 명령 탭, 두 개의 명령 별도로 다음과 같은 두 가지 명령을 입력 :

amixer set Master 5%+ -q

amixer set Master 5%- -q

키 바인딩 탭 에서 명령에 대한 두 개의 키보드 단축키를 지정 하십시오. Super + [와 Super +] 조합을 사용합니다. 이제 CompizConfig 설정 관리자를 닫으면 작동합니다.

그래도 컴퓨터의 내장 볼륨 컨트롤러에 명령을 할당 할 수 있는지 잘 모르겠습니다.


1
믹서에는 Compiz가 필요합니까?
Takkat

환경 설정에서 키보드 단축키를 사용하여 그렇게 할 수 있습니다. 어쨌든 Compiz 관리자는 클릭 이벤트 할당 등을 포함하여 더 많은 옵션을 제공합니다.
thameera

2
amixer명령은 훌륭하지만 독자에게 CompizConfig 설정 관리자를 설치하도록 지시 할 필요는 없습니다.
ændrük

2
처음에는 이것이 나를 위해 일했지만 좋은 결과는 안정적이지 않았습니다. 분명한 이유없이 12.04 시스템은 CCSM에서 새 설정이 여전히 설정되어 활성화되었지만 볼륨이 너무 크게 증가하여 원래 동작으로 되돌아갔습니다. 나는 또한 그들을 삭제하고 다시 만들려고 노력했다. 이 작업을 수행하는 또 다른 12.04 친화적 인 방법을 찾았으며 다른 답변으로 게시 할 것입니다.
cdaddr

3

12.04 (및 11.10)

ALSA 경로를 사용하지 않고 펄스 오디오 볼륨을 직접 제어하려면 다음 스크립트를 사용할 수 있습니다. 이 Stackoverflow 답변에 설명 된 것처럼 DBUS를 통해 볼륨을 제어 할 수도 있지만 우분투 12.04 에서이 작업을 수행 할 수있는 방법을 찾지 못했습니다.

스크립트 자체에서 말했듯이 우분투에서 볼륨을 프로그래밍 방식으로 변경하는 방법에 대한Stackoverflow 답변을 사용 하고 볼륨 변경을 명령 줄 인수로 사용하고 OSD 알림을 표시하는 스크립트로 아이디어를 확장합니다. 기본 우분투 (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더하기 버튼을 클릭 하여 두 개의 새로운 키보드 단축키를 만듭니다.

각각에 이름을 지정하고 명령으로 다음과 같이 입력하십시오 : 스크립트가 PATH 환경 변수에 포함 된 폴더에 있지 않는 한 스크립트 /home/username/pavol.sh "+3%"의 전체 경로를 입력하는 것이 중요합니다 pavol.sh. 또한 ""볼륨 값 주위에 따옴표를 사용하십시오 . 그렇지 않으면 키보드 단축키가 작동하지 않습니다.

그런 다음 각 항목의 오른쪽을 클릭하여 키 조합 또는 멀티미디어 키를 설정하십시오. 원하는 조합 또는 키가 이미 다른 바로 가기에 할당되어 있으면 프로그램에서 다시 지정할 것인지 묻습니다.

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

이것은 gnome-shell을 사용할 때 OSD 알림 전송을 누적하는 것을 제외하고는 잘 작동합니다. 누를 때마다 새로운 OSD가 추가되고 이전 OSD는 사라지지 않습니다. OSD는 훌륭하지만 나에게 꼭 필요한 것은 아닙니다. show OSD 알림을 주석 처리하려고 시도했지만 스크립트가 깨졌습니다.
Kendor

@kendor 님이 죄송합니다. 나는 Unity로만 테스트했습니다. 이 버그 보고서의 주석에서 해결 방법을 사용해 보셨습니까 ? https://bugzilla.redhat.com/show_bug.cgi?id=693207#c3 ? 그냥 추가 --hint=int:transient:1하기 전에 "Volume"알림 보내 명령 줄에 (행 번호 (130)를해야한다). 아마 도움이 될 것입니다.
Kuro

2

쿠분투 17.04

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

0

쿠분투 16.04

마스터 볼륨 레벨과 개별 입력 소스 및 출력 소스 및 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으로 루트로 찾은 파일을 편집하십시오 .

이 함수 내에서 몇 줄이야 increaseVolumedecreaseVolume그 그들은처럼 (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/

그러나이를 적용하려면 플라즈마를 다시 시작해야합니다.

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

잘하면 이것이 누군가를 도울 수도 있고 누군가 가이 구성을 구동하도록 플라즈마에 변경 사항을 제출하게 할 수도 있습니다 ... 둘 다 다른 업데이트 후에 나에게 끝날 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.