]> code.delx.au - bg-scripts/blobdiff - bin/wallchanger.py
RandomBG: Make Listener non-writeable
[bg-scripts] / bin / wallchanger.py
index 307d7d078dcbf977bb289693c0d49a55d17e8c04..b20c0683b84404326f3afd5f2b1fdc27d639a74b 100755 (executable)
@@ -13,6 +13,7 @@ __all__ = ("init", "set_image")
 changers = []
 
 def set_image(filename):
+       info("Setting image: %s" % filename)
        for changer in changers:
                if not changer.set_image(filename):
                        warning("Failed to set background: wallchanger.set_image(%s), changer=%s" % (filename, changer))
@@ -52,10 +53,11 @@ def init(*args, **kwargs):
 
 class BaseChanger(object):
        name = "undefined"
-       def __init__(self, background_color='black', permanent=False):
+       def __init__(self, background_color='black', permanent=False, convert=False):
                info('Determined the window manager is "%s"' % self.name)
                self.background_color = background_color
                self.permanent = permanent
+               self.convert = convert
 
        def set_image(self, filename):
                raise NotImplementedError()
@@ -82,9 +84,10 @@ class WMakerChanger(BaseChanger):
                return output_name, subprocess.Popen(cmd, stdout=sys.stdout, stderr=sys.stderr, stdin=None).wait()
 
        def set_image(self, file):
-               file, convert_status = self.convert_image_format(file)
-               if convert_status:
-                       debug('Convert failed')
+               if self.convert:
+                       file, convert_status = self.convert_image_format(file)
+                       if convert_status:
+                               debug('Convert failed')
                cmd = ["wmsetbg", 
                        "-b", self.background_color, # Sets the background colour to be what the user specified
                        "-S", # 'Smooth' (WTF?)
@@ -104,6 +107,10 @@ class OSXChanger(BaseChanger):
        _ConvertedWallpaperLocation = '/tmp/wallpapers/'
        _DesktopPlistLocation = os.path.expanduser('~/Library/Preferences/com.apple.desktop.plist')
 
+       def __init__(self, *args, **kwargs):
+               BaseChanger.__init__(self, *args, **kwargs)
+               self.fix_desktop_plist()
+
        def remove_old_image_cache(self):
                """Cleans up any old temp images"""
                if not os.path.isdir(self._ConvertedWallpaperLocation):
@@ -145,13 +152,13 @@ class OSXChanger(BaseChanger):
                except ImportError:
                        debug('Could not import the Foundation module, you may have problems with dual screens')
 
-       def set_image(self, file):
-               output_name, ret = self.convert_image_format(file)
-               if not ret:
-                       debug("Convert failed")
-                       return False
-               self.fix_desktop_plist()
-               cmd = """osascript -e 'tell application "finder" to set desktop picture to posix file "%s"'""" % output_name
+       def set_image(self, filename):
+               if self.convert:
+                       filename, ret = self.convert_image_format(filename)
+                       if not ret:
+                               debug("Convert failed")
+                               return False
+               cmd = """osascript -e 'tell application "finder" to set desktop picture to posix file "%s"'""" % filename
                debug(cmd)
                return not commands.getstatusoutput(cmd)[0]