Cómo cambiar a ventana modal en segundo plano

0

No sé si este problema es específico de Quicksilver o un problema general con ventanas modales. Yo uso QS para lanzar un AppleScript:

"run 'command' with administrator privileges"

Pero la ventana modal de QS para ingresar mi contraseña aparece sin foco. No puedo, necesito hacer clic en la ventana con el mouse para poder activarlo. Supongo que esto se debe a que QS ha lanzado el AppleScript "en segundo plano" por así decirlo, y ya ha vuelto a centrarse en la aplicación anterior.

¿Hay alguna manera de cambiar a esta ventana modal utilizando acciones del teclado? Es algo que necesito hacer todas las mañanas y es muy molesto tener que cambiar con el mouse cada vez. No puedo usar la pestaña Comando de Quicksilver cuando el diálogo está activo.

Zac Thompson
fuente

Respuestas:

2

Puede enfocar SecurityAgent:

osascript -e 'do shell script "ls /var/root" with administrator privileges' &
open -a SecurityAgent

Mostrar cuadros de diálogo:

tell application (path to frontmost application as text)
    --activate
    display dialog "" default answer ""
end tell

⌃F6 (Mover el foco a la ventana flotante) no funciona con los cuadros de diálogo de contraseña, y Witch tampoco los incluye. Sin embargo, puede usar un script como este:

tell application "System Events"
    repeat with p in {"SecurityAgent", "CoreServicesUIAgent", "loginwindow"}
        if exists process p then
            tell process p
                if windows is not {} then
                    set frontmost to true
                    exit repeat
                end if
            end tell
        end if
    end repeat
end tell

CoreServicesUIAgent muestra los cuadros de diálogo Gatekeeper y cuarentena. loginwindow muestra muchos de los cuadros de diálogo que se muestran al cerrar sesión.

Lri
fuente
Gracias por la info. No pude conseguir que los ejemplos anteriores funcionaran en mi guión, pero me señalaron en la dirección correcta.
Zac Thompson
0

La solución fue obvia una vez que la vi: primero haga de Quicksilver la aplicación en primer plano, luego no volverá a enfocarse en otra aplicación cuando se ejecute el script.

tell application "Quicksilver" to activate
do shell script "pmset -c displaysleep 180" with administrator privileges
Zac Thompson
fuente