Бесшумный режим Ubuntu звучит когда закрытая крышка ноутбука

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

Я пытался добавить следующий сценарий к /lib/systemd/system-sleep:

#!/bin/bash

amixer -q -D pulse sset Master mute

echo 2 >> /home/user/test

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

Или аудиосистема повторно включает себя автоматически, или что-то еще неправильно. Но amixer команда при ручном выполнении хорошо работает.

Какие-либо идеи?

5
задан 4 January 2020 в 16:58

2 ответа

Можно отключить звук звука, прежде чем приостановят путем создания systemd сервис.

  • Первый, удостоверьтесь, что Ваш сценарий является исполняемым файлом:

    chmod u+x /path/to/your/script.sh
    
  • Затем создайте systemd сервис, который запускает Ваш скрипт путем выполнения:

    sudo nano /etc/systemd/system/mute_before_sleep.service
    
  • В nano окно вводят следующее:

    [Unit]
    Description=Mute sound before suspend
    Before=suspend.target
    
    [Service]
    ExecStart=/path/to/your/script.sh
    User=<your_username>
    Environment=DISPLAY=:0
    
    [Install]
    WantedBy=suspend.target
    

    В ExecStart= вводят путь к Вашему сценарию, и в User= вводят Ваше имя пользователя.

  • Сохраняют и закрываются nano путем нажатия Ctrl + O и затем Ctrl + X .

  • Наконец, включите сервис:

    sudo systemctl enable mute_before_sleep.service
    
1
ответ дан 4 January 2020 в 19:48

TL; DR: среда excution отличается, следовательно amixer команда возвращает ошибку

, сценарий, кажется, называют при приостановке, поскольку новые строки добавляются в "тестовый" файл

Да, это работает, но я протестировал сценарий и amixer, команда возвращает ошибку (рассмотренный с sudo journalctl -b -u systemd-suspend.service):

Jan 04 18:46:49 administrator-PC systemd-sleep[12969]: ALSA lib control.c:1373:(snd_ctl_open_noupdate) Invalid CTL pulse
Jan 04 18:46:49 administrator-PC systemd-sleep[12969]: amixer: Mixer attach pulse error: No such file or directory

проблема, кажется, -D pulse часть. Но более простые работы команды amixer -q set Master mute. После резюме моему ноутбуку отключили звук объема, ошибка больше не появляется.

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

Да, сценарий работает дважды - после того как на приостанавливают и однажды на резюме; скрипты, запущенные с двумя позиционными параметрами на [1 111] systemd-сон (8) и статья Arch Wiki. Полный сценарий, который я использовал, упоминается ниже (примечание, части, которые звонят echo и date, не особенно релевантны и были для отладки только; они могут быть безопасно удалены из сценария):

#!/bin/sh

# this will go into journalctl log
echo SUSPEND SCRIPT STARTED
case $1/$2 in
  pre/*) amixer -q set Master mute; { echo Suspending; date >> /suspend_log.txt;}  ;;  
  post/*) { echo "Waking up from $2..."; date;} >> /suspend_log.txt ;;
  *) echo foobar;;
esac

Что касается причины, почему исходные amixer управляют работами при выполнении ее вручную, вероятно, основы от того, что, когда systemd запускает скрипт, нет никакого DISPLAY переменная, существующая в среде. В отличие от этого, при использовании эмулятора терминала GUI, переменная присутствует, следовательно исходные работы команды. Исходная команда может быть адаптирована для использования переменной среды через [1 121]

DISPLAY=:0 amixer -q -D pulse sset Master mute

, но я все еще рекомендовал бы использовать amixer -q set Master mute в качестве независимой от среды команды.

1
ответ дан 4 January 2020 в 19:48

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

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