Ses seviyesini daha küçük artışlarla nasıl yapabilirim?


53

Klavyemdeki ses yukarı / aşağı tuşlarına bastığımda, ses seviyesi çok fazla değişiyor. Daha hassas kontrol edebilmem için adım boyutunu nasıl daha küçük hale getirebilirim?

Yanıtlar:


12

11.10 / 12.04

Bu hata raporundan , ses seviyesi adım anahtarının 11.10'da kaybolduğu ve (henüz) tekrar görünmediği anlaşılıyor.

Bu nedenle, ses düzeyini azaltmak için yapabileceğiniz basit bir basit yapılandırma değişikliği yoktur.

Bağlantıdaki 18 numaralı mesaj alsamixer, masaüstüne bildirim gönderme ile birlikte artırma ve azaltma özelliğinin kullanılmasını içeren ilginç bir geçici çözüm sunar .

Ancak işe yaramadı - bu yüzden benim çözüme olan ilgim bu yazıya dayanıyor.

Bu çözümle, varsayılan ses adımı yüzde iki adıma indirgenir.


Nasıl

xbindkeysPaketi kurun (Synaptic kullanarak veya ile sudo apt-get install xbindkeys).

Favori metin düzenleyicinizi kullanarak, giriş klasörünüzde bir dosya oluşturun .volumeHack.shve aşağıdaki içerikleri kopyalayıp bu dosyaya yapıştırın.

gedit ~/.volumeHack.sh

Çalıştırılabilir chmod a+x .volumeHack.shhale getirmek için çalıştırın.

Sonra dosyayı düzenleyin ~/.xbindkeysrcve aşağıdaki metni kopyalayıp bu dosyanın altına yapıştırın. yani

gedit ~/.xbindkeysrc

Çıkış yap ve giriş yap

.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"

gnome'un ses kısma / kısma tuşlarını kapattığımda delty'nin cevabı benim için işe yaradı. Xbindkeys'den gelen bu uyarı, ihtiyacım olan ipucuydu: *** Warning *** Lütfen, xbindkeys tarafından yakalanan tuşlardan birini yakalayan başka bir program olmadığını doğrulayın. Bir çakışma olduğu anlaşılıyor ve xbindkey'ler yapılandırma dosyasında tanımlanan tüm anahtarları alamıyor.

1
Kayıt için, suçlu Gnome geliştiricilerinin pragmatik bir çözüm sağlama isteksizliği: bugzilla.gnome.org/show_bug.cgi?id=650371
Jakub Kotowski

17

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

Sonunda Trusty, Vivid, Wily, Xenial, Yakkety ve Zesty kullanıcıları için uygun bir çözüm buldum. Bir grup kesmek veya bir komut dosyası kullanmak yerine, sorunu kaynak kodda çözmeye karar verdim. Ben uygulanan bu yama için gnome-settings-ciniGnome-settings-daemon yükleyin ve birlik-settings-ciniUnity-settings-daemon yükleyin (bazı önemsiz değişiklikler yama yapılmıştır).

Paketleri bir PPA'ya yükledim:

ppa: george-edison55 / gnome-settings-daemonLaunchpad logosu ( PPA kullanma talimatı için tıklayınız. )

PPA'yı ekledikten sonra çalıştırın:

sudo apt-get update
sudo apt-get upgrade

Yükleme tamamlandıktan sonra yeniden başlatmanız gerekecek. Paketler yükseltildikten sonra, kullanabileceğiniz komutu hacim artımı değiştirmek için:dconfManpage simgesi

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

(Varsayılan değer 6'dır.)

Şimdi ses seviyesi tuşlarına bastığınızda, ses seviyesi 2'lik artışlarla değişecektir:

görüntü tanımını buraya girin


3
Bu ppa gelecekte yukarı akış cücesi / birlik-ayarlar-arka plan programı ile güncel kalacak mı?
starbeamrainbowlabs

1
@starbeamrainbowlabs evet, bunun üzerinde durmayı umuyorum.
Nathan Osman

1
Teşekkürler! Sadece kontrol etmek istedim. Ppa'nızı ana ppa ile bir araya gelinceye kadar kullanmaya geçeceğim (bunun olacağını düşünerek).
starbeamrainbowlabs

1
@NathanOsman herhangi bir şekilde yama yapabilir ve paketleyebilir mate-settings-daemonmi? Sonsuza dek minnettar olurdum :-)
Alex Grin

