影子叩

搜索
夜间模式◐

在Linux如何使用堪比macos的窗口毛玻璃效果?
[工作效率] · summer · 发布于 · 2020-06-27 · 746 次点击 · 复制地址

倔强青铜Ⅱ   summer  · 2020-06-27 09:24:48 · 显示全部楼层 · 阅读
我是毛玻璃的忠实粉丝,非常喜欢windowsmac os的毛玻璃效果,但平时用的比较多的是deepin(一个国内公司开发的linux发型版)所以一直在寻找有没有办法让deepin也用上这种毛玻璃效果。现在,我找到了,来看看效果叭!
10305138-6c4aef68cb08d865.jpeg
10305138-36e0c986a55dd4f7.jpeg
10305138-ed6ae9ddee5aa021.jpeg
想要实现这个效果,需要安装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"))

            )

    )


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表