Запустите sh скрипт при выключении, чтобы уменьшить громкость

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

У меня есть скрипт sh, похожий на этот

  #!/bin/sh

  amixer -D pulse sset Master 20%

, помещенный в /etc/init.d/K99_set_volume.sh и использующий

ln -s /etc/init.d/K99_set_volume.sh /etc/rc0.d/K99_set_volume.sh
ln -s /etc/init.d/K99_set_volume.sh /etc/rc6.d/K99_set_volume.sh

, чтобы сделать правильные ссылки. К сожалению, уровень громкости при загрузке соответствует уровню предыдущего сеанса. Я попытался явно вставить строку с «alsactl store» в скрипт после уменьшения громкости, но безрезультатно. Сценарий является исполняемым и работает при запуске в терминале, а объем действительно установлен в /var/lib/alsa/asound.state. Кроме того, скрипт работает при выключении, я проверил это. Я не знаю, верно ли число 99.

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

Полный вывод из списка-приемников pacmd:

 2 sink(s) available.  
    index: 0    
    name: alsa_output.pci-0000_00_03.0.hdmi-stereo   
    driver: module-alsa-card.c  
    flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY  
    state: SUSPENDED  
    suspend cause: IDLE  
    priority: 9950  
    volume: 0:  20% 1:  20%  
            0: -41,94 dB 1: -41,94 dB  
            balance 0,00  
    base volume: 100%  
                 0,00 dB  
    volume steps: 65537  
    muted: yes  
    current latency: 0,00 ms  
    max request: 0 KiB  
    max rewind: 0 KiB  
    monitor source: 0  
    sample spec: s16le 2ch 44100Hz  
    channel map: front-left,front-right  
                 Stereo  
    used by: 0  
    linked by: 0  
    configured latency: 0,00 ms; range is 0,50 .. 371,52 ms  
    card: 0 alsa_card.pci-0000_00_03.0  
    module: 5  
    properties:  
        alsa.resolution_bits = "16"  
        device.api = "alsa"  
        device.class = "sound"  
        alsa.class = "generic"  
        alsa.subclass = "generic-mix"  
        alsa.name = "HDMI 0"  
        alsa.id = "HDMI 0"  
        alsa.subdevice = "0"  
        alsa.subdevice_name = "subdevice #0"  
        alsa.device = "3"  
        alsa.card = "0"  
        alsa.card_name = "HDA Intel HDMI"  
        alsa.long_card_name = "HDA Intel HDMI at 0xf7d1c000 irq 61"  
        alsa.driver_name = "snd_hda_intel"  
        device.bus_path = "pci-0000:00:03.0"  
        sysfs.path = "/devices/pci0000:00/0000:00:03.0/sound/card0"  
        device.bus = "pci"  
        device.vendor.id = "8086"  
        device.vendor.name = "Intel Corporation"  
        device.product.id = "0a0c"  
        device.form_factor = "internal"  
        device.string = "hdmi:0"  
        device.buffering.buffer_size = "65536"  
        device.buffering.fragment_size = "32768"  
        device.access_mode = "mmap+timer"  
        device.profile.name = "hdmi-stereo"  
        device.profile.description = "Digital Stereo (HDMI)"  
        device.description = "Built-in Audio Digital Stereo (HDMI)"  
        alsa.mixer_name = "Intel Haswell HDMI"  
        alsa.components = "HDA:80862807,80860101,00100000"  
        module-udev-detect.discovered = "1"  
        device.icon_name = "audio-card-pci"  
    ports:  
        hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)  
            properties:  
                device.icon_name = "video-display"  
    active port: hdmi-output-0  
    index: 1  
    name: alsa_output.pci-0000_00_1b.0.analog-stereo  
    driver: module-alsa-card.c  
    flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
    state: SUSPENDED  
    suspend cause: IDLE  
    priority: 9959  
    volume: 0:  20% 1:  20%  
            0: -41,94 dB 1: -41,94 dB  
            balance 0,00  
    base volume: 100%  
                 0,00 dB  
    volume steps: 65537  
    muted: no  
    current latency: 0,00 ms  
    max request: 0 KiB  
    max rewind: 0 KiB  
    monitor source: 1  
    sample spec: s16le 2ch 44100Hz  
    channel map: front-left,front-right  
                 Stereo  
    used by: 0  
    linked by: 0  
    configured latency: 0,00 ms; range is 0,50 .. 371,52 ms  
    card: 1 alsa_card.pci-0000_00_1b.0  
    module: 6  
    properties:  
        alsa.resolution_bits = "16"  
        device.api = "alsa"  
        device.class = "sound"  
        alsa.class = "generic"  
        alsa.subclass = "generic-mix"  
        alsa.name = "CX20751/2 Analog"  
        alsa.id = "CX20751/2 Analog"  
        alsa.subdevice = "0"  
        alsa.subdevice_name = "subdevice #0"  
        alsa.device = "0"  
        alsa.card = "1"  
        alsa.card_name = "HDA Intel PCH"  
        alsa.long_card_name = "HDA Intel PCH at 0xf7d18000 irq 60"  
        alsa.driver_name = "snd_hda_intel"  
        device.bus_path = "pci-0000:00:1b.0"  
        sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1"  
        device.bus = "pci"  
        device.vendor.id = "8086"  
        device.vendor.name = "Intel Corporation"  
        device.product.id = "9c20"  
        device.product.name = "Lynx Point-LP HD Audio Controller"  
        device.form_factor = "internal"  
        device.string = "front:1"  
        device.buffering.buffer_size = "65536"  
        device.buffering.fragment_size = "32768"  
        device.access_mode = "mmap+timer"  
        device.profile.name = "analog-stereo"  
        device.profile.description = "Analog Stereo"  
        device.description = "Built-in Audio Analog Stereo"  
        alsa.mixer_name = "Conexant CX20751/2"  
        alsa.components = "HDA:14f1510f,104315dd,00100100"  
        module-udev-detect.discovered = "1"  
        device.icon_name = "audio-card-pci"  
    ports:  
        analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)  
            properties:  
                device.icon_name = "audio-speakers"  
        analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: no)  
            properties:  
                device.icon_name = "audio-headphones"  
    active port: analog-output-speaker  
4
задан 27 May 2014 в 17:40

2 ответа

Проблема, это - pulseaudio тот, регулирующий громкость, не ALSA. Если Вам действительно нравится изменять объем, я рекомендую Вам вместо этого использовать pactl:

pactl set-sink-volume 0 20%

и делают это только во время начальной загрузки. Я предпочел бы, чтобы Вы ожидали, пока pulseaudio не запускается. Поскольку это лучше использует выскочку, так как это - событие базирующийся init. Для этого просто создайте setvolume.conf файл в /etc/init каталог и заполните его следующим содержанием:

start on started pulseaudio

setgid username
setuid username

script
    exec pactl set-sink-volume 0 20%
end script

Это уверит Вас, что после того, как pulseaudio запускается, это будет с желаемым объемом для Вашего пользователя.

0
ответ дан 27 May 2014 в 17:40

После нескольких часов экспериментов и чтения множества заметок я нашел часть решения на этом веб-сайте . Итак, я знал, что для этой простой задачи не нужен скрипт, а также узнал, что достаточно systemctl --user . Проверено на: Ubuntu 18.04.4 LTS

Установить громкость при выключении и перезагрузке
Устройства: pacmd list-receivers
Использование: pactl info

man pactl  
man systemd  

pactl - Control a запущенный звуковой сервер PulseAudio
pactl может использоваться для передачи команд управления звуковому серверу PulseAudio.

Проверьте в терминале:

pactl set-sink-volume 0 20%  
pactl set-sink-volume 0 80%

создайте файл в вашем домашнем каталоге: nano ~ / .config / systemd / user / setvolume.service

[Unit]
Description=Set the volume at shut down and reboot to desired value

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/pactl set-sink-volume 0 40%    

[Install]
WantedBy=default.target

Тестирование:

systemctl --user daemon-reload
systemctl --user stop setvolume
systemctl --user start setvolume
systemctl --user restart setvolume
systemctl --user enable setvolume   enable and start the systemd user service:

Устранение неполадок:

journalctl -xe
systemctl --user status setvolume.service
0
ответ дан 6 March 2020 в 03:32

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

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