5

I spent some time and tried various things but nothing works. Here's what I have tried so far (changing the slideshow manually):

  1. Making a new folder in /usr/share/backgrounds/mywallpapers and adding my background-1.xml there.
  2. Copying a bunch of wallpapers into /usr/share/backgrounds/
  3. Copy /usr/share/backgrounds/Contest/background-1.xml to /usr/share/backgrounds/

I logged out and in and still no changes in the Appearance app.

I have heard about Wallch but I don't want some app running in the background all the time. I'm not even sure Wallch will work with Gnome 3. I also tried gnome-3-wp(Gnome 3 Wallpaper Slideshow app) but it just seems broken for Ubuntu 11.10 Oneiric.

Does anyone have a solution?

4
  • Have you seen this question and answer? askubuntu.com/questions/134/…
    – fossfreedom
    Oct 23, 2011 at 13:31
  • @fossfreedom yes and as I said I would prefer to not having an app running all the time(referring to Wallch) just to have such a simple functionality. And gnome-3-wp is just broken under Oneiric
    – Pithikos
    Oct 23, 2011 at 13:41
  • OP, there are several workable solutions here. Please mark one as the answer. May 12, 2013 at 6:07
  • I don't have the time at the moment to try any of the solutions, thus I can't judge them.
    – Pithikos
    May 17, 2013 at 9:50

9 Answers 9

6

I think I'm late but...

I created an xml background (with full paths descriptions), and I've saved it at /usr/share/backgrounds/my-background.xml

then I edited /usr/share/gnome-background-properties/ubuntu-wallpapers.xml adding

<wallpaper deleted="false">
 <name>My background</name>
 <filename>/usr/share/backgrounds/my-background.xml</filename>
 <options>zoom</options>
</wallpaper> 

just saves the file and the new slideshow wallpaper is shown in appearences window

hope it works for you :D

1
  • Also, relevant to those using Gnome 3.10 on Fedora 20.
    – Ryan
    Dec 18, 2013 at 20:46
5

Also, when editing /usr/share/gnome-background-properties/ubuntu-wallpapers.xml, ommiting the options tags altogether will allow you to choose to either tile, zoom, center, scale, fill or span in the Appearance GUI in Settings.

Example using Locutus's example above:

<wallpaper deleted="false">
 <name>My background</name>
 <filename>/usr/share/backgrounds/my-background.xml</filename>
</wallpaper>
1
  • Also, relevant to those using Gnome 3.10 on Fedora 20.
    – Ryan
    Dec 18, 2013 at 20:45
2

I use the following script I wrote and launch it using the gnome 'Startup Applications' launcher. To improve system performance the script suspends the slideshow while XMBC or VLC is running or the system load exceeds the specified threshold.

Save the script to a file and chmod +x to make it self executing.

wallpaper-slideshow.sh

#!/usr/bin/python

import os
import random
import time
import re
import subprocess

# directory where Pictures are stored
pictureDirectory = os.getenv("HOME") + "/.xbmc/userdata/Thumbnails/Video/Fanart"

# time in seconds to wait between transitions 
duration=60

# maximum system load before the slideshow is suspended
maxSysLoad=0.5

def getPictureList():
    result = []
    for root, sub, files in os.walk(pictureDirectory): 
        for f in files:
            if f.endswith(('.jpeg','.jpg','png','.tbn')):
                result.append(os.path.join(root, f))               
    return result


def getSystemLoad():
    uptimeString = subprocess.check_output(["uptime"])
    return float(re.match(r".*load average: ([^,]+),.*", uptimeString).group(1))

def isProcRunning(name):
    with open(os.devnull, "w") as devnull:
        return subprocess.call(["pidof", name], stdout=devnull) == 0

def setDesktopBackgroundPicture(filename):
    return subprocess.call(["gsettings", "set", 
        "org.gnome.desktop.background", 
        "picture-uri", '"file://' + filename + '"'])

def main():
    time.sleep(10) # startup delay    
    pictureList = getPictureList() 
    while 1:       
        if getSystemLoad() > maxSysLoad or isProcRunning("vlc") or isProcRunning("xbmc.bin") :
            print "slide show suspended while VLC or XMBC is running or system load is high"
        else:
            picture = random.choice(pictureList)
            print picture
            setDesktopBackgroundPicture(picture)
        
        time.sleep(duration)
        
if __name__ == "__main__":
    main()        
