web-dev-qa-db-ja.com

システムがユーザーがログインできる状態になっているときにUbuntu 17.10でドラムロールサウンドを元に戻す方法

Ubuntu 16.04では、コンピューターの電源を入れると、ログインインターフェイスが表示される直前にドラムロールサウンドが再生されました。 Ubuntu 17.10にアップグレードした後、ドラムロールサウンドが再生されなくなりました。私はウェブ上でいくつかの調査を行い、次のことを試しました。これにより、ドラムロールサウンドを再生できるようになりましたが、ログインしてからのみです。

Startup Applications Preferencesを起動し、以下を含むアイテムを追加しました。

/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

しかし、それは他の試みと同じ効果がありました。ドラムロールサウンドは、ログインしてから再生されました。

だから、ユーザーにログインダイアログが表示されたときに、ユーザーがログインする前にドラムロールサウンドを再生できるようにする方法を誰かが見つけたかどうかを尋ねています。

--id = "system-bootup"も試してみました。これにより、ドラムロールサウンドがずっと早く表示されるはずです。しかし、その設定を使用しても、ログインするまでドラムロールの音は再生されませんでした。

12
Richard Fuhr

Gdmユーザーのホームディレクトリから実行されるsystemdユーザーユニットを使用する方法を次に示します。

  • 次のファイルを/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ユニットは、gdmユーザーコンテキストでpulseaudioが開始されていることを確認し、 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}
    

これらの最後のコマンドは、gdmユーザーのsystemdセッションが開始されたときにユニットを自動的に開始します。

  • 再起動してテストします。

Systemctlには、システムセッションまたは呼び出しユーザーのセッションに接続する制限があるため、エラーをチェックするのは少し難しいです。 Sudoを使用してgdmを呼び出すユーザーを簡単にするには、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
Sebastian Stark