Как заставить pulseaudio автоматически запускаться в Ubuntu 17.04 и 17.10 для Firefox?

Я пытаюсь получить Firefox 56.0 на Ubuntu 17.04 и 17.10, чтобы воспроизводить звук в видео в Facebook (даже не уверен, что он специфичен для Facebook). Я изолировал проблему до пульсаудио, которую не запускал, когда я воспроизвожу видео, или просто не начал вообще. Но если я исполняю pulseaudio из командной строки, а затем воспроизвожу видео из Facebook, я получаю звук.

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

Во время загрузки? В момент запуска X11 перед входом пользователя? При входе пользователя («приветливая» вещь, GDM или что-то еще)? Firefox, когда он выполняет код в какой-то общей библиотеке, которая требует, чтобы запуск пульсаудился

https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/, подразумевает, что это должно быть во время входа пользователя.

/ etc / xdg / autostart - это каталог, содержащий информацию о сеансовых службах, которые графические диспетчеры сеансов должны запускаться автоматически при входе пользователя в систему. PulseAudio отправляет там свой собственный файл. pulseaudio.desktop сообщает диспетчеру сеанса запуска start-pulseaudio-x11, который представляет собой скрипт, который загружает несколько связанных с X11 модулей (а также в KDE также модуль-устройство-менеджер, что требуется средствами настройки маршрутизации звука KDE). start-pulseaudio-x11 обычно является первым, что требует работающего сервера PulseAudio, поэтому обычно сервер запускается, когда менеджер сеансов запускает start-pulseaudio-x11 в начале сеанса входа в систему. Если автозапуск отключен, start-pulseaudio-x11 не действует, потому что start-pulseaudio-x11 не запускает сервер явно. Он использует автозапуск, когда он загружает модули X11. В этом смысле имя сценария вводит в заблуждение. Сценарий start-pulseaudio-x11 использовался для запуска сервера явно в прошлом, что объясняет имя сценария.

Команды, которые я сделал недавно, чтобы убедиться, что я начинаю с хорошей базовой линии, в соответствии с инструкциями в https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running / (было сделано по разным причинам, так как передний аудиоразъем на моей машине не работал и выполнял следующие исправления):

rm -r ~/.config/pulse sudo apt install --reinstall alsa-base alsa-utils pulseaudio linux-sound-base libasound2

Я сейчас не думаю, что Отсутствует каталог ~/.config/pulse, но это?

dmesg | grep pulse

ничего не показывает, так что если что-то даже не выполняет правильный скрипт в нужное время.

Что мне нужно изменить, чтобы включить это? Я не хочу вручную вызывать pulseaudio каждый раз, когда запускаю firefox (я могу клонировать что-то по-скриптски, но я не хочу).

Я пришел к выводу, что автозапуск включен, поскольку он (при условии, что комментарий прокомментирован, означает, что сообщение указано по умолчанию):

drunkard@norehab:~$ ps -ef --forest --cols=10000 | grep pulse drunkard 3448 2721 0 14:25 pts/0 00:00:00 | \_ grep pulse drunkard@norehab:~$ ls -ld ~/.config/pulse ls: cannot access '/home/drunkard/.config/pulse': No such file or directory drunkard@norehab:~$ ls -ld /etc/xdg/autostart/pulseaudio-kde.desktop ls: cannot access '/etc/xdg/autostart/pulseaudio-kde.desktop': No such file or directory drunkard@norehab:~$ ls -ld /etc/xdg/autostart/pulseaudio* -rw-r--r-- 1 root root 4836 Mar 29 2017 /etc/xdg/autostart/pulseaudio.desktop drunkard@norehab:~$ grep auto /etc/pulse/client.conf ; autospawn = yes ; auto-connect-localhost = no ; auto-connect-display = no drunkard@norehab:~$

UPDATE # 1

Я пробовал это:

cp -p /etc/pulse/client.conf ~/.config/pulse/client.conf

