He reflexionado e investigado por algún tiempo, y con la ayuda de esta respuesta aquí, que se me han ocurrido un AppleScriptObjc script que, en la Alta Sierra , al menos (pero también debe funcionar en Mojave), permite cierta personalización sobre la forma en que la imagen de fondo del escritorio se escala a la (principal) pantalla:
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 imageURL to alias "Macintosh HD:Library:Desktop Pictures:High Sierra.jpg"
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❯
Si usted no está familiarizado con AppleScriptObjC, luego de observar la secuencia de comandos está dividida en tres secciones: PROPERTY DECLARATIONS
, IMPLEMENTATION
y HANDLERS
, la primera y la última de las cuales le sugiero que no intentes ajustar demasiado o a todos, a menos que como un ejercicio de aprendizaje.
Dicho esto, estoy seguro que no va a ir muy mal si decide añadir sus propios colores personalizados propiedades a la agrupación en el PROPERTY DECLARATIONS
secciones, cada una de las cuales es simplemente un 3-elemento de la lista especificando el rojo, el verde y el color azul de los componentes con valores entre 0 (cero aporte) y 100 (total de la contribución).
La segunda sección de la secuencia de comandos, encabezada IMPLEMENTATION
, es el funcional de bits que contiene la declarada explícitamente (para mayor claridad, sólo) run
de controlador. Es singular comando es una llamada al controlador scaleDesktopImage
, que es la línea que usted será la mayoría de los que desean jugar con para satisfacer sus necesidades.
Tiene dos modalidades, que voy a ilustrar con el ejemplo:
scaleDesktopImage to fill over blue
o:
scaleDesktopImage to fill
En otras palabras, especificando el color sobre el que la imagen de escritorio es puesta (es decir, el color de fondo), es opcional. Si se omite, el color de fondo predeterminado es 50% gris. Por supuesto, usted no tiene que usar un pre-declarado de la propiedad para especificar el color de fondo; puede abastecer directamente a una lista de valores RGB:
scaleDesktopImage to best over {100, 25, 50}
El resto de parámetros es obligatorio, y hay cuatro posibles valores con nombre:
-
fit
: Estira la imagen para que se ajuste el escritorio de la anchura y la altura;
-
centre
: Centros de la imagen sin la ampliación, sin embargo, se va a reducir el tamaño de una imagen que de otra manera se derrame fuera de los límites de la computadora;
-
best
: Aumenta o reduce el tamaño de la imagen para ocupar el máximo posible de la zona de el escritorio sin salir del escritorio de límites y conservar la relación de aspecto de la imagen, es decir, de un tamaño proporcional de ajuste;
-
fill
: Tamaños de la imagen para cubrir el área completa del escritorio, conservar la relación de aspecto, pero que se extiende más allá de los límites del escritorio a lo largo de uno de sus ejes si es necesario para cubrir el fondo.