在i3中设置背景的最流行方法似乎是使用feh,方法如下:
exec_always feh --bg-fill /home/user/Pictures/wallpaper.jpg在~/.config/i3/config文件中。然后,在~/.Xresources中,您可以将URxvt配置为透明,如下所示:
URxvt.transparent: true
URxvt.shading: 50
URxvt.blurRadius: 0
URxvt.background: #d3d3d3
URxvt.foreground: #1d1f21正如你所看到的,这两件事在我的家庭电脑上与feh完美地结合在一起。暂时不要理会可怕的配色方案。

现在,由于各种原因,我无法访问feh,因为在工作中有有限的yum回复。我自己也不能下载和编译它,或者其他类似的东西。作为替代,我一直在使用ImageMagick及其display功能来设置我的背景:
exec_always display -window root /home/user/Pictures/wallpaper.jpg它本身确实设置了壁纸,并与i3一起工作。
问题是,当我这样做时,ImageMagick似乎只是设置了一个覆盖,而不是实际设置根图像,因此URxvt只读取默认的灰色根图像。请注意,这也是我的家用计算机,其中的feh工作很好,所以它不是一个URxvt问题。

ImageMagick,以便它实际上设置根壁纸?这是我更喜欢的解决办法。feh这样的东西,也没有任何其他我必须查看的东西。我见过这个职位提到了几个,但没有时间检查它们是否存在于工作中。1.为了获得真正的透明度,我也不能访问compton、xcompmgr等东西。更新:我尝试使用xsetroot并使用ImageMagick的convert将我的.jpg图像转换为.bmp,但是xsetroot只适用于只支持黑白的.xbm图像。这将无法工作,因为我希望它仍然是相同的.jpg图像显示。
发布于 2019-05-02 13:39:13
在ltrace上运行feh显示,它似乎创建了一个像素映射,并使用XSetWindowBackgroundPixmap将其附加到根窗口(193是0xc1根窗口id):
XOpenDisplay(...) = 0x22a8a50
XCreatePixmap(0x22a8a50, 193, 1920, 1080) = 0x3000001
XSetWindowBackgroundPixmap(0x22a8a50, 193, 0x3000001, ...) = 1但更重要的是,它在根窗口上设置了两个属性:
XChangeProperty(0x22a8a50, 193, 312, 20) = 1
XChangeProperty(0x22a8a50, 193, 807, 20) = 1你可以看到
$ xprop -root
ESETROOT_PMAP_ID(PIXMAP): pixmap id # 0x3000001
_XROOTPMAP_ID(PIXMAP): pixmap id # 0x3000001像ImageMagick的display这样的程序在改变根背景时似乎不会更新这些属性。
使用feh后,您可以检查,当您删除上述两个属性(使用xprop -root -remove ...)时,urxvt等程序将不再显示透明的背景。
虽然xprop有一个-set选项,但我不知道如何使用它来设置或更改像素映射。
https://unix.stackexchange.com/questions/516409
复制相似问题