И перезагрузился, и он все еще не запускается автоматически.

UPDATE # 2

Следующее доказывает мне, что /usr/bin/start-pulseaudio-x11 - IS , выполняющийся при все:

Я сэкономил /usr/bin/start-pulseaudio-x11:

drunkard@norehab:~$ sudo cp -p /usr/bin/start-pulseaudio-x11 /usr/bin/start-pulseaudio-x11.orig

Затем добавила строку в конце, которая просто записывает текущую временную метку в файл журнала в /tmp/start-pulseaudio-x11.log: [ ! d26] drunkard@norehab:~$ sudo sh -c 'echo "date >> /tmp/start-pulseaudio-x11.log" >> /usr/bin/start-pulseaudio-x11' drunkard@norehab:~$ tail /usr/bin/start-pulseaudio-x11 if [ x"$KDE_FULL_SESSION" = x"true" ]; then /usr/bin/pactl load-module module-device-manager "do_routing=1" > /dev/null fi if [ x"$SESSION_MANAGER" != x ] ; then /usr/bin/pactl load-module module-x11-xsmp "display=$DISPLAY session_manager=$SESSION_MANAGER" > /dev/null fi fi date >> /tmp/start-pulseaudio-x11.log drunkard@norehab:~$

Затем перезагрузитесь и войдите в систему и обнаружите, что /tmp/start-pulseaudio-x11.log не существует.

Итак, все, что предполагается вызывать /usr/bin/start-pulseaudio-x11 до или после входа в систему, не делает этого .

UPDATE # 3

Это все еще нарушено в Ubuntu 17.10. но комментарий подсказывал мне, что мой метод обхода может использовать systemctl вместо прямого выполнения.

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

0
задан 4 February 2018 в 21:01

3 ответа

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

У меня есть сценарий, который я запускаю при запуске с помощью загрузочных приложений, показанных в этом ответе: https://unix.stackexchange.com/a/32616/21372, поэтому в этом скрипте я добавил:

# Start pulseaudio because something got broken in Ubuntu or Firefox
# or PulseAudio or or
# or... (https://askubuntu.com/questions/962920/how-do-i-get-pulseaudio-to-start-automatically-in-ubuntu-17-04-for-firefox):
if ! pulseaudio --check
then
  # But not via the old way:
  #
  #   nohup pulseaudio > /dev/null 2>&1 &
  #
  # Use the proper way to enable this at login time per https://askubuntu.com/a/989674/340383
  systemctl --user enable pulseaudio && systemctl --user start pulseaudio
fi

Это проверяет,

UPDATE # 1:

Я немного изменил обходной путь, чтобы использовать systemctl, чтобы запустить процесс pulseaudio с параметром --check, и если он не запущен, команды, как указано в https://unix.stackexchange.com/a/32616/21372

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

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

Контр-аргумент: так как вызовы systemctl будут соответственно обновлять файлы ~ / .config (это из приведенной выше командной строки systemctl...):

Created symlink /home/drunkard/.config/systemd/user/default.target.wants/pulseaudio.service → /usr/lib/systemd/user/pulseaudio.service.
Created symlink /home/drunkard/.config/systemd/user/sockets.target.wants/pulseaudio.socket → /usr/lib/systemd/user/pulseaudio.socket.

, а затем при следующей переустановке Ubuntu, он должен просто работать правильно. Но это только в том случае, если я сохранил файлы ~ / .config, которые не являются хорошим предположением: я сохраняю все (за исключением файлов в глубине ~ / .config!) Моих файлов конфигурации пользователя в репозитории Git именно по этой причине из-за необходимости обходить проблемы удобства использования, которые в конечном итоге так же тратят много времени на отладку до основной причины, которую я не хочу делать больше одного раза.

0
ответ дан 22 May 2018 в 17:45

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

