Add a image to the list of background files in gnome

In Gnome, when you right click on the desktop background you will get a menu for \”Change Desktop backgound. The images displayed in this menu are quite a few but if you want to add your own (read: more than some 5-6 files) then it takes really some time in using the GUI to add them. And if you want to add a few 10\’s of file, like say 50 then you are done.

So I wrote a simple script to add the images to the menu from command line. This was a quick script so no checks done, use at your own risk and after taking backup of related files 🙂

#Remove the last line from the file.

sed -n \’$!p\’ ~/.gnome2/backgrounds.xml > /tmp/outfile
mv /tmp/outfile ~/.gnome2/backgrounds.xml

#Start adding the wallpaper
echo \”<wallpaper deleted=\”false\”>\” >> ~/.gnome2/backgrounds.xml
echo \”    <name>$1</name>\” >> ~/.gnome2/backgrounds.xml
echo \”    <filename>\” >> ~/.gnome2/backgrounds.xml
echo \”`pwd`/$1\” >> ~/.gnome2/backgrounds.xml
echo \”</filename>\” >> ~/.gnome2/backgrounds.xml
echo \”    <options>zoom</options>\” >> ~/.gnome2/backgrounds.xml
echo \”    <shade_type>solid</shade_type>\” >> ~/.gnome2/backgrounds.xml
echo \”    <pcolor>#76848F</pcolor>\” >> ~/.gnome2/backgrounds.xml
echo \”    <scolor>#142C3D</scolor>\” >> ~/.gnome2/backgrounds.xml

echo \”    </wallpaper>\” >> ~/.gnome2/backgrounds.xml

#Add the last line again
echo \”</wallpapers>\” >> ~/.gnome2/backgrounds.xml

unbound variable – bash completion not working and having issues with other stuff like command not found.

I generally use vi/vim for all my practical purposes of working with text files. And I have all the vi/vim plugins required to work with the files. This causes the following to be in the skeleton for all the bash scripts that I create:

set -o nounset                              # Treat unset variables as an error

With this all the unbound variables as errors and was problem with all the shell scripts that was being sourced in the startup of bash. So all I had to do was remove this from all the startup scripts and then from the skeleton of the bash script in vim :).

The solution is quite easy but finding this was really a tough task.