Как возвратить звук барабана в Ubuntu 17.10, когда система готова к пользователю войти в систему

В Ubuntu 16.04, когда я включил свой компьютер, звук барабана будет играться прямо, прежде чем мне подарили интерфейс Login. После того, как я обновил до Ubuntu 17.10, звук барабана больше не играется. Я провел некоторое исследование в сети и попробовал следующее, которое позволило звуку барабана играться, но только после того, как я вошел в систему.

Я запустил Предпочтения Приложений Запуска и добавил объект, который содержал следующее.

/usr/bin/canberra-gtk-play --id="desktop-login" -f /usr/share/sounds/ubuntu/stereo/system-ready.ogg

Но это только позволило звуку играться после того, как я уже вошел в систему.

Я также попробовал

/usr/bin/canberra-gtk-play --id="system-ready" -f /usr/share/sounds/ubuntu/stereo/system-ready.ogg

Но это имело тот же эффект как другая попытка; звук барабана играл только после того, как я вошел в систему.

Таким образом, я спрашиваю, нашел ли кто-либо способ позволить звуку барабана играть, прежде чем пользователь вошел в систему, когда пользователю дарят диалоговое окно входа в систему.

Я также попробовал - идентификатор = "системная начальная загрузка", которая должна была поднять звук барабана намного ранее. Но даже с той установкой, звук барабана не игрался, пока я не вошел в систему.

12
задан 26 June 2018 в 13:22

1 ответ

Вот способ использовать systemd пользовательскую единицу, работающую из корневого каталога gdm пользователя.

  • Сохраните следующий файл как /var/lib/gdm3/.config/systemd/user/drumroll.service:

    [Unit]
    Description=Drumroll
    Requires=pulseaudio.socket
    After=systemd-user-sessions.service
    
    [Service]
    Type=simple
    Restart=no
    ExecStart=/usr/bin/paplay /usr/share/sounds/ubuntu/stereo/system-ready.ogg
    
    [Install]
    WantedBy=default.target
    

Вышеупомянутое systemd единица должно удостовериться, что pulseaudio был запущен в gdm пользовательском контексте и выполняется paplay команда (я не попробовал canberra-gtk-play, но я думал бы, что это работает также).

After=systemd-user-sessions.service заставит сервис запуститься только после того, как система будет готова к пользовательским логинам. (см. http://manpages.ubuntu.com/manpages/artful/man8/systemd-user-sessions.service.8.html),

  • Затем выполнитесь:

    $ sudo mkdir -p /var/lib/gdm3/.config/systemd/user/default.target.wants
    $ sudo ln -s /var/lib/gdm3/.config/systemd/user/drumroll.service /var/lib/gdm3/.config/systemd/user/default.target.wants/drumroll.service
    $ sudo chown gdm:gdm /var/lib/gdm3/.config/systemd/user/{drumroll.service,default.target.wants}
    

Те последние команды заставляют единицу запуститься автоматически, когда systemd сессия gdm пользователя запускается.

  • Перезагрузка для тестирования.

Проверять ошибки немного хитро, потому что systemctl имеет ограничение для соединения или с системной сессией или с сессией вызывающего абонента. Для создания gdm, вызывающий абонент легок с sudo, но некоторая среда должна быть настроена, чтобы позволить соединиться с ее systemd сеансом пользователя:

$ sudo -u gdm XDG_RUNTIME_DIR="/run/user/$(id -u gdm)" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status drumroll
● drumroll.service - Drumroll
   Loaded: loaded (/var/lib/gdm3/.config/systemd/user/drumroll.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2018-06-26 23:35:05 CEST; 36min ago
  Process: 1238 ExecStart=/usr/bin/paplay /usr/share/sounds/ubuntu/stereo/system-ready.ogg (code=exited, status=0/SUCCES
 Main PID: 1238 (code=exited, status=0/SUCCESS)

Я не попробовал это 17,10, но 18.04, но я не вижу оснований, они не работали бы также над 17,10.

11
ответ дан 23 November 2019 в 03:42

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

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