10.10 デスクトップ変更 Python スクリプトの調整

10.10 デスクトップ変更 Python スクリプトの調整

私はPythonにあまり詳しくないので、現在はhttps://gist.github.com/gregneagle/6957826

次のスクリプトのデスクトップ イメージ ディクショナリ キー オプションに 1 つの変更を加えたいのですが、正しいコードが何であるかわかりません。

現在のコード

options = {}

私がそこに取得したいのは、「NSWorkspaceDesktopImageAllowClippingKey」のNO値です(参照:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/index.html#//apple_ref/doc/constant_group/Desktop_Image_Dictionary_Keys

私の最終目標は、このプログラムで 10.9 および 10.10 のデスクトップ画像を、常にデフォルトで設定されている画面いっぱいではなく、画面に合わせるように設定することです。これは NetRestore イメージ ユーティリティの一部であるため、その情報は ByHost 設定に含まれているため、これを自動化する必要があります。

ありがとう!

-rks

必要な人のために、元のスクリプトを以下に示します。

#!/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)

関連情報