0 votos

Applescript para cambiar el fondo de escritorio de posicionamiento (por ejemplo, el Relleno de la pantalla

Tengo el script

tell application "System Events"
    tell every desktop
        set picture to "/Users/jackson/Pictures/Backgrounds/backpic.jpg"
    end tell
end tell

Que cambia el fondo de escritorio a una imagen específica. El valor predeterminado es "Llenar la Pantalla," que no me gusta. Sin embargo, no me parece secuencia de comandos de las dimensiones.

Edit: el valor por defecto parece ser lo que se estableció en el pasado, pero yo todavía me gustaría saber si se puede controlar desde AppleScript

He leído aquí que podría no ser posible directamente de secuencia de comandos de la respuesta (aunque puede haber cambiado desde entonces), pero yo estaba pensando que probablemente hay algunos GUI de secuencias de comandos que se podría hacer. Alguien tiene alguna idea?

2voto

qarma Puntos 71

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, IMPLEMENTATIONy 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.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X