2 votos

Miniaturizar todo Windows con AppleScript

tell application "System Events"
    set mywindows to windows of (processes where background only is false)
    repeat with theItem in windows of (processes where background only is false)
        set miniaturized of theItem to true
    end repeat
end tell

Me sale

error "System Events got an error: Can’t set miniaturized of UI element to any." number -10006 from miniaturized of UI element to any

0 votos

¿No quieres decir "minimizado"?

1 votos

@benwiggy No, la propiedad es: miniaturized

1voto

qarma Puntos 71

Yo respondí una pregunta similar en Stack Overflow, en la época en que todavía trabajaba principalmente en High Sierra. Probándolo hoy, todavía funciona en Catalina.

Esta es la parte más destacada de la respuesta:

tell application id "com.apple.systemevents" to set the value of ¬
        attribute "AXMinimized" of every window of every process ¬
        to true

Desgraciadamente, no va a minimizarlas todas simultáneamente, lo que sería encantador. Los hace uno a uno, sin necesidad de empezar por el que tienes delante. Por lo tanto, si tienes muchas ventanas abiertas, al principio puede parecer que no está haciendo nada, pero en realidad está minimizando las ventanas oscurecidas por la que está más adelante), y se minimizarán a su vez, lo que es divertido de ver la primera vez, pero molesto cada vez que quieres que se haga ahora.

Otro punto que me ha recordado amablemente @user3439894 es que Eventos del sistema sólo conoce los objetos que existen en el escritorio actualmente activo. Por lo tanto, este método no será para minimizar las ventanas que están en otros escritorios/espacios están fuera de la pantalla.

Sin embargo, si no está buscando específicamente minimizar Windows, sino más bien sacarlo de la vista, entonces puede elegir ocultar los procesos en su lugar:

tell application id "com.apple.systemevents" to ¬
        set visible of every process to false

La mayor molestia aquí es que Buscador sigue siendo visible, y tendrá que tener una línea extra de código después de deshacerse de su Windows, que sugiero debe ser:

tell application id "com.apple.Finder" to set ¬
        miniaturized of every window to true

Los beneficios, sin embargo, son que todos los Windows de todos los escritorios/pantallas desaparecerán, no sólo los de su escritorio actual; y esto tiene lugar muy rápidamente, casi instantáneamente (aparte de Buscador ). Activar la aplicación haciendo clic en su icono del dock, por ejemplo, hace que el proceso sea visible de nuevo; normalmente, esto significa que la aplicación y todas sus ventanas que estaban visibles anteriormente volverán a aparecer en masa. Que esto sea positivo o negativo dependerá de tus necesidades.


La razón por la que tu código no funciona es porque miniaturised no es una propiedad del window perteneciente al conjunto de procesos de Eventos del sistema". Diccionario AppleScript. Es es una propiedad de window objetos que pertenecen a la estándar suite de cualquier scriptable el diccionario AppleScript de la aplicación (incluyendo SystemEvents aunque no tiene Windows propio); a pesar de compartir un nombre común, estos dos window Los objetos de clase son objetos distintos y no relacionados en AppleScript.

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