Usando AppleScript para bloquear la pantalla

11

Necesito un applecript que bloquee mi Mac de la misma manera que presionaría shift+ ctrl+ eject. Intenté dos enfoques diferentes, pero ambos fallaron. El primero fue buscar en Internet un script, que falló. Solo hay soluciones con salvapantallas u otras aplicaciones, que no quiero. Solo quiero usar lo que describí. El segundo fue decirle a AppleScript que presione las tres teclas que no funcionaron. Si alguien pudiera decirme cómo bloquear mi Mac o cómo decirle a AppleScript que presione tres teclas, estaría muy feliz, porque me siento un poco frustrado.

Lavaking
fuente

Respuestas:

13

Obteniendo información de esta respuesta y esta respuesta:

  1. Presione el botón Spotlight en la esquina superior derecha de la pantalla ( Cmd+ Space)
  2. Buscar Keychain Access. Abre esto
  3. Preferencias abiertas ( Cmd+ ,(coma))
  4. Cheque Show Status in Menu Bar
  5. Presione el botón Spotlight en la esquina superior derecha de la pantalla ( Cmd+ Space)
  6. Buscar Automator. Selecciona esto
  7. Crear nuevo Service
  8. Busque al Run Applescriptlado de los botones Actionsy Variables. Haga doble clic en esto.
  9. Asegúrese de que las casillas de verificación estén Service receives no input in any application
  10. Pegue este Applescript:

tell application "System Events" to tell process "SystemUIServer"
    tell (menu bar item 1 of menu bar 1 where description is "Keychain menu extra")
        click
        click menu item "Lock Screen" of menu 1
    end tell
end tell

Guarde este Automator como algo parecido Lock screen(nota: el código en GIF es diferente!)

ingrese la descripción de la imagen aquí


Para hacer un atajo:

  1. Presiona el botón Apple en la esquina superior izquierda de la pantalla
  2. Hacer clic System Preferences
  3. Hacer clic Keyboard
  4. Haga clic en la Keyboard Shortcutspestaña
  5. Hacer clic Services
  6. Encuentra el nombre del servicio que acabas de crear
  7. Haga clic en el espacio en blanco a la derecha
  8. Escriba su acceso directo en

¡Utiliza tu acceso directo en cualquier aplicación!

ingrese la descripción de la imagen aquí


O...:

  1. Podrías comprar Alfred
  2. Podrías usar Cmd+ Shift+Eject
ᔕᖺᘎᕊ
fuente
3
Solo para tener en cuenta: alfred y cmd + shift + eject matan la red cuando suspende la máquina. Esto es muy útil porque simplemente bloquea la pantalla.
BeepDog
3
Cuando ejecuto el script, abre el menú del llavero y se atasca. Cuando cierro el menú, System Events got an error: Can’t get menu 1 of menu bar item 2 of menu bar 1 of application process "SystemUIServer". Invalid index.
aparece
@AgentME, ¿estás seguro de que has realizado los pasos 1-4? También he actualizado el código, así que intente eso después de realizar los pasos 1-4 :)
ᔕᖺᘎᕊ
@ ᔕᖺᘎᕊ Recibo el mismo error que el anterior, "Índice inválido"
7

Encontré esto en otra respuesta, pero un AppleScript que simplemente contiene los siguientes trabajos para mí.

 tell application "Finder" to sleep
Alistair McMillan
fuente
1
Combiné esta respuesta con la respuesta aceptada y funcionó muy bien. Quizás la respuesta aceptada podría incorporar esto.
David Cullen
Contrariamente al código en la respuesta aceptada, el código de esta respuesta no requiere privilegios de configuración para todas las aplicaciones en las que desea utilizar su acceso directo y tampoco requiere que el estado del llavero sea visible en la barra de menú.
valyron
Depende de las preferencias del tiempo en que el sueño realmente se bloquea Desafortunadamente para mí, esto no funciona porque nuestra organización obliga al entorno a
cerrarse
3

macOS 10.11, El Capitan, parece haber roto la respuesta de ᔕᖺᘎᕊ usando AppleScripts, pero descubrí que si instalé Lock Screen e hice que mi Servicio Automator abra su "Lock Screen Bundle", el resto del proceso funcionó como estaba previsto (siempre que llamé el servicio "pantalla de bloqueo", no "pantalla de bloqueo": aparentemente los espacios en el nombre del archivo rompen el atajo de teclado para muchos usuarios de macOS).

Consulte el acceso directo de la pantalla de bloqueo en Mac OS X para obtener una guía ilustrada paso a paso.

Alice Purcell
fuente
3

Tengo una línea simple para esto. Utiliza System Events para enviar el combo de teclas predeterminado para el comando Bloquear pantalla y funciona en todas las versiones de OSX desde High Sierra (10.13) en adelante. ¡Incluso Mojave! Aunque solicitará permisos de seguridad adicionales para la aplicación, en las versiones más recientes de OSX

tell application "System Events" to keystroke "q" using {control down, command down}
usuario1270949
fuente
1
Esta pregunta se hizo el 21 de junio de 2014 y su respuesta no es aplicable a las versiones de OS X que se ejecutan en ese momento. Por favor, editar su respuesta para incluir contexto relevante de qué versiones de macOS Esto funciona.
user3439894
1
Funciona en todas las versiones de OSX. incluido Mojave
usuario1270949
No es un método abreviado de teclado predeterminado en todas las versiones de OS X y, de hecho, no funciona en ninguna versión de OS X y solo se introdujo en una de las versiones de macOS.
user3439894
1
Mira, solo estoy tratando de ayudar y dar una respuesta que funcionó para mí. No te gusta Bórralo. No podría importarme menos
user1270949
2
Funciona como un encanto (al menos lo hace para mí en Mojave). No estoy seguro de por qué este otro comentarista dice que no funciona. Es una solución simple y limpia. Gracias por compartirlo.
GDP2
2

Yo uso una macro para aceptar el acceso directo Comando-L. Habiendo cambiado recientemente de Windows a Mac, era importante una manera fácil de bloquear mi pantalla. En Windows, uno simplemente necesita presionar la tecla de Windows y L, y listo, bloqueado.

Usando Keyboard Maestro , creé una macro para el acceso directo Command-L, que es esencialmente la misma (comparando la tecla Command con la tecla Windows). El acceso directo activa la función "Ventana de inicio de sesión", que bloquea la pantalla. Fácil, al menos para mí.

(En Keyboard Maestro, la función "Ventana de inicio de sesión" se encuentra en Acciones> Control del sistema).

bifjamod
fuente
1

Para High Sierra (10.13), la respuesta aceptada no funciona ya que Keychain Access no tiene Check Show Status in Menu Baropción. Pero, basado en el saqueo descarado de la fuente de la aplicación Lockscreen (como lo mencionó @Alice Purcell), descubrí esta ingeniosa solución de guión de GUI:

activate application "SystemUIServer"
tell application "System Events"
    tell process "SystemUIServer" to keystroke "q" using {command down, control down}
end tell
ijoseph
fuente