3
@AlexGrin müjdesi - MATE zaten hazır olanı destekliyor. Artış değerini değiştirmek için farklı bir komut kullanmanız yeterlidir: yeni değer dconf write /org/mate/settings-daemon/plugins/media-keys/volume-step <NUM>nerede <NUM>. Bunu MATE 16.04 tarihinde test ettim.
Nathan Osman

11

10.04 / 10.10 / 11.04

Az önce gconf-editor"Hacmin yüzdesi olarak hacim adımı" için bir ayar olduğunu keşfettim :

/apps/gnome_settings_daemon/volume_step

Çok daha şık ve OSD ses bildirimleriyle çalışır.


10

Bu kolay çözüm (en azından) 12.04 için çalışır ve CCSM gerektirmez.

Klavye kısayollarını kullanırken ekran üstü ses seviyesi çubuğunda işlem yapmayacaksınız, ancak istediğiniz şekilde ince ayarlı ses seviyesi kontrolüne sahip olacaksınız.

  1. Sistem Ayarları> Klavye> "Kısayollar" sekmesi> "Ses ve Medya" kategorisi

  2. Mevcut "Ses Kısma" ve "Ses Artırma" kısayollarını devre dışı bırakın. Bunu yapmak için, her birini seçmek için tıklayın ve ardından onunla ilişkili tüm anahtar kombinasyonlarını silmek için Geri tuşuna basın.

  3. Şimdi "Özel Kısayollar" kategorisini seçin ve iki yeni kısayol oluşturmak için "+" simgesini tıklayın:

    İsim: Ses Seviyesi 
    Komutu: amixer Master 3% + set
    İsim: Ses Seviyesi 
    Komutu: amixer Master 3% ayarlı -

    (Yüzdeleri deneyin. Son derece iyi gitmeniz gerekiyorsa% işaretini kaldırın ve yüzde yerine 0-255 ölçeğini kullanacaktır).

  4. Şimdi yeni kısayollarınızın her birini bir tuşa veya bir tuş kombinasyonuna atayın: Bir kısayol seçin ve klavyenize istediğiniz tuş veya tuşları yazın.

Bundan sonra, klavye ses kontrollerinizi kullanırken, belirttiğiniz ses artış değerlerine sahip olmalısınız. Özel kısayollarınızı devre dışı bırakarak ve önceden oluşturulmuş olanları "Ses ve Medya" kategorisinde yeniden etkinleştirerek her zaman orijinal davranışa geri dönebilirsiniz.


Bu, dün komut satırından ve kilit haritalarımdan çalıştı, ancak yeniden başlatmanın ardından, komut satırında veya anahtar haritalamada herhangi bir etki görülmedi.
GlenPeterson

8

Ubuntu 17.10'da bunun için (biraz da olsa) bir tür destek olduğunu belirtmekte fayda var . Sesi daha küçük adım boyutuyla değiştirmek için Shift+ XF86AudioRaiseVolume(veya XF86AudioLowerVolume) düğmesine basın .

görüntü tanımını buraya girin


