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

在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-56ibdev.to
Projects/DevilsPie - GNOME Wiki!wiki.gnome.org

发布于 06-27

文章被以下专栏收录