跳转至内容

逐应用透明度

来自 ArchWiki

遵循 xterm 自动透明度指南,只需使用 xcompmgr或任何其他合成器,以及 transset-dfAURxorg-transsetAUR 之一,即可实现逐应用窗口透明度。只需将 xterm 替换为您的程序名称,将 transset-df 替换为您的 transset 选择即可。

xterm & sleep .8s && transset-df -a

对于 Openbox 的键/鼠标绑定,请在您的 rc.xml 中使用此配置。

<execute>sh -c 'xterm & sleep .8s && transset-df -a'</execute>

本文档详细介绍了如何自动实现应用程序级别的透明度。

虽然透明度无疑能让您的桌面看起来更漂亮,但它也有一些实际用途。特别是对于终端和文本编辑器。在复制代码片段或阅读手册时,可以考虑为其添加一些透明度。但是,对于浏览器或图片查看器之类的应用,透明度可能会分散注意力。

通常,您可以选择使用 xcompmgr 使所有窗口透明,或者为支持原生透明度的应用程序(例如 urxvt)设置某些特殊窗口的透明度。此外,还有许多关于如何使用 transset-df 为单个窗口设置透明度的教程,但这需要您手动为每个打开的窗口设置透明度。

然而,将 devilspie 加入进来,将允许您自动实现逐应用透明度。

安装

首先,您需要确保已安装 xcompmgrtransset-dfAURdevilspie。安装完成后,运行 xcompmgr(如果您尚未运行)。

$ xcompmgr &
注意 您无需为其传递任何参数,但如果您需要其他效果,请参阅 Xcompmgr 页面。或者,也可以使用 其他合成器transset-dfAUR 也可以被 xorg-transsetAUR 替换。

配置

现在您已安装了所需软件,我们需要配置 devilspie。本质上,devilspie 是一个窗口匹配实用程序。它作为一个守护进程运行,允许您指定规则来匹配特定窗口,然后执行某个命令(通常与该窗口相关),这非常类似于 Openbox 的 rc.xml,但 Openbox 本身在这个场景下并没有我们需要的强大功能。

首先,在 ~/.devilspie 中创建一个 opacity.ds 文件(如果该目录不存在,请创建它)。

$ mkdir -p ~/.devilspie
$ cd ~/.devilspie
$ touch opacity.ds

现在,在您的 opacity.ds 文件中放入类似以下内容:

( if
( contains ( window_class ) "Gvim" )
( begin
( spawn_async (str "transset-df -i " (window_xid) " 0.85" ))
)
)

如您所见,该规则检查 window_class 是否包含字符串 "Gvim"。如果包含,它将使用 transset-df 工具执行命令,将不透明度降低到 0.85。(任何介于 0 到 1 之间的值都是有效的——前者完全透明,后者完全不透明。)这里的关键是 window_xid 变量的可用性,从而实现了 devilspie 在此示例中的强大功能。

查找窗口

这里的另一个技巧是知道如何匹配所需的窗口。有时您可能更愿意使用 application_name 而不是匹配 window_class。这取决于 devilspie 读取窗口信息的方式。要查看如何识别您的窗口,请在终端中运行此命令:

$ devilspie -a

然后启动您想要的应用程序。终端应输出一些标识信息,您可以在 opacity.ds 文件中使用。或者,您也可以使用 xprop。

匹配不同应用程序

虽然这只会使 GVim 透明,但您可能希望对更多应用程序执行此操作。这是一个配置示例,可以使所有 GVim、Mirage 和 Chromium 窗口透明。(从这个例子中,添加更多窗口应该是显而易见的。)

( if
( or
( contains ( window_class ) "Gvim" )
( contains ( application_name ) "mirage" )
( contains ( application_name ) "chrome" )
)
( begin
( spawn_async (str "transset-df -i " (window_xid) " 0.85" ))
)
)

在后台运行

在某些情况下,希望将某个应用程序(特别是终端)设置为后台透明窗口。

要实现此效果,请将以下内容添加到您的配置中:

~/.devilspie/opacity.ds
...
(begin
(stick)
(below)
(undecorate)
(skip_pager)
(skip_tasklist)
(wintype "dock")
...

可选地,特定的逐应用设置——例如隐藏菜单栏或定义特定几何尺寸——将需要通过应用程序配置来指定,或者使用 devilspie 的 geometry 符号来添加。

随 X 启动

只需将以下内容放入您的 X 启动脚本(例如 ~/.xinitrc)中,即可实现逐应用窗口透明度加载:

xcompmgr &
devilspie -a &

高级配置

devilspie 配置文件详尽文档.

或者,gdevilspieAURdevilspie 的图形配置编辑器。