Bu GNOME'da çok harikaydı ve Tarçın'da çok özlüyorum. : ((GNOME benim için deli gibi hafıza sızdırıyordu çünkü gnome-shell en fazla 6 GiB RAM kullanıyordu.)
Per Lundberg

@PerLundberg İlginç. Bellek sızıntısından gerçekten olumsuz etkiler yaşamamıştım.
Nonny Moose

Ne sıklıkla yeniden başlatıyorsunuz? Makinemi bir hafta veya daha uzun bir süre boyunca çalışır halde bırakıyorum;
Per Lundberg

@PerLundberg gece bir kez lol. Şimdi mantıklı XD
Nonny Moose

1
İşte görüyorum. Linux'u işyerinde çalıştırıyorum, bu yüzden genellikle gerekmedikçe makineyi asla kapatmam. Akşamları uyu, ertesi sabah toparlan.
Per Lundberg

5

Bunu CompizConfig Settings Manager ile yapabilirsiniz. sudo apt-get install compizconfig-settings-manager Henüz yüklemediyseniz komutu kullanın .

Şimdi CompizConfig Ayar Yöneticisini açın ve gidin Komutlar içinde Genel bölümünde. Kontrol etkinleştirme komutları sağındaki onay kutusunu. In Komutlar sekmesi, iki komutları olarak ayrı ayrı aşağıdaki iki komutları girin:

amixer set Master 5%+ -q

amixer set Master 5%- -q

Anahtar ciltleri sekmesindeki komutlar için iki klavye kısayolu atayın . Super + [ve Super +] kombinasyonunu kullanıyorum. Şimdi CompizConfig Ayarlar Yöneticisi'ni kapatın ve bu çalışmalıdır.

Komutları bilgisayarın yerleşik ses denetleyicilerine atayabiliyorsanız emin değilim.


1
Karışımlayıcının Compiz'e ihtiyacı var mı?
Takkat

Bunu Tercihler bölümündeki Klavye Kısayollarını kullanarak da yapabilirsiniz. Neyse Compiz yöneticisinde biri vs atama Tıklama etkinlikleri, dahil birçok ek seçenek sunar
thameera

2
amixerKomut harika, ama sen CompizConfig Ayar Yöneticisi yüklemek için okuyuculara talimat gerek yoktur.
ændrük

2
İlk başta bu benim için çalıştı, ancak iyi sonuç kararlı değildi. Belirgin bir nedenden ötürü, 12.04 sistemim, CCSM'de yeni ayarları hala ayarlanmış ve etkinleştirilmiş olmasına rağmen, hacim artışları ile çok büyük artışlarla orijinal davranışına geri döndü. Bunları silmeyi ve yeniden oluşturmayı denemeyi de denedim. Bunu yapmak için başka bir 12.04 dostu yol buldum ve başka bir cevap olarak göndereceğim.
cdaddr

3

12.04 (ve muhtemelen 11.10)

ALSA rotasına gitmek yerine pulseaudio ses seviyesini doğrudan kontrol etmek istiyorsanız, aşağıdaki betiği kullanabilirsiniz. Bu Stackoverflow yanıtında ayrıntılı olarak DBUS üzerinden birimin kontrol edilmesi de mümkün olsa da , bu işi Ubuntu 12.04'te yapmanın bir yolunu bulamadım.

Komut dosyasında da belirtildiği gibi, Ubuntu'da ses düzeyini programlı olarak nasıl değiştireceğinize ilişkin bu Stackoverflow cevabını kullanır ve fikri, birim değişikliğini komut satırı argümanı olarak alan ve ayrıca bir OSD bildirimi gösteren bir komut dosyasına genişletir. Varsayılan Ubuntu (12.04) davranışına olabildiğince modellemeye çalıştım.

Komut, birim değişikliklerini mutlak veya göreceli bir sayı veya yüzde değer olarak alır. Mesela:

  • pavol.sh 2000 Sesi 2000’e ayarlar,
  • pavol.sh 30% Sesi yüzde 30'a ayarlar,
  • pavol.sh +1000 Sesi 1000 arttırır ve
  • pavol.sh -5% Ses seviyesini yüzde 5 azaltır.

Ayrıca, daha ileri düzeyde ince ayar yapmak için faydalı olduğu umuduyla liberal bir şekilde yorumlanmaktadır.

Nasıl

Ana klasörünüzde (veya gerçekten başka bir yerde - sadece yolu hatırlayın) bir dosya oluşturmak için favori metin düzenleyicinizi kullanın pavol.shve aşağıdaki içerikleri kopyalayıp bu dosyaya yapıştırın, örn.

gedit ~/pavol.sh

Çalıştırılabilir chmod a+x ~/pavol.shhale getirmek için çalıştırın.

Sonra açın Sytem Settings, Keyboardayarlara gidin ve Shortcutssekmeye geçin . Tıklayın Custom Shortcutsve artı düğmesiyle iki yeni klavye kısayolu oluşturun.

Her birine bir ad verin ve komut olarak böyle bir şey girin: Komut dosyasının /home/username/pavol.sh "+3%"tam yolunu girmek önemlidir pavol.sh(komut dosyası PATH ortam değişkeninde bulunan bir klasörde değilse). Ayrıca "", ses değerinin etrafında fiyat teklifi işaretleri kullanın , aksi takdirde klavye kısayolu çalışmaz.

Bundan sonra, bir tuş kombinasyonu veya multimedya tuşu ayarlamak için her girişin sağ tarafına tıklayın. İstenilen kombinasyon veya tuş zaten başka bir kısayola atanmışsa, program yeniden atamak isteyip istemediğinizi soracaktır.

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 kullanırken OSD notify-send biriktirmesi dışında bu iyi çalışır. Her basışta yeni bir OSD ekleniyor ve bir öncekinden geçmiyor. OSD güzel, ama benim için gerekli değil. Gösteri OSD bildirimini yorumlamaya çalıştım ancak bu senaryoyu benim için kırdı.
Kendor

Üzgünüm @kendor sizin için işe yaramadı. Sadece Unity ile test ettim. Bu hata raporundaki yorumdan geçici çözümü denediniz mi : https://bugzilla.redhat.com/show_bug.cgi?id=693207#c3 ? Notify-send komutunu içeren satıra daha --hint=int:transient:1önce ekleyin "Volume"(130 numaralı satır olmalıdır). Belki yardımcı olur.
Kuro

2

Kubuntu 17.04

main.xmlGenellikle bulunan dosyayı düzenleyin : /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/config/main.xmlroot olarak.

VolumeStep girişini arayın:

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

ve adım başına yüzde değerini istediğiniz şekilde değiştirin. Gördüğünüz gibi% 2 kullanıyorum.

Kubuntu 16.04'te yazıldığı gibi, bunun etkili olması için Plazmayı yeniden başlatmanız gerekir:

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

0

Kubuntu 16.04

Bireysel giriş kaynakları ve çıkış kaynaklarının yanı sıra ana ses seviyesi olan 14.04'ten ve% 3'lük bir artış / azalış adımına (daha sonra% 5 olarak değiştirildi) yükselttim. Ana hacim adımlarını telafi etmek için çıkış kaynağı ses seviyelerini ayarlayarak bunu% 2 ve% 3 adımlarında tutmayı başardım.

Doğal olarak, 16.04 bunu% 6'ya yükselttiğinde ve ana ses kontrolünü çıkardığımda biraz rahatsız oldum, bunun yerine ses seviyesi düğmeleri her iki çıkış kaynağını da kontrol ediyor.

Ubuntu 16.04 için yukarıdaki düzeltme KDE5'te kullanılan Plasma 5 arayüzü ile çalışmıyor, bu yüzden Kubuntu 16.04 için çalışmayacak - Denedim ve çalışmıyor.

Bu yüzden çevrimiçi olarak hızlıca kontrol ettim ve işlemin bir dosyayı manuel olarak değiştirmesi gerekiyor, ancak bu oldukça basit.

ListItemBase.qmlGenellikle /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/ListItemBase.qmlkök olarak bulunan dosyayı düzenleyin .

İşlevler içinde birkaç satır vardır increaseVolumeve decreaseVolumeadımı maksimum sesi 15'e bölerek tanımlar.

var step = slider.maximumValue / 15;

Sayı ne kadar yüksek olursa adımlar o kadar küçüktür. Bu 1 ise, hacim% 0 veya% 100'dür, ancak bu 100 ise, hacim% 1'lik adımlarla artar.

Şahsen,% 2'yi hedefledim, bu yüzden bu iki çizgiyi de değiştirdim.

var step = slider.maximumValue / 50;

Kredi bu Reddit’e gider: https://www.reddit.com/r/kde/comments/3t1xr0/how_to_change_the_volume_increment_step_size_for/

Ancak, bunun etkili olması için Plazmayı yeniden başlatmanız gerekir:

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

Umarım bu, birisinin çıkmasına yardımcı olabilir veya belki bu yapılandırmayı gerçekleştirmek için Plazma değişikliği gönderen birisine yol açabilir ... her ikisi de başka bir güncellemeden sonra ben olabilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.