在 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 等以获得真正的透明度。
更新:我尝试使用ImageMagick'sxsetroot
并将其转换.jpg
为图像,但仅适用于仅支持黑白的图像。这不起作用,因为我希望它仍然与显示的图像相同。.bmp
convert
xsetroot
.xbm
.jpg
答案1
运行ltrace
显示feh
它似乎创建了一个像素图并使用 XSetWindowBackgroundPixmap 将其附加到根窗口(193 是根窗口 id 的 0xc1):
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
选项,但我不知道如何使用它来设置或更改像素图 ID。