问题描述
我如何使用自己的一组图像创建桌面壁纸幻灯片?
-
图片来自图片文件夹或pre-selected
-
图像按顺序显示,或随机显示
-
随着图像每隔几分钟或随机一段时间改变
最佳解决方案
适用于11.04和以前的版本
有一个程序可以创建名为CREBS的壁纸幻灯片。看看这篇关于它的文章:http://www.omgubuntu.co.uk/2010/05/crebs-the-ultimate-wallpaper-slideshow-application
一个简单的应用程序,功能较少,但更容易使用可以在这里找到:http://gnome-look.org/content/show.php/Wallpaper+Slideshow?content=125178
次佳解决方案
如果你用它来管理你的照片并且很容易,我建议使用Shotwell
,默认情况下应该安装它。
打开它:
选择您想要设置为背景幻灯片的照片:
打开File
→Set as Desktop Slideshow
或按Ctrl
+ B
:
调整时间设置:
完成。
第三种解决方案
Wallch
在软件中心有两个壁纸转换器 – Gnome-Shell /Unity /Gnome-Classic和Wally for KUbuntu。
让我们专注于Wallch。
令人遗憾的是,软件中心的Wallch版本已经过时了,尤其是在14.04版本中有很多问题!最近的版本有一个版本库。
要安装,请添加存储库(您不需要在16.04上执行此操作):
sudo add-apt-repository ppa:wallch/wallch-daily
然后安装Wallch:
sudo apt-get update && sudo apt-get install wallch
然后从Dash开始:
让我们现在启动应用程序首选项:
让我们解开泡泡通知 – 令人讨厌 – 同时您可以禁用声音!
同时您可以定义start-up选项:
保存 – 并添加图片文件夹 – 在本例中,使用/usr/share/backgrounds
作为Ubuntu的默认壁纸
现在我们有两个选择:
启动选择1
(感谢@Naruto)
将wallch保存在发射器中
退出wallch并开始更换壁纸
启动选择2
无需启动发射器即可登录登录
从短跑:
然后使用命令wallch --constant
创建一个新的启动应用程序
注: – 对于一些电脑来说这是行不通的。解决方案是根据以下Q& A向wallch守护进程启动延迟:
Wallch not auto-cycling backgrounds on log in
第四种方案
我喜欢variety。
sudo add-apt-repository ppa:peterlevi/ppa
sudo apt-get update
sudo apt-get install variety
我使用Ubuntu 13.04。
第五种方案
自己创建一个XML文件。谨慎使用这个脚本作为一个起点,它可能有一些错误。
#!/bin/bash
FILE="background.xml"
DURATION=10.0
TRANSITION=0.0
CURRENTDIR=$PWD
TRANSITION_XML="
<static>
<duration>$DURATION</duration>
<file>$CURRENTDIR/%s</file>
</static>
<transition>
<duration>$TRANSITION</duration>
<from>$CURRENTDIR/%s</from>
<to>$CURRENTDIR/%s</to>
</transition>
"
# Random order
shopt -s nullgob nocaseglob # ignore non-existant extensions, case-insensitve
IMGS=( *.{jpg,jpeg,png,gif} )
INDICES=( $(shuf -e ${!IMGS[@]}) ) # randomize indices of images
INDICES+=(${INDICES[0]}) # go back to first image after last
COUNTER=${#IMGS[@]}
exec > "$FILE" # all further output to the XML file
echo "<background><starttime></starttime>"
for ((i = 0; i < COUNTER; i++))
do
index=${INDICES[i]}
printf "$TRANSITION_XML" "${IMGS[index]}" "${IMGS[index]}" "${IMGS[index + 1]}"
done
echo "</background>"
说明:
生成background.xml
文件后,在桌面上选择right-click,选择更改背景图像,单击添加…,然后导航到包含XML文件的目录。在”Open”按钮上方,将选择器从”Image”更改为”All files”,然后选择background.xml文件并单击”Open”按钮。该文件可以重命名为更具描述性,例如my_family.xml
,landscapes-3.xml
等,允许您拥有多个幻灯片播放列表。
第六种方案
对于gnome 3,使用之前的答案生成xml,然后通过命令行添加生成的xml:
gsettings set org.gnome.desktop.background picture-uri 'file:///home/pykler/.backgrounds/realtime/background.xml'
另一个解决方案(这会将您的bg添加到gnome-control-center下的外观区域):
mkdir -p ~/.local/share/gnome-background-properties/
cat >~/.local/share/gnome-background-properties/custom-wallpapers.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
<wallpaper deleted="false">
<name>Pykler</name>
<filename>/home/pykler/.backgrounds/realtime/background.xml</filename>
<options>zoom</options>
</wallpaper>
</wallpapers>
EOF
根据需要替换名称”Pykler”和路径“/home/pykler/.backgrounds/realtime/background.xml”。
第七种方案
对于Gnome 3,您可以使用Wallpaper Slideshow App。
据其开发商称,它具有以下特点:
-
让您通过浏览器选择文件夹。
-
让您以秒为单位设置超时。
-
让您选择子目录的深度。
-
您只需单击一下即可启用或禁用它。
-
Full-feature工具提示
去下载:
git clone git://gitorious.org/gnome-3-wp/gnome-3-wp.git
然后在主文件夹的gnome-3-wp文件夹中运行wp-show
。
第八种方案
好的,我是这么做的,这可能不是最好的方法,但它的工作原理,我不必安装任何东西来做到这一点。回到11.10,我找到了下面的python脚本(slideshow.py
),它生成一个slideshow.xml
文件(从包含镜像的目录运行)。这仍然是12.04所需的文件,但您还需要另一个XML文件。将由slideshow.py
脚本生成的XML文件放入/usr/share/backgrounds/contest
,将chown
放入root
。一旦完成,您需要运行第一个改编的第二个python脚本(wallpapers.py
)。将wallpapers.py
生成的文件放在/usr/share/gnome-background-properties
中,再将chown
放入根目录。此时你应该可以进入”System Settings” – >外观并选择你的幻灯片或任何其中的图片。
slideshow.py:
#!/usr/bin/env python
#coding=utf-8
# slideshow.py
import glob, os
import shutil
import time
import Image
filelist=[]
def filelie(path):
if os.path.isfile(path):
wenjian=os.path.splitext(path)[1][1:]
if wenjian=="jpg" or wenjian=="png" or wenjian=="gif":
try:
kuan,gao = Image.open(path).size
if kuan>=1024 and gao>=768:
filelist.append(path)
except IOError:
pass
elif os.path.isdir(path):
for item in os.listdir(path):
itemsrc = os.path.join(path, item)
filelie(itemsrc)
curdir = os.getcwd()
filelie(curdir)
currentImageFiles = filelist
#print filelist
if os.path.isfile('slideshow.xml'):
os.remove('slideshow.xml')
currentTime = time.localtime()
length = len(currentImageFiles)
f = file('slideshow.xml', 'w')
f.write('<background>\n')
f.write('\t<starttime>\n')
f.write('\t\t<year>' + str(currentTime.tm_year) + '</year>\n')
f.write('\t\t<month>' + str(currentTime.tm_mon) + '</month>\n')
f.write('\t\t<day>' + str(currentTime.tm_mday) + '</day>\n')
f.write('\t\t<hour>' + str(currentTime.tm_hour) + '</hour>\n')
f.write('\t\t<minute>' + str(currentTime.tm_min) + '</minute>\n')
f.write('\t\t<second>' + str(currentTime.tm_sec) + '</second>\n')
f.write('\t</starttime>\n')
f.write('<!--This animation will start at the time it created-->\n')
for i in currentImageFiles:
length = length - 1
f.write('\t<static>\n')
f.write('\t\t<duration>96.0</duration>\n')
f.write('\t\t<file>' + currentImageFiles[length] +'</file>\n')
f.write('\t</static>\n')
f.write('\t<transition>\n')
f.write('\t\t<duration>3.0</duration>\n')
f.write('\t\t<from>' + currentImageFiles[length] + '</from>\n')
if length >= 1:
f.write('\t\t<to>' + currentImageFiles[length-1] + '</to>\n')
if length <1:
f.write('\t\t<to>' + currentImageFiles[len(currentImageFiles)-1] + '</to>\n')
f.write('\t</transition>\n')
f.write('</background>\n')
f.close()
wallpapers.py:
#!/usr/bin/env python
#coding=utf-8
import glob, os
import shutil
import time
import Image
filelist=[]
def filelie(path):
if os.path.isfile(path):
wenjian=os.path.splitext(path)[1][1:]
if wenjian=="jpg" or wenjian=="png" or wenjian=="gif":
try:
kuan,gao = Image.open(path).size
if kuan>=1024 and gao>=768:
filelist.append(path)
except IOError:
pass
elif os.path.isdir(path):
for item in os.listdir(path):
itemsrc = os.path.join(path, item)
filelie(itemsrc)
curdir = os.getcwd()
filelie(curdir)
currentImageFiles = filelist
#print filelist
if os.path.isfile('mywallpapers.xml'):
os.remove('mywallpapers.xml')
currentTime = time.localtime()
length = len(currentImageFiles)
f = file('mywallpapers.xml', 'w')
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
f.write('<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">\n')
f.write('<wallpapers>\n')
f.write('\t<wallpaper deleted="false">\n')
f.write('\t\t<name>My custom Wallpapers</name>\n')
f.write('\t\t<filename>/usr/share/backgrounds/contest/slideshow.xml</filename>\n')
f.write('\t\t<options>zoom</options>\n')
f.write('\t</wallpaper>\n')
for i in currentImageFiles:
length = length - 1
f.write('\t<wallpaper>\n')
f.write('\t\t<name>' + os.path.basename(currentImageFiles[length]) +'</name>\n')
f.write('\t\t<filename>' + currentImageFiles[length] +'</filename>\n')
f.write('\t\t<options>zoom</options>\n')
f.write('\t\t<pcolor>#000000</pcolor>\n')
f.write('\t\t<scolor>#000000</scolor>\n')
f.write('\t\t<shade_type>solid</shade_type>\n')
f.write('\t</wallpaper>\n')
f.write('</wallpapers>\n')
f.close()
第九种方案
使用cortina,它工作得很好。
它可以将桌面背景图片设置为来自给定目录的随机文件。
它可以通过Ubuntu软件中心安装。
第十种方案
您可能会对自动创建这种wallpaper-slideshow的程序感兴趣。
根据this OMG! Ubuntu post,您有例如‘Wallpaper Gallery’。它将您Shotwell画廊的标记照片作为输入数据。因此,添加&例如删除照片。
首先选择与要显示的照片有关的标签,然后根据您希望的切换时间,订单等进行配置。这里有一些截图: