Adjusting 10.10 Desktop Change Python Script

1

I'm not fantastic in Python and I'm currently using a script based off of https://gist.github.com/gregneagle/6957826.

I'm looking to make one change to the Desktop Image Dictionary Keys option in the following script, but I'm not sure what the correct code is.

Current Code

options = {}

What I want to get in there is a NO value for "NSWorkspaceDesktopImageAllowClippingKey" (Referencing: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/index.html#//apple_ref/doc/constant_group/Desktop_Image_Dictionary_Keys)

My end goal is to just get this program to set the desktop picture in 10.9 and 10.10 to FIT to screen instead of FILL screen, which is what it seems to always default to. It's part of a NetRestore image utility, so I need to automate this since that information is contained within the ByHost Preferences.

Thank you!

-rks

Here's the original script for those who need it:

#!/usr/bin/python

'''Uses Cocoa classes via PyObjC to set a desktop picture on all screens.
Tested on Mountain Lion and Mavericks. Inspired by Greg Neagle's work: https://gist.github.com/gregneagle/6957826

See:
https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSWorkspace_Class/Reference/Reference.html

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/Reference/Reference.html

https://developer.apple.com/library/mac/documentation/cocoa/reference/applicationkit/classes/NSScreen_Class/Reference/Reference.html
'''

from AppKit import NSWorkspace, NSScreen
from Foundation import NSURL
import argparse
import sys

parser = argparse.ArgumentParser(description='Sets the desktop picture on all screens')
parser.add_argument('--path', help='The path of the image')
args = vars(parser.parse_args())

if args['path']:
    picture_path = args['path']
else:
    print >> sys.stderr, 'You must supply a path for the desktop picture'
    exit(-1)

# generate a fileURL for the desktop picture
file_url = NSURL.fileURLWithPath_(picture_path)

# make image options dictionary
# we just make an empty one because the defaults are fine
options = {}

# get shared workspace
ws = NSWorkspace.sharedWorkspace()

# iterate over all screens
for screen in NSScreen.screens():
    # tell the workspace to set the desktop picture
    (result, error) = ws.setDesktopImageURL_forScreen_options_error_(
                file_url, screen, options, None)
    if error:
        print error
        exit(-1)

ghostof101

Posted 2015-05-04T18:27:41.703

Reputation: 323

No answers