在每个显示器上随机循环不同的壁纸

在每个显示器上随机循环不同的壁纸

所以我在我的 Windows 驱动器上安装了一个名为“Display Fusion”的程序,我喜欢它实际上只有一个功能:

我可以将其设置为我的 3 个显示器每 X 分钟随机更改一次壁纸。我可以将其指向一个包含 500 多张壁纸的文件夹,每个显示器都会单独随机选择一张(因此它们几乎不会在每两个屏幕上都有相同的壁纸)。


我正在运行 Debian Jessie,使用 Gnome Shell 3.14.4,到目前为止我已经尝试了以下应用程序,但遇到了以下问题:

氮气:根本不起作用。无法将“让文件管理器处理桌面”设置为“关闭”,因为 Gnome 调整工具没有在任何地方列出该选项。

Syncwall:实际上没有任何方法为每个显示器设置不同的壁纸,但完美地完成了随机循环功能。


我还缺少其他任何可以完成我想做的事情的潜在软件吗?

我是否明显遗漏了我已经尝试过的软件的某些内容?


更新1:

尝试了吉尔斯答案中的第二个代码块:

#!/bin/sh
wallpaper_directory= MY WALLPAPER FOLDER
interval=300 # in seconds
IFS='
'; set -ef
while true; do
  set $(find "$wallpaper_directory" -type f | shuf -r -n 3)
  xloadimage -onroot -at 0,0 "$1" -at 1920,0 "$2" -at 3840,0 "$3"
  sleep "$interval"
done

将其添加到/etc/init.d/

然后跑了chmod 755 wallpaper_script.sh

update-rc.d wallpaper_script.sh defaults

现在,我已将“调整工具”设置设置为以下内容:

Gnome3 调整工具桌面设置

现在所有 3 台显示器上的背景都是纯蓝色。

,当我重新启动时(大概是在 Gnome Shell 停止运行之后),我可以在重新启动之前看到 3 张壁纸闪烁。

所以脚本似乎可以工作,但 Gnome 是冲突的,在深入研究 gsettings 和 dconf-editor 之后,我似乎仍然找不到一个设置可以完成 Tweak-Tools 在 Gnome2 中所做的事情。

答案1

如果 Gnome 没有内置任何东西,您可以编写一个脚本来完成它。下面从~/wallpapers三个显示器上加载随机壁纸,假设从左到右排列,每个显示器的宽度为 1680 像素。它用加载图像(看使用 ImageMagick 在根窗口上显示多个图像)。根据需要调整显示器尺寸和壁纸位置。如果您希望壁纸与众不同,请删除-r的选项shuf。对于更多显示器,请增加 的参数shuf -n

#!/bin/sh
IFS='
'; set -f
set $(find ~/wallpapers -type f | shuf -r -n 3)
xloadimage -onroot -at 0,0 "$1" -at 1680,0 "$2" -at 3360,0 "$3"

要每 N 分钟更改一次壁纸,请将以下脚本添加到会话启动应用程序中。

#!/bin/sh
wallpaper_directory=~/wallpapers
interval=300 # in seconds
IFS='
'; set -ef
while true; do
  set $(find "$wallpaper_directory" -type f | shuf -r -n 3)
  xloadimage -onroot -at 0,0 "$1" -at 1680,0 "$2" -at 3360,0 "$3"
  sleep "$interval"
done

这是一个更复杂的脚本,它调用xrandr获取显示器尺寸和位置。此变体假设壁纸位于以显示器尺寸命名的子目录中,例如~/wallpapers/1680x1050

#!/bin/sh
wallpaper_directory=~/wallpapers
interval=300 # in seconds

random_wallpaper () {
  find ~/wallpapers/$1 -type f | shuf -n 1
}
command="xloadimage -onroot"
i=1
for m in $(xrandr | sed -n 's/^.* connected.*[^0-9]\([0-9]*x[0-9]*\)+\([0-9]*\)+\([0-9]*\).*$/\1,\2,\3/p'); do
  size="${m%%,*}" position="${m#*,}"
  command="$command -at $position \"\$(random_wallpaper $size)\""
  i=$((i+1))
done

if ! eval "$command"; then
  echo >&2 "Unable to load initial wallpapers, aborting."
  exit 2
fi
while sleep "$interval"; do
  eval "$command"
done

(警告:此答案中的所有代码均未经测试。)

或者,可能有一种方法可以通过设置正确的值gsettings(模仿 Gnome 2 中的调整工具所做的事情)来让 Nitrogen 工作,但我不知道需要更改哪个键。

相关内容