快轉到主要內容

蝦密?Linux系統竟然有開關機音效

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Linux使用技巧
標籤   GNOME KDE Plasma Freedesktop Specifications
目錄

Siánn-mih?Linux系統竟然有開關機音效(startup sound)?

視乎不同Linux發行版,可能會有不同的開機音效。

例如Ubuntu,在10年前的Unity桌面時代有開機音效,後來的版本就不見了。

現在,你只會在初次安裝Ubuntu的時候聽到登~登~的開機音效,真正裝好系統之後開機是沒有聲音的。

沒關係,你還是可以把他們加回來。

這篇文章Ivon將解說如何開啟Linux桌面的開機以及關機音效。

1. 啟用桌面環境內建的開機音效
#

Linux的開機音效是由桌面環境負責播放的,像是KDE Plasma和GNOME。嚴格來說,這些「開機」音效是在登入桌面後才播放,而不是載入登入界面(Display Manager)前就播放,所以稱為「登入音效」比較正確。

KDE Plasma
#

KDE Plasma的音效檔案位於/usr/share/sounds/。KDE Plasma的音效主要來自於KDE主題包,例如KDE Plasma 5有「Oxygen」音效包,KDE Plasma 6則是「Ocean」音效包。

  1. KDE Plasma 6以上版本,開啟系統設定 → 通知 → 系統通知

  2. 點選「登入」和「登出」,啟用播放音效。這裡的音效可以自訂要播放的檔案。

GNOME
#

相較KDE Plasma,GNOME的開關機音效很難設定。

GNOME桌面的音效位於/usr/share/sounds/gnome/。目前GNOME 48內建的Adwaita主題只有警告音效,需要依賴其他主題提供開機音效。比如freedesktop-theme主題,或者Ubuntu的yaru-theme主題(其他發行版多半也有這個套件)。

GNOME可以透過Libcanberra抽象層來播放開關機音效,它遵守XDG Sound Theme的音效規範,所以不一定要寫死音效檔路徑。

  1. Fedora的GNOME桌面應該已安裝libcanberra套件,所以會一併提供libcanberra的Systemd服務。編輯登入音效服務:
sudo vim /usr/lib/systemd/system/canberra-system-bootup.service

如果該檔案不存在,就參考Github範本自行新增。

  1. 確認ConditionPathExists=後面的登入音效路徑是否正確
ConditionPathExists=/usr/share/sounds/freedesktop/stereo/service-login.oga
  1. 同理,編輯/usr/lib/systemd/system/canberra-system-bootup.service,確認登出音效路徑是否正確。

  2. 啟用登入與登出音效服務。

sudo systemctl daemon-reload

sudo systemctl enable canberra-system-bootup.service

sudo systemctl enable canberra-system-shutdown.service

另一種設定登入音效的方法是使用/usr/bin/canberra-gtk-play,似乎只對Ubuntu的GNOME有效。

  1. 在Ubuntu應用程式列表找到「初始啟動程式」

  2. 新增自動啟動程式,新增登入音效,指令為/usr/bin/canberra-gtk-play --id="desktop-login" --description="GNOME Login"

2. 使用Systemd服務播放登入音效
#

這是更通用的方法。

桌面環境沒提供設定界面的話,就只能搭配播放軟體,在使用者登入桌面的時候播放開機音效了。Linux發行版多半有提供paplaycanberra-gtk-play程式,它不需要圖形界面也能播放/usr/share/sounds/的音效。善用這個程式,你還可以寫一個指令稿,隨機播放登入音效。

  1. 此處使用Systemd user unit播放開機音效。新增使用者Systemd服務,啟用開機登入音效(我暫時找不到新增登出音效的作法)
vim ~/.config/systemd/user/login-sound.service
  1. 填入以下內容,將服務的啟動條件設定為等待sound.target,也就是PipeWire之類的音效伺服器載入才播放。ExecStart=後面是播放Yaru的desktop-login音效
[Unit]
Name=Play Login Sound
After=sound.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/paplay /usr/share/sounds/Yaru/stereo/desktop-login.oga

[Install]
WantedBy=default.target
  1. 啟用服務,接著重開機。它是一按下登入鍵就播放音效,而不是等桌面動畫載入完成才播放,並且只會播放一次。
systemctl --user daemon-reload

systemctl --user enable login-sound.service

參考資料
#

相關文章

什麼是.desktop檔案?Linux桌面Desktop Entry用途解說
分類   Linux系統 Linux使用技巧
標籤   Freedesktop Specifications GNOME KDE Plasma
如何修改Linux開啟檔案的預設程式 (XDG MIME Applications)
分類   Linux系統 Linux使用技巧
標籤   Freedesktop Specifications GNOME KDE Plasma
Linux桌面如何啟用深色模式 & 自動切換深色桌布 & 開啟夜間光線
分類   Linux系統 Linux使用技巧
標籤   Linux GNOME KDE Plasma

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。