![当系统准备好让用户登录时,如何在 Ubuntu 17.10 中恢复鼓声](https://linux22.com/image/897119/%E5%BD%93%E7%B3%BB%E7%BB%9F%E5%87%86%E5%A4%87%E5%A5%BD%E8%AE%A9%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%2017.10%20%E4%B8%AD%E6%81%A2%E5%A4%8D%E9%BC%93%E5%A3%B0.png)
在 Ubuntu 16.04 中,当我打开电脑时,在进入登录界面之前会播放鼓声。升级到 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
但这次尝试的效果与上次相同;只有在我登录后才会播放鼓声。
因此,我想问是否有人找到了一种方法,可以在用户登录之前、当用户看到登录对话框时播放鼓声。
我还尝试了 --id="system-bootup",它应该可以更早地播放鼓声。但即使这样设置,鼓声直到我登录后才播放。
答案1
这是使用从 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 单元应确保 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}
最后这些命令使得该单元在 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 上不能很好地运行的原因。