1 votos

Ejecutar AppleScript para un monitor específico

He habilitado el Dictado para las indicaciones de comandos a través de la voz [lo obtuve de la aplicación de Ajedrez enviada por el sistema operativo en Lion]. Decidí darle una oportunidad a System Wide ahora en 2015 con Yosemite. Me gusta hasta ahora, sin duda se ve mejor y funciona mejor en comparación con Lion (que debería ser el caso) Hay algunas opciones personalizables cuando 'Habilitar comandos avanzados' como archivo abierto, ejecutar el flujo de trabajo, abrir la aplicación, pegar texto, pegar datos, y atajo de teclado.

Sin embargo, llámame vago pero sigue siendo algo que me importa, frecuento Netflix & Hulu y otros sitios web como mínimo 4 veces al día. Me gustaría añadir un comando funcional que abra automáticamente una página web correlativa a ese comando. ya que Abrir es diferente de ejecutar el archivo, estoy tratando de abrir autónomamente Safari + el nombre del sitio web en forma de URL con el dictado? Lo bueno de esto es que automáticamente hace que la aplicación a la que se hace referencia sea la ventana más frontal. Así que la codificación debe ser mínima, y realmente no quiero crear un servicio para esto [mis servicios están creciendo, actualmente en +55 en total].

Sin embargo, soy un aficionado a Automator y estoy bien versado en él, por lo que estoy utilizando la herramienta de comandos de dictado, pero lo que no soy, es un erudito de AppleScript. Después de leer en la biblioteca de applescript durante unos 60 minutos, finalmente descubrí cómo abrir una nueva ventana de Safari, activar la aplicación en caso de que no estuviera abierta y lanzar la url:

tell application "Safari" to activate
    tell application "Safari"
        make new document with properties {URL:"http://netflix.com"}
end tell