У меня есть сценарий, который я запускаю при запуске с помощью загрузочных приложений, показанных в этом ответе: https://unix.stackexchange.com/a/32616/21372, поэтому в этом скрипте я добавил:

# Start pulseaudio because something got broken in Ubuntu or Firefox # or PulseAudio or or # or... (https://askubuntu.com/questions/962920/how-do-i-get-pulseaudio-to-start-automatically-in-ubuntu-17-04-for-firefox): if ! pulseaudio --check then # But not via the old way: # # nohup pulseaudio > /dev/null 2>&1 & # # Use the proper way to enable this at login time per https://askubuntu.com/a/989674/340383 systemctl --user enable pulseaudio && systemctl --user start pulseaudio fi

Это проверяет,

UPDATE # 1:

Я немного изменил обходной путь, чтобы использовать systemctl, чтобы запустить процесс pulseaudio с параметром --check, и если он не запущен, команды, как указано в https://unix.stackexchange.com/a/32616/21372

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

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

Контр-аргумент: так как вызовы systemctl будут соответственно обновлять файлы ~ / .config (это из приведенной выше командной строки systemctl...):

Created symlink /home/drunkard/.config/systemd/user/default.target.wants/pulseaudio.service → /usr/lib/systemd/user/pulseaudio.service. Created symlink /home/drunkard/.config/systemd/user/sockets.target.wants/pulseaudio.socket → /usr/lib/systemd/user/pulseaudio.socket.

, а затем при следующей переустановке Ubuntu, он должен просто работать правильно. Но это только в том случае, если я сохранил файлы ~ / .config, которые не являются хорошим предположением: я сохраняю все (за исключением файлов в глубине ~ / .config!) Моих файлов конфигурации пользователя в репозитории Git именно по этой причине из-за необходимости обходить проблемы удобства использования, которые в конечном итоге так же тратят много времени на отладку до основной причины, которую я не хочу делать больше одного раза.

0
ответ дан 18 July 2018 в 05:37

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

У меня есть сценарий, который я запускаю при запуске с помощью загрузочных приложений, показанных в этом ответе: https://unix.stackexchange.com/a/32616/21372, поэтому в этом скрипте я добавил:

# Start pulseaudio because something got broken in Ubuntu or Firefox # or PulseAudio or or # or... (https://askubuntu.com/questions/962920/how-do-i-get-pulseaudio-to-start-automatically-in-ubuntu-17-04-for-firefox): if ! pulseaudio --check then # But not via the old way: # # nohup pulseaudio > /dev/null 2>&1 & # # Use the proper way to enable this at login time per https://askubuntu.com/a/989674/340383 systemctl --user enable pulseaudio && systemctl --user start pulseaudio fi

Это проверяет,

UPDATE # 1:

Я немного изменил обходной путь, чтобы использовать systemctl, чтобы запустить процесс pulseaudio с параметром --check, и если он не запущен, команды, как указано в https://unix.stackexchange.com/a/32616/21372

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

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

Контр-аргумент: так как вызовы systemctl будут соответственно обновлять файлы ~ / .config (это из приведенной выше командной строки systemctl...):

Created symlink /home/drunkard/.config/systemd/user/default.target.wants/pulseaudio.service → /usr/lib/systemd/user/pulseaudio.service. Created symlink /home/drunkard/.config/systemd/user/sockets.target.wants/pulseaudio.socket → /usr/lib/systemd/user/pulseaudio.socket.

, а затем при следующей переустановке Ubuntu, он должен просто работать правильно. Но это только в том случае, если я сохранил файлы ~ / .config, которые не являются хорошим предположением: я сохраняю все (за исключением файлов в глубине ~ / .config!) Моих файлов конфигурации пользователя в репозитории Git именно по этой причине из-за необходимости обходить проблемы удобства использования, которые в конечном итоге так же тратят много времени на отладку до основной причины, которую я не хочу делать больше одного раза.

0
ответ дан 24 July 2018 в 18:23

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

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