重開電腦才發現 WSLg 終於下放給 Win 10 使用了(見 microsoft devblogs 文章),之前要跑 cypress 還要用 VcXsrv 搞個 X server 實在辛苦,我也是 Windows 支持者卻要受這等待遇。
那麼終於能用 Vim 的 sound_playfile('我的酷音效.wav')
了嗎?
(自從 patch 8.1.1502 已經等了三年)
結果是可以發聲,但功能很有限。 我……很失望。
Vim help 舉的例子是播放 ubuntu 的系統音效,位置在 /usr/share/sounds/freedesktop/stereo
,下面程式碼最後是能動的:
call sound_playfile('/usr/share/sounds/freedesktop/stereo/bell.oga') call sound_playevent('bell')
但首先會遇上 wslg/issue #864,因為 WSLg 是在 PulseAudio 做整合而沒有打理 ALSA 底層,而 Vim +sound
看起來是跟 ALSA 溝通,所以會遇到沒有音效卡之類的問題:
解法如 issue 說的裝 libasound2 然後在 ~/.asoundrc
加入
pcm.default pulse ctl.default pulse
重開 WSL 就能播放這兩個聲音了。
然而繼續試下去,發現只能播這些聲音啊,餵它別的音檔路徑是沒反應的。
原因應該是 +sound
在 ubuntu 的實作是基於 libcanberra,看它介紹是處理桌面音效的,所以不是系統主題的聲音,我可是不播的喔?
總之最後就放棄了,改用 PulseAudio 的 pactl,這個至少還堪用。
pactl upload-sample {PATH_TO_AUDIO_FILE} {SOME_ID} pactl play-sample {SOME_ID}
有 0 個意見
☂