Youtube movie as dynamic GNOME wallpaper
GNOME has support for dynamic wallpapers based, but if you want it to be really dynamic you will need a lot of images. To make it easier, I decided to turn to Best of the Web HD (there is also a version two and three).
First run youtube-dl on the video you want to download:
youtube-dl --format 45 'http://www.youtube.com/watch?v=TXdsqWqR4ro'
I selected the best format I could think of from the format list you can get when you run
Now, let's split up the video into separate frames:
gst-launch filesrc location=TXdsqWqR4ro.webm ! decodebin ! \ videorate ! video/x-raw-yuv,framerate=1/4 ! \ jpegenc ! multifilesink location=img%d.jpg
The important part of this pipeline is the videorate plugin with a framerate of one fourth, which makes sure you don't dump every frame but one in four.
Now that we have a directory full of files, we can start doing some Haskell:
#!/usr/bin/runghc import System.Directory import Data.List import System.FilePath imageFileSuffixes = [".jpg", ".png"] isImageFileName :: String -> Bool isImageFileName name = any (flip isSuffixOf name) imageFileSuffixes imageFiles candidates = filter isImageFileName candidates backgroundEntry path = "<static><duration>300</duration><file>" ++ path ++ "</file></static>" backgroundXml files = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<background>" ++ (concat (map backgroundEntry files)) ++ "</background>" main = do cwd <- getCurrentDirectory relativePaths <- getDirectoryContents cwd let paths = map (combine cwd) relativePaths putStrLn (backgroundXml (imageFiles paths))
If you save this file as gen.hs and make it executable (
chmod u+x gen.hs) you can generate
the background xml using
./gen.hs > best_of_web_hd.xml. If you get an error like
bash: ./gen.hs: /usr/bin/runghc: bad interpreter: No such file or directory
you should install
This gives us an XML file with the absolute path of each image. Now the last part of the puzzle to get it to work on Ubuntu GNOME remix 12.10:
gsettings set org.gnome.desktop.background picture-uri 'file://path/to/best_of_web_hd.xml'
I think you should also be able to use the normal background selector, but I could not get the GNOME Shell wallpaper selector to see anything other than images.
Some other posts, doing the same kind of thing:
Another cool video to use is beautiful nature scenery HD.