5 个版本
0.1.7 | 2022 年 6 月 6 日 |
---|---|
0.1.5 | 2021 年 6 月 9 日 |
0.1.4 | 2021 年 5 月 31 日 |
0.1.3 | 2021 年 5 月 31 日 |
0.1.0 | 2021 年 5 月 31 日 |
#10 in #mask
13KB
182 行
xbgdump
xbgdump
是一个简单的工具,可以将当前 X11 背景导出到图像文件。
您可以使用它像 xbgdump file.png
或 xbgdump -
一样,将数据发送到 stdout。默认情况下,它将数据写入当前目录下的 bg.png
文件。出于效率考虑,发送到 stdout 的数据以 PAM 格式编码而不是 PNG。除了速度上的提升外,这在使用 ImageMagick 或类似工具进行管道传输时不应有任何区别。
当给定 -m
(或 --mask
)标志时,xbgdump
将使用 RandR 查询当前屏幕布局,并通过透明度屏蔽屏幕外的区域。有关详细信息,请参阅 xbgdump --h
的帮助信息。
目前只支持 PNG 和 PAM,但从理论上讲,很容易将其扩展到支持 image-rs 支持的所有格式。
动机
我制作这个工具是因为我使用 nitrogen 和 i3lock 作为我的屏幕锁。我想为我锁屏创建一个模糊的背景,但 i3lock 只接受单个图像,我没有,因为 nitrogen 会即时生成它。
我知道 polybar 会检查背景以实现伪透明度,这是我最初的想法来源。然后我尝试使用 xprop,但据我所知,它似乎只能让我检索使用的 pixmap 的 ID,而不是其内容。这然后导致我制作了这个工具。
内部结构
xbgdump
通过检索 X 根窗口下属性 _XROOTPMAP_ID
绑定的 pixmap 来工作。此属性由 feh 和 nitrogen 设置;我尚未用其他壁纸设置工具或桌面环境进行测试。
对于8位RGB,X11返回的此像素图的 内容为BGR0——我不知道这实际上是否在某处有文档记载;我是通过试错发现的——然后将其转换为RGB,再编码为PNG并输出到指定的文件或标准输出。
依赖关系
~14MB
~104K SLoC