¿Cómo puedo enviar la ventana activa actualmente a la parte posterior?

15

¿Existe un acceso directo o similar para enviar la ventana activa actualmente a la parte posterior de la pantalla mientras la mantiene abierta (para que termine "debajo" de todas las demás ventanas abiertas)?

Tetsujin
fuente
2
H enviará la aplicación actual (incluidas todas sus ventanas) a la parte posterior y la ocultará hasta que la traiga al frente (desde el dock o mediante -TAB para volver a seleccionar la aplicación). En la mayoría de las aplicaciones, Shift-- ~ recorrerá las ventanas de la aplicación actual, que probablemente sea la más cercana a lo que está buscando.
Canal de micrófono
Lo sé, no es lo que quiero.
1
Si desea enviarlo hasta la parte posterior, ¿en qué ventana debería centrarse? La ventana seleccionada anterior?
sayzlim

Respuestas:

10

Respuesta corta: No , Apple no proporciona una API que le permita alterar el índice de la ventana de una aplicación, excepto al traer una ventana al frente (índice 1). No hay soluciones elegantes . Pero:

Respuesta larga: , puede usar AppleScript para mover efectivamente una ventana hacia la parte posterior de una pila de ventanas compatibles con AppleScript al recopilar una lista de ventanas y luego mover rápidamente cada una ( excepto la más frontal) hacia el frente, dejando la ventana elegida en la parte trasera.

Aquí hay un ejemplo de un AppleScript que envía la ventana del Finder frontal a la parte posterior.

tell application "Finder"
    set winList to every window whose visible is true
    if not winList = {} then
        repeat with oWin in (items 1 through -2 of reverse of winList)
            set index of oWin to 1
        end repeat
    end if
end tell

Este script está basado en una solución de JMichaelTX discutida en el foro KeyboardMaestro.

La reorganización es increíblemente rápida, pero en el Editor de secuencias de comandos puede inspeccionar cómo funciona, dejando "506" en la parte inferior y haciendo estallar "502-505" de una manera que conserva su orden:

get every window whose visible = true
    --> {Finder window id 506, Finder window id 505, Finder window id 504, Finder window id 503, Finder window id 502}
set index of Finder window id 502 to 1
    --> 1
set index of Finder window id 503 to 1
    --> 1
set index of Finder window id 504 to 1
    --> 1
set index of Finder window id 505 to 1
    --> 1

Puede asignar este AppleScript a un servicio o método abreviado de teclado, ya sea a) colocando el script en una acción Ejecutar AppleScript dentro de un servicio Automator, ob) usando un iniciador (Alfred, Keyboard Maestro, etc.). Para obtener detalles sobre la asignación del teclado Applescript, consulte: ¿Cómo asigno un atajo de teclado a un AppleScript que escribí?

Esto puede satisfacer las necesidades de los OP: no está claro en la publicación original. Esta solución también se puede extender a múltiples aplicaciones compatibles con AppleScript. Estoy No obstante, es consciente de una solución para que funcione con eficacia con una mezcla de secuencias de comandos de Windows y no de secuencias de comandos, debido al hecho de que en AppleScript, System Eventsventanas direccionables para aplicaciones que no son de secuencias de comandos no tienen un set indexverbo / propiedad. Existe una acción "AXRaise" para algunas ventanas cuando los dispositivos de asistencia / accesibilidad están activados, pero esto tampoco se aplica a todas las ventanas. Existen trucos elaborados que implican recorrer cada aplicación activa y mostrar / ocultar o minimizar / restaurar ventanas, pero son un desastre.

Discusiones relacionadas:

JeremyDouglass
fuente
¿Es posible enviar la ventana de cualquier aplicación a la parte posterior, en lugar de la ventana de una aplicación específica?
Di Liu
Lamentablemente, a partir de Mojave, parece que esto ya no funciona.
Edward Falk el
Desde Mojave, entiendo que controlar Finder con AppleScript ahora necesita permisos para ejecutarse (no probado). Si recibe errores como errAEEventNotPermitted, entonces hay soluciones para agregar estos permisos; consulte los debates relacionados: forums.developer.apple.com/thread/106949
JeremyDouglass
2

Su pregunta no es muy clara, pero si lo que quiere es un atajo para recorrer todas las ventanas de la aplicación actualmente activa, debería poder hacerlo con el Command~atajo de teclado.

La ~clave generalmente se encuentra a la izquierda de la 1clave.

Solo para aclarar, lo que hace el Command~método abreviado de teclado es recorrer todas las ventanas de la aplicación actual en la que se encuentra. Por ejemplo, si está utilizando MS Word y tiene tres documentos abiertos, se desplazará por esos tres documentos.

Sin embargo, el Command~método abreviado de teclado no se desplaza por las pestañas. Por ejemplo, si tiene Safari abierto con tres ventanas y cada ventana tiene cinco pestañas abiertas, el uso de este acceso directo recorrerá las tres ventanas, no las pestañas individuales.

Otra opción que puede lograr lo que quieres es el CommandMatajo de teclado. Sin embargo, esto minimiza la ventana actualmente activa al Dock, por lo que sospecho que eso no es lo que quieres.

Si he entendido mal su pregunta totalmente, por favor aclare.

Monomeeth
fuente
Creo que este es el caso de uso que quiere el OP: digamos que tengo la aplicación de mensajes abierta frente a mi aplicación de correo y quiero poner rápidamente la aplicación de correo en primer plano y enviar mensajes en segundo plano, puedo hacer un teclado acceso directo y la aplicación de mensajes estará detrás de mi aplicación de correo. Probé el atajo de teclado y esto no lo logré.
owlswipe
Creo que te refieres a la `clave. ~ es el único impreso cuando se mantiene Shift y se presiona `
Crowder