在GNOME 3下定期更换墙纸吗?


15

我将Fedora 15与GNOME 3一起使用,并且希望墙纸可以像Windows 7一样定期更改。如果可以使用RSS / Atom或指定的目录,那将是最好的选择。

我没有在存储库中找到任何工具。我想您可以使用脚本和cron进行更改,但我正在寻找更优雅的东西。

Answers:



19

将以下shell脚本保存在某处:

#!/bin/bash

WP_DIR=/home/honeyp0t/wallpapers

cd $WP_DIR
while [ 1 ] 
  do
  set -- * 
  length=$#
  random_num=$((( $RANDOM % ($length) ) + 1)) 

  gsettings set org.gnome.desktop.background picture-uri "file://$WP_DIR/${!random_num}"

  sleep 600 
done

然后在您的主目录.config / autostart中,将以下内容放入名为wallpaper-changer.desktop的文件中

[Desktop Entry]
Name=wallpaper-changer
Exec=/home/sammhe/bin/setbg.sh
Comment=change wallpaper every so often
Hidden=false
Type=Application
X-GNOME-Autostart-enabled=true

这将每10分钟更改一次墙纸…或您在脚本中设置的任何值……

我最初将此评论发布在OS管道工的Musings上题为“定制GNOME Shell”的评论


在您的链接上找不到任何有关更改墙纸或Hubert Samm的信息。你可以再详细一点吗?
2011年

或者,您也可以在这里写下来:)(抱歉,我没有检查您的名字):
KovBal 2011年

1
值得注意的是,您可能还需要设置pictures-optionsgsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
丹尼尔·奎因

这不适用于gnome 2,对吗?
2013年

什么是“设置-*”呢?
SergioAraujo 2013年

3

如果您希望使用cron作业而不是init脚本,这就是我所做的。感谢休伯特的灵感!

#!/bin/bash

walls_dir=$HOME/.wallpapers
selection=$(find $walls_dir -type f -name "*.jpg" -o -name "*.png" | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$selection"

将脚本保存在某个位置(例如$HOME/bin/rotate_bg),使其成为可执行文件(chmod +x $HOME/bin/rotate_bg),然后添加cron作业以根据需要更改背景的频率运行它。运行以为您的用户crontab -e编辑cron表。这是描述crontab格式的链接。以下条目将每10分钟轮换您的背景:

*0 * * * * $HOME/bin/rotate_bg

您在这里不正确。睡眠不是忙碌的等待
Art Gertner 2014年

如果您被引用,我将更改答案
内森·华莱士

来自我上面链接的同一来源:The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days。例如,进程不会被调用,也不会浪费CPU周期。也来自Wiki上的“忙碌等待”Busy-waiting itself can be made much less wasteful by using a delay function (e.g., sleep()) found in most operating systems. This puts a thread to sleep for a specified time, during which the thread will waste no CPU time
Art Gertner 2014年

1

由于某种原因,我看不到回复Hubert Samm的方法,但是我发现他的链接很有帮助。为了以防万一,或者您不想阅读整篇文章来获得特定的答案,我添加了如何在Gnome 3中完成动态更新背景的方法。

通过转至〜/ .cache / gnome-control / center / backgrounds,您将找到一个长名称的文件(例如“ a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27”),这是您将背景设置为文件的缓存版本。如果删除此文件并创建一个具有相同名称的符号链接来替换它:

$ rm a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27 
$ ln -s /path/to/original/file a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27

然后,随着原始文件的更新,桌面背景将发生变化以反映这一点。我正在使用此技术来确保XPlanetFX背景保持最新。例如,只要有一个名为“ background.jpg”的图像,并在需要更新背景时更改此文件即可。

解决此问题的更正确方法可能是使用gsettings更改picture-uri地址以直接指向您选择的文件,但是我选择了symlink选项,因为我不知道设置更改的持久性使用UI更改墙纸时。无论哪种方法都应该在理论上起作用。

注意:我不确定,因为我没有对其进行测试,但是如果您通过常规UI更改背景,则很可能会更改唯一的长文件名,并且符号链接将不再有用。


1

将以下shell脚本保存在某处:

#!/bin/bash
while true; do
file=`/bin/ls -1 $1 | sort --random-sort | head -1`;path=`readlink --canonicalize "$dir/$file"`;
gsettings set org.gnome.desktop.background picture-uri "file://"$1$path;sleep $2;done

使用以下语法运行它:

scriptname directoryofpictures howmanyseconds
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.