File weather-wallpaper-update-for-gnome3.patch of Package weather-wallpaper

diff -Naur a/weather-wallpaper b/weather-wallpaper
--- a/weather-wallpaper	2007-10-24 05:15:28.000000000 -0500
+++ b/weather-wallpaper	2012-01-25 11:03:01.509494039 -0600
@@ -16,22 +16,26 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 ###
 
-
-import ConfigParser
-import gettext
-import gtk
-import os
-import pygtk
-import pymetar
-import sys
-import threading
-import time
-import urllib2
-
+try:
+    import gi
+    from gi.repository import Gio
+except ImportError:
+    pass
+finally:
+    import ConfigParser
+    import gettext
+    import gtk
+    import os
+    import pygtk
+    import pymetar
+    import sys
+    import threading
+    import time
+    import urllib2
 
 __version__ = "0.2.0"
 
@@ -246,6 +250,19 @@
         self.stop_event = threading.Event()
         self.stop = False
         threading.Thread.__init__(self)
+        # Desktop wallpaper schema name.
+        self.SCHEMA = 'org.gnome.desktop.background'
+        # URI to use for the background image. Note that the backend only supports local (file://) URIs.
+        self.KEY_URI = 'picture-uri'
+        # Determines how the image set by wallpaper_filename is rendered. Possible values are "none",
+        # "wallpaper", "centered", "scaled", "stretched", "zoom", "spanned".
+        self.KEY_OPTS = 'picture-options'
+        # How to shade the background color. Possible values are "horizontal", "vertical", and "solid".
+        self.KEY_SHADING = 'color-shading-type'
+        # Left or Top color when drawing gradients, or the solid color.
+        self.KEY_PRIMARY = 'primary-color'
+        # Right or Bottom color when drawing gradients, not used for solid color.
+        self.KEY_SECOND = 'secondary-color'
 
     def run(self):
         """Execution loop for the thread. Creates and sets a new wallpaper with the info downloaded from NOAA"""
@@ -431,17 +448,28 @@
             os.popen(cmd)
 
             # If the user is running Gnome
-            if os.popen( "ps --user " + os.environ.get( "USER" ) + "| grep gnome-panel").readline():
-                import gconf
-                client = gconf.client_get_default()
-                client.set_string("/desktop/gnome/background/picture_filename", output_img)
-                client.set_string("/desktop/gnome/background/picture_options", "centered")
-
-                client.set_string("/desktop/gnome/background/color_shading_type", "vertical-gradient")
-                client.set_string("/desktop/gnome/background/primary_color", foreground)
-                client.set_string("/desktop/gnome/background/secondary_color", background)
+            if os.environ.has_key('GNOME_DESKTOP_SESSION_ID'):
+                try:
+                    # If running Gnome 3.x
+                    gsettings = Gio.Settings.new(self.SCHEMA)
+                    gsettings.set_string(self.KEY_URI, "file://" + output_img)
+                    gsettings.set_string(self.KEY_OPTS, "spanned")
+                    gsettings.set_string(self.KEY_SHADING, "vertical")
+                    gsettings.set_string(self.KEY_PRIMARY, foreground)
+                    gsettings.set_string(self.KEY_SECOND, background)
+                except NameError:
+                    pass
+                finally:
+                    # If running Gnome 2.x
+                    import gconf
+                    client = gconf.client_get_default()
+                    client.set_string("/desktop/gnome/background/picture_filename", output_img)
+                    client.set_string("/desktop/gnome/background/picture_options", "centered")
+                    client.set_string("/desktop/gnome/background/color_shading_type", "vertical-gradient")
+                    client.set_string("/desktop/gnome/background/primary_color", foreground)
+                    client.set_string("/desktop/gnome/background/secondary_color", background)
             # If the user is running KDE
-            elif os.popen( "ps --user " + os.environ.get( "USER" ) + "| grep kdesktop" ).readline():
+            elif os.environ.has_key('KDE_FULL_SESSION'):
                 cmd = "dcop kdesktop KBackgroundIface setWallpaper \"%s\" 1 " % (output_img)
                 os.popen(cmd)
                 cmd = "dcop kdesktop KBackgroundIface setColor \"%s\" false" % (background)
openSUSE Build Service is sponsored by