Además, tengo 3 monitores. Siempre tengo películas, televisión, etc. en el número 2. Intenté poner Safari en la pantalla del monitor 2 con applescript pero como desarrollador de iOS, en buena conciencia estoy demasiado avergonzado para compartir mi código, es un descuido . ¿Alguien puede guiarme en la dirección correcta? ¿O alguien conoce una forma más simplificada de evitar todo esto? Realmente quiero que esto funcione. Estoy en el ejército por lo que nuestras habitaciones no son tan grandes por lo que mi segundo monitor (27 ") es mi televisión, así que he creado una aplicación para el iPhone sólo para mis necesidades que simula estrictamente el doble fn pulse para activar el Dictado para poder ver la televisión desde mi cama [no tengo apple tv].


EDITAR: Mi objetivo principal es poder utilizar la activación por voz para rellenar un sitio web específico de Safari utilizando el Dictado para un monitor específico. No quiero sacrificar mis ajustes de 'Spaces' o 'Mission Control', ya que he trabajado mucho para que sean beneficiosos para mi flujo de trabajo. Tengo 3 monitores, que están configurados en sucesión (es decir, los monitores 1 y 3 están uno al lado del otro en mi estación de escritorio, el monitor 1 está a la izquierda y el 3 a la derecha, el monitor 2 no está cerca del 1 o el 3, está frente a mi cama, ver la foto 1 para referencia. Sin embargo, están configurados en sucesión 1 va a 2, 2 va a 3. Tengo espacios configurados donde las aplicaciones específicas utilizan el monitor número 3 exclusivamente (Xcode) que no lo hace tanto de una molestia como parece, es por eso que no quiero sacrificar mi configuración de espacios porque uso 2 como mi "TV" dedicado, esto no es tan grande de un problema sin embargo y se puede cambiar, ni siquiera sé por qué lo hago, pero funciona por lo que realmente no he molestado en probar nada más)

PIC 1: pic1


La sugerencia de miken32 funciona, pero sólo para mostrarlo, no para minimizarlo. Minimizar es importante, porque tendré que minimizar el sitio web activo de Safari, digamos Hulu, sólo para abrir Netflix porque las aplicaciones de pantalla completa no pueden superponerse. Así que inevitablemente haré otra activación por voz o de otro modo para minimizar y poder transferir sitios web sin tapujos. Nota: a veces no quiero cerrar, a veces guardo mi sitio así que minimizar es un buen recurso para mí. Esto es lo que pasa con miken32: se minimiza pero creo que intenta volver a los orígenes que fijamos en el script, pero de forma negativa como en (-). NOTA: Sé que los orígenes que se ven en el applescript de la película no reflejan el origen absoluto para mi monitor específico, cambié los orígenes para probar, pero para grabar la película tenía que ponerla en esa pantalla así que lo mantuve como está sólo para que se vea a dónde va cuando se minimiza. Aparte de eso funciona muy bien para la cantidad de código!. Me alegro de que ustedes incluyeron la opción de pantalla completa, incluso cuando no lo pedí, eso es absolutamente lo que tenía en mente, pero no quería molestar a nadie tratando de averiguar que, mi objetivo principal era sólo conseguir que en el segundo monitor.

https://www.dropbox.com/s/jvmtnhh30hqmd36/answer1.mov?dl=0


La respuesta de markhuntes funciona perfectamente, el tiempo que tardó en cargar la primera vez fue de unos 15 segundos, nada de lo que preocuparse, pero definitivamente no es óptimo para el uso diario, sin embargo, las siguientes veces fue mínimo (3-6 segundos máximo). Lo que me gusta de su sugerencia es que encuentra automáticamente el segundo monitor en lugar de tener que codificarlo, lo que es genial desde el punto de vista del consumidor, cuanto menos tenga que manipular, mejor, esta es una gran característica para el futuro, si cambio mi configuración o consigo un monitor de tamaño diferente, etc., no tengo que volver a codificar un origen absoluto. Hay un inconveniente a partir de ahora, voy a jugar con él durante un par de días sólo para asegurarse de que no está en conflicto con mis otras preferencias del sistema. Se minimiza donde debe, lo que es genial, se rellena con precisión, pero he descubierto que si Safari ya es la aplicación más frontal (a veces, más precisamente, rara vez, se rellena en el mismo espacio o (monitor 1) que Safari ya está activo. La razón por la que quería que se mostrara específicamente en el monitor 2 es porque, por supuesto, no sólo uso Safari en ese monitor. Una vez más, podría ser mi configuración, tengo un montón de esquinas calientes y teclas de control de la misión y las preferencias de los espacios establecidos por lo que voy a jugar con él sólo para asegurarse de que no es yo y volver a usted

4voto

Malik hassan Puntos 16

Este script en un comando de dictado de Automator parece funcionar.

No la pantalla completa no funcionará correctamente si se ejecuta en Automator o scripteditor. Recoge la ventana anterior 1.

Pero en cualquier momento conseguí que el comando de Dictado funcionara. ( siempre me resulta un poco pesado conseguir que me entiendan) conseguía la ventana correcta al 100%.

Este script utiliza el perfilador del sistema para obtener los monitores. y un poco de jiggery simple para utilizar el ancho del monitor 1 para determinar dónde están los límites del monitor dos.

Lo hice de esta manera porque usted puede elegir no usar la pantalla completa

También he intentado que el script sea accesible para personas con un solo monitor

set theScreens to paragraphs of (do shell script "system_profiler SPDisplaysDataType -detailLevel |grep \"Resolution:\" | awk -F\"Resolution: \" '{print $2}'")
set theMonitor to ""

set the counter to count of theScreens --- set to 1 if you want to test it on monitor 1
if (counter) > 1 then
    -- we will do things for monitor 2
    set thisDisplayWidthHeightMonitor_2 to {(word 1 of item 1 of theScreens) + 2, 0, ((word 1 of item 1 of theScreens) + (word 1 of item 2 of theScreens)), word 3 of item 2 of theScreens}
    set theMonitor to thisDisplayWidthHeightMonitor_2
else
    -- we will do things for monitor 1
    set thisDisplayWidthHeightMonitor_1 to {0, 0, (word 1 of item 1 of theScreens), (word 3 of item 1 of theScreens)}
    set theMonitor to thisDisplayWidthHeightMonitor_1
end if

tell application "Safari"
    activate
    make new document with properties {URL:"http://netflix.com", index:1}

    set bounds of window 1 to theMonitor

end tell

tell application "System Events"
    tell application process "Safari"
        set value of attribute "AXFullScreen" of window 1 to true
    end tell
end tell

2voto

Neil McKeown Puntos 348

Tomaré mi comentario y lo convertiré en una respuesta; asumiendo que entiendo lo que buscas al menos.

He probado este código y me funciona bien. Tendrás que ajustar los números para indicar la posición relativa de tu monitor. Asumiendo que no mueves tus pantallas, es una entrada única.

Crédito a esta respuesta en SO que también proporciona un enlace a una utilidad para obtener los detalles de la posición de la pantalla.

# this needs to be a position on the desired monitor
set monitorPosition to {-1920, -1380}

tell application "Safari"
    activate
    make new document with properties {URL:"http://netflix.com"}
end tell

tell application "System Events"
    tell process "Safari"
        set position of first window to monitorPosition
        set value of attribute "AXFullScreen" of first window to true
    end tell
end tell

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