每个应用程序透明度

来自 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 的几何符号一起添加。

随 X 启动

只需将以下内容放在您的 X 启动脚本(即 ~/.xinitrc)中,即可加载每个应用程序的窗口透明度

xcompmgr &
devilspie -a &

高级配置

devilspie 配置文件的完整文档.

或者,gdevilspieAURdevilspie 的 GUI 配置编辑器。