在Linux如何使用堪比macos的窗口毛玻璃效果?

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

毛玻璃版Steam
毛玻璃版網(wǎng)易云
毛玻璃版VS CODE

想要實(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容