跳转至内容

针对单个应用程序的透明度

来自 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,你就可以自动实现针对单个应用程序的透明度。

安装

首先,你需要确保安装了 xcompmgr, transset-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 的图形界面配置编辑器。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.