Cómo flashear la pantalla desde la línea de comandos

¿Hay alguna manera de flashear la pantalla desde la línea de comando? Estoy buscando el mismo efecto que hace Accesibilidad para "Flash de la pantalla cuando se produce un sonido de alerta", pero no lo quiero para cada alerta.

Respuestas (5)

Hasta donde yo sé, no puede replicar esta alerta sin habilitar esa opción. Si habilita esa opción, puede provocar un flash desde la Terminal usando:

osascript -e "beep"

Sin embargo, si no desea habilitar esa opción, puede usar colores invertidos. El uso de la opción de Accesibilidad de colores invertidos dos veces hace que la pantalla parpadee, por lo tanto, al presionar el método abreviado de teclado ⌃⌥⌘8 dos veces, se producirá un parpadeo:

#!/usr/bin/osascript
tell application "System Events" to repeat 2 times
key code 28 using {command down, control down, option down}
delay 0
end repeat
Me pregunto si la secuencia de comandos puede verificar si la configuración actual es un pitido o parpadear y luego cambiar la configuración si es necesario, llamar al "bip" y luego volver a cambiar la configuración (¿solo si hizo un cambio?).
Parece que esta otra respuesta encontró una implementación aún mejor de mi comentario de código anterior. apple.stackexchange.com/a/288696/5472

No parpadea toda la pantalla (a menos que tenga el terminal configurado en pantalla completa), pero si va Preferences > Settings > Advancedy selecciona "Visual Bell", puede escribir:

echo ^G

(Las pulsaciones de teclas para obtener los caracteres correctos son: ++ echo controlporque el carácter de control tiene que estar entrecomillado)v controlg

para mostrar la ventana de la terminal.

Si bien esto funciona, el efecto es muy sutil en mi perfil de Terminal predeterminado.
Otra opción es printf '\a'.

Esto funciona para mí en Sierra a través de applescript:

tell application "System Preferences"
    run
    reveal anchor "Hearing" of pane id "com.apple.preference.universalaccess"
end tell
tell application "System Events" to tell process "System Preferences" to click button "Test Screen Flash" of window "Accessibility" of application process "System Preferences" of application "System Events"
Solución muy elegante. Sugerí en otra respuesta cambiar la configuración (si es necesario), llamar a un pitido y volver a cambiar la configuración. esto parece mucho mejor para obtener uno de los flashes.
@bmike El problema con esto es que tarda varios segundos en ejecutarse, especialmente si la aplicación no se abre primero, sin duda es elegante aparte de eso
De hecho, @grgarside: para obtener velocidad aquí, es probable que necesite usar python y los enlaces de Objective-C para crear un script de lo que es, en esencia, una pequeña aplicación de cacao para acelerar la configuración o acelerar la llamada de la función.

Para otros, una alternativa que he encontrado es usar la herramienta de línea de comandos de brillo , disponible a través de homebrew (Puedes encontrar instrucciones sobre cómo instalarla en http://brew.sh ). Enlace a la discusión: https://apple.stackexchange.com/a/127258/23876

La primera línea instala Brillo, la segunda muestra cómo se ve el brillo en acción.

brew install brightness
brightness 0; sleep 1; brightness 1

Sin embargo, solo funciona en la pantalla principal. Si esta forma de cambio de brillo es demasiado lenta para usted, experimente con el modo de suspensión 0.3 o incluso con el modo de suspensión 0.1.

También puede obtener el brillo actual para que no se restablezca a 1:

setopt rematchpcre # needs zsh
if [[ "$(brightness -l)" =~ 'display 0: brightness (\S+)' ]]; then
    print -r -- "$match[1]"
else
    return 1
fi
Algo falta ?
¿Qué le falta a @Buscar?
Lo cansé y no funciona en mi MBA 10.9.2 Error -bash: screenbrightness: comando no encontrado
@Buscar웃 La razón es que en realidad no tienes una aplicación llamada screenbrightness. Lo que puede hacer es instalar Homebrew ( brew.sh ) y luego hacer un "brillo de instalación de cerveza", y luego ejecutar "brillo 0; dormir 1; brillo 1", por ejemplo.

Este es un shellscript que llama a applescript para hacer esto (el código debe explicarse más)

#!/usr/bin/osascript
tell application "System Events" to repeat 2 times
key code 28 using {command down, control down, option down}
delay 0
end repeat
Esta respuesta es exactamente el mismo código que otra respuesta, seis meses después.