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

我是毛玻璃的忠实粉丝,非常喜欢windows和mac os的毛玻璃效果,但平时用的比较多的是deepin(一个国内公司开发的Linux发型版)所以一直在寻找有没有办法让deepin也用上这种毛玻璃效果。现在,我找到了,来看看效果叭!

毛玻璃版Steam
毛玻璃版网易云
毛玻璃版VS CODE

想要实现这个效果,需要安装devilspie,这是一个不提供GUI的小工具,这个工具可以在窗口创建时检测并匹配出符合规则的窗口,并执行针对该窗口的一系列动作。(具体请看官方文档)

这里我使用apt来安装它

sudo apt install devilspie

mkdir -p ~/.devilspie

nano ~/.devilspie/transparent.ds

然后在终端中运行

xprop | grep 'CLASS'

用鼠标点选需要应用毛玻璃效果的窗口,取得窗口的CLASS值,然后修改刚刚创建的配置文件(这里我使用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进制数字,你可以在你的脚本中使用百分比,像这样:

( 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提供的更高级的毛玻璃透明效果:

(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) "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

你可能感兴趣的:(在Linux如何使用堪比macos的窗口毛玻璃效果?)