나는 이것을 잠시 생각하고 연구했다. 이 대답은 여기에 , 나는 AppleScriptObjc 스크립트를 고안했다. 하이 시에라 적어도 (또한 작동해야합니다. 모하비 )는 데스크탑 배경 이미지가 (주) 화면으로 확장되는 방식에 대해 몇 가지 사용자 정의를 허용합니다.
use framework "AppKit"
--------------------------------------------------------------------------------
# PROPERTY DECLARATIONS:
property this : a reference to current application
property NSWorkspace : a reference to NSWorkspace of this
property NSScreen : a reference to NSScreen of this
property NSColor : a reference to NSColor of this
property NSDictionary : a reference to NSDictionary of this
property fit : 1 -- NSImageScaleAxesIndependently (will never clip)
property centre : 2 -- NSImageScaleNone (will never clip)
property best : 3 -- NSImageScaleProportionallyUpOrDown (no clipping)
property fill : 3.1 -- NSImageScaleProportionallyUpOrDown (clipping)
property black : {0, 0, 0}
property white : {100, 100, 100}
property grey50 : {50, 50, 50}
property red : {100, 0, 0}
property green : {0, 100, 0}
property blue : {0, 0, 100}
--------------------------------------------------------------------------------
# IMPLEMENTATION:
on run
scaleDesktopImage to fill over blue
end run
--------------------------------------------------------------------------------
# HANDLERS:
to scaleDesktopImage to scalingOption over {r, g, b} : {50, 50, 50}
local scalingOption -- fit, centre, fill
local r, g, b -- 0 to 100
set clipping to false
if scalingOption is not in [fit, centre, best, fill] then return false
if scalingOption = fill then set clipping to true
set sharedWorkspace to NSWorkspace's sharedWorkspace()
set mainScreen to NSScreen's mainScreen()
set options to {NSWorkspaceDesktopImageScalingKey:scalingOption ¬
, NSWorkspaceDesktopImageAllowClippingKey:clipping ¬
, NSWorkspaceDesktopImageFillColorKey:RGB(r, g, b)}
set imageURL to sharedWorkspace's desktopImageURLForScreen:mainScreen
set [success, E] to sharedWorkspace's setDesktopImageURL:imageURL ¬
forScreen:mainScreen options:options |error|:(reference)
if E = missing value then return success
E's localizedDescription() as text
end scaleDesktopImage
on RGB(r as real, g as real, b as real)
NSColor's colorWithCalibratedRed:r / 100 ¬
green:g / 100 ¬
blue:b / 100 ¬
alpha:1.0
end RGB
---------------------------------------------------------------------------❮END❯
AppleScriptObjC에 익숙하지 않다면 스크립트가 세 부분으로 나뉘어져 있음을 확인하십시오. PROPERTY DECLARATIONS
, IMPLEMENTATION
, 및 HANDLERS
, 첫 번째와 마지막으로 나는 학습 운동으로 사용하지 않는 한, 너무 많이 조정하거나 전혀 조정하지 말 것을 제안합니다.
즉, 자신 만의 맞춤 색상 속성을 그룹의 그룹에 추가하기로 결정하면 크게 잘못하지 않을 것입니다. PROPERTY DECLARATIONS
섹션 각각은 단순히 0 (기여도)에서 100 (전체 기여도) 사이의 값을 갖는 빨강, 녹색 및 파랑 색 구성 요소를 지정하는 3 가지 항목 목록 일뿐입니다.
스크립트의 두 번째 섹션 IMPLEMENTATION
, 명확하게 선언 된 (명확성을 위해서만) run
매니저. 단일 명령은 처리기에 대한 호출입니다. scaleDesktopImage
귀하의 필요에 가장 잘 부응 할 수있는 라인입니다.
그것은 두 가지 형식을 취하는데, 예제를 통해 설명 할 것입니다.
scaleDesktopImage to fill over blue
또는:
scaleDesktopImage to fill
즉, 바탕 화면 이미지가 놓여지는 색 (즉, 배경색)을 지정하는 것은 선택 사항입니다. 생략하면 배경색은 기본적으로 50 % 회색으로 설정됩니다. 물론 배경색을 지정하기 위해 미리 선언 된 속성을 사용할 필요는 없습니다. RGB 값 목록을 직접 제공 할 수 있습니다.
scaleDesktopImage to best over {100, 25, 50}
나머지 매개 변수 ~이다. 필수이며 네 개의 가능한 명명 된 값이 있습니다.
fit
: 바탕 화면의 너비 및 높이에 맞게 이미지를 늘립니다.
centre
: 그러나 이미지를 확대하지 않고 센터링합니다. 의지 바탕 화면 경계 밖으로 유출되는 이미지의 크기를 줄입니다.
best
: 데스크탑의 가능한 최대 영역을 차지하도록 이미지의 크기를 확대하거나 축소합니다. 없이 데스크탑 경계 외부로 나가고 이미지의 종횡비, 즉 비례 크기 조정을 보존하는 것;
fill
: 가로 세로 비율을 유지하면서 바탕 화면의 전체 영역을 덮도록 이미지의 크기를 조정하지만 배경을 커버하기 위해 필요한 경우 해당 축 중 하나를 따라 바탕 화면의 경계 너머로 확장합니다.