1

Ok so a small workaround after some further experimenting is that you can edit /usr/share/background-1.xml as root.

You change the line under

<!-- This animation will start at midnight. -->

and replace the picture sources so that they correspond to your fotos like this.

<static>
  <duration>1795.0</duration>
  <file>/home/manos/futuristicHD/2907.jpg</file> <!-- first wallpaper -->
</static>
<transition>
  <duration>5.0</duration>
  <from>/home/manos/futuristicHD/2907.jpg</from> <!-- first wallpaper -->
  <to>/home/manos/futuristicHD/62977.jpg</to>    <!-- second wallpaper -->
</transition>

There are two things to pay attention to:

  1. Only full paths work.
  2. The last <to>path/lastfoto.jpg</to> line in the whole xml file must correspond to the first <file>path/firstfoto.jpg</file> line in the xml file.
1

The key here is to point Gnome to the location of your XML slideshow file. From some reason, this option isn't available in dconf-editor, but you can use gsettings to get and set it. (Ref: ArchWiki):

To read the current setting:

GSETTINGS_BACKEND=dconf gsettings get org.gnome.desktop.background picture-uri

To set the new slideshow:

GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri 'file:///home/username/path/to/your/slideshow.xml'

Maybe you have created an XML slideshow previously, or you can use this script.

I can recommend Crebs, which unfortunately isn't available for Ubuntu 11.10 through PPA, but you can download and install the package for Natty (which is a little bit risky), or use the source package - once extracted, you don't have to install anything, just run the script crebs/bin/crebs script (note that Crebs may have some dependencies, run the script from terminal to find out).

Once you create and save Crebs slideshow you like, the resulting XML is saved to ~/.crebs/ directory - as mentioned above, just run:

GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri "file://$HOME/.crebs/MySuperCoolSlideshow.xml"

(remember to change the file name) and the slideshow will be instantly applied.

1

You can go to the terminal and type

wallch -h

There is an option to make it run in the background.

Wallch options

  -h or --help Show help options.
  --earth      Starts live earth wallpaper, updating every 30 minutes.
  --once       Change desktop background once by picking randomly an image from the list.
  --constant   Starts changing randomly pictures from the list, without opening the Wallch GUI.

Notes

--once and --constant will only work if you have at least 2 images in the list.
--earth will only work if you have Internet connection.

Not sure if this helps, but yeah :)

I usually do

wallch --constant

then I Ctrl+Z to stop it and get back into the terminal, then I type bg to send the process to the background so it keeps running.

0

I'm really late to this post, but seeing that there is no accepted answer yet, I will post my own.

There's an easy way to create a separate wallpaper slideshow by adding another XML file to /usr/share/backgrounds/.

Download the XML background creator, extract it into your home directory. Then run install.sh. This will create a new Nautilus script which you can use to create your wallpaper slideshow. You can try to make your own XML file, but frankly, this is a lot easier.

Now load all the images you want into a folder (preferably /usr/share/backgrounds/foler_name_here, since you can't move the images anywhere else once you have created the XML). Navigate to that folder in Nautilus, right-click, go to "Scripts", and select "XML background creator". Now choose the settings you want, and a new XML file should appear.

Now you need to make some changes so that the Appearances dialogue will recognize your new slideshow.

sudo gedit /usr/share/gnome-background-properties/ubuntu-wallpapers.xml

Now add this somewhere:

<wallpaper deleted="false">
     <name>name_of_slideshow</name>
     <filename>path_to_your_XML.xml</filename>
     <options>zoom</options>
</wallpaper>

Be sure to replace "path_to_your_XML.xml" with your the actual path.

Now, if you open the "Appearance" settings again, you should see your own slideshow along with the others.

0

Check out this forum post.

I think it's exactly what you want. Your custom background will be added to the 'change wallpaper background if you follow instructions, and run the script.

It helped me out lots!

1
  • Please add some of your answer here not only the link incase the link goes down you'll answer will be useless os please improve your answer
    – user61928
    Oct 12, 2012 at 5:38
0

My python script for changing wallpaper by time and slideshow:

Slidershow

You just need to place all the images inside seq folder and run the script, please don't name your images with special characters like ()/&¨%, the images don't need to have the same format or similar names.

Example:

nohup /home/$USER/Imagens/wallpaper_shift_linux/wallpaper_in_seq_py &

preview github

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .