我是毛玻璃的忠實(shí)粉絲,非常喜歡windows和mac os的毛玻璃效果,但平時(shí)用的比較多的是deepin(一個(gè)國(guó)內(nèi)公司開發(fā)的Linux發(fā)型版)所以一直在尋找有沒有辦法讓deepin也用上這種毛玻璃效果?,F(xiàn)在,我找到了,來看看效果叭!



想要實(shí)現(xiàn)這個(gè)效果,需要安裝devilspie,這是一個(gè)不提供GUI的小工具,這個(gè)工具可以在窗口創(chuàng)建時(shí)檢測(cè)并匹配出符合規(guī)則的窗口,并執(zhí)行針對(duì)該窗口的一系列動(dòng)作。(具體請(qǐng)看官方文檔)
這里我使用apt來安裝它
sudo apt install devilspie
mkdir -p ~/.devilspie
nano ~/.devilspie/transparent.ds
然后在終端中運(yùn)行
xprop | grep 'CLASS'
用鼠標(biāo)點(diǎn)選需要應(yīng)用毛玻璃效果的窗口,取得窗口的CLASS值,然后修改剛剛創(chuàng)建的配置文件(這里我使用nano)
nano ~/.devilspie/transparent.ds
在配置文件中填入配置代碼
( if
( contains ( window_class ) "Code" )
( begin
( spawn_async (str "xprop -id " (window_xid) " -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY 0xdfffffff") )
)
)
將代碼第二行的Code改成你的窗口CLASS值,代碼中的0xdfffffff是透明度。如果你不想使用16進(jìn)制數(shù)字,你可以在你的腳本中使用百分比,像這樣:
( if
( contains ( window_class ) "Code" )
( begin
( spawn_async (str "xprop -id " (window_xid) " -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY $(printf 0x%x $((0xffffffff * 87 / 100)))") )
)
)
如果你使用KDE桌面或者deepin的dde-kwin窗口管理器,你可以啟用KDE提供的更高級(jí)的毛玻璃透明效果:
(if (contains (window_class) "Code")
? ? (begin
? ? ? ? (spawn_async (str "xprop -id " (window_xid) " -f _KDE_NET_WM_BLUR_BEHIND_REGION 32c -set _KDE_NET_WM_BLUR_BEHIND_REGION 0 "))
? ? ? ? (spawn_async (str "xprop -id " (window_xid) " -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY 0xdfffffff"))
? ? )
)
如果你有兩個(gè)及以上的窗口需要啟用毛玻璃效果,你可這么寫:
(
? ? if (contains (window_class) "Code")
? ? ? ? (begin
? ? ? ? ? ? (spawn_async (str "xprop -id " (window_xid) " -f _KDE_NET_WM_BLUR_BEHIND_REGION 32c -set _KDE_NET_WM_BLUR_BEHIND_REGION 0 "))
? ? ? ? ? ? (spawn_async (str "xprop -id " (window_xid) " -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY 0xdfffffff"))
? ? ? ? )
? ? if (contains (window_class) "netease-cloud-music")
? ? ? ? (begin
? ? ? ? ? ? (spawn_async (str "xprop -id " (window_xid) " -f _KDE_NET_WM_BLUR_BEHIND_REGION 32c -set _KDE_NET_WM_BLUR_BEHIND_REGION 0 "))
? ? ? ? ? ? (spawn_async (str "xprop -id " (window_xid) " -f _NET_WM_WINDOW_OPACITY 32c -set _NET_WM_WINDOW_OPACITY 0xdfffffff"))
? ? ? ? )
)
本文代碼參考:
https://dev.to/emmanuelnk/how-to-be-cool-and-make-vscode-transparent-56ib
https://wiki.gnome.org/action/show/Projects/DevilsPie?action=show&redirect=DevilsPie