我希望我的桌面壁纸在过渡之间淡出而不是剪切。有没有办法用 feh 做到这一点?也许使用 xcompmgr 或 compton?
如果没有,有没有一种方法可以在不更改为不同 wm 的情况下做到这一点?我现在正在使用awesome。
答案1
您可以使用 xscreensaver 作为壁纸,glslideshow 可以满足您的需求。尽管它有一个-root
选项,但您通常需要xwinwrap使其正常工作:
xwinwrap -ov -fs -- \
/usr/lib/xscreensaver/glslideshow -window-id WID -zoom 100
# location of xscreensavers may vary between distros
该-zoom
选项将图像设置为填满屏幕,这样它们就不会平移。
您无法使用此解决方案手动选择图像,但您可以设置一个目录,glslideshow 将从该目录中获取随机图像(它递归到子目录)。这可以在“高级”选项卡上完成,也可以通过在主目录中创建一个包含以下内容的xscreensaver-demo
文件来完成:.xscreensaver
chooseRandomImages: True
imageDirectory: /your/wallpaper/path
有关更多自定义选项,请参阅 glscreensaver 的联机帮助页。
如果没有 xwinwrap,glslideshow 可能会做奇怪的事情,例如在使用合成(例如使用 xcompmgr)时在所有窗口上绘制。但是,当禁用合成时,根图像仅在移动时才会重绘,因此您必须设置 glslideshow 来进行连续图像转换,否则自上次重绘后窗口所在的位置将出现黑框。有时它可以工作,但使用 xwinwrap 更安全。
答案2
如果你添加imagemagick
代入方程,那么你问题的答案就是是的。接下来是一个相当粗略的实现:
mv current.bg old.bg
imagemagick convert old.bg -fill black -colorize 50% transition.bg
feh --bg-scale transition.bg
imagemagick convert new.bg -fill black -colorize 50% transition.bg
feh --bg-scale transition.bg
feh --bg-scale new.bg
mv new.bg current.bg
不过,imagemagick
您的选择仍然非常广泛。