После того, как я установил на своем новом ноутбуке почти все, что хотел, все еще есть одна маленькая вещь, которую я не могу заставить работать, и это меня очень раздражает: я хотел бы запустить скрипт при выключении, чтобы громкость на загрузка / перезагрузка практически бесшумная. Вот что я сделал:
У меня есть скрипт 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
Проблема, это - 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 запускается, это будет с желаемым объемом для Вашего пользователя.
После нескольких часов экспериментов и чтения множества заметок я нашел часть решения на этом веб-сайте . Итак, я знал, что для этой простой задачи не нужен скрипт, а также узнал, что достаточно 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