Asignar un acceso directo para ejecutar un script en OS X

33

¿OS X proporciona una manera fácil de vincular combinaciones de teclas a comandos que generalmente se ejecutan en la línea de comandos?

Por ejemplo, ¿hay alguna forma de asignar ⌘ Cmd+ Lcomo un atajo global para bloquear rápidamente mi pantalla, posiblemente usando /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine?

Stefan Lasiewski
fuente

Respuestas:

21

Sí, puede hacerlo con Applescript o Automator .

La forma en que he hecho cosas como esta es usar Automator para crear un Servicio que esté disponible en todas las aplicaciones. Se puede hacer un servicio para ejecutar un script bash / zsh / ruby ​​/ whatever. Luego puede vincular una combinación de teclas al servicio en el panel Teclado de las preferencias del sistema.

Cerca del final de este podcast de MacBreak, este procedimiento se muestra en detalle.

Editar: Acabo de notar que no estás usando Snow Leopard. No creo que crear un servicio en todo el sistema sea tan fácil con 10.5.8. Supongo que no puedes actualizar ya que es un Powerbook. Es posible que desee consultar FastScripts, que le permite asignar métodos abreviados de teclado a AppleScript (uso gratuito para hasta 10 métodos abreviados de teclado) y utilizar el siguiente Applescript:

do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"
ghoppe
fuente
36

Actualmente uso FastScripts . Incluye todos los scripts ~/Library/Scripts/, por lo que no tiene que agregar scripts manualmente. También admite scripts específicos de la aplicación, y tiene algunas características que son útiles con AppleScripts, como detener un script antes de un comando keystrokeo key codehasta que se liberen las teclas modificadoras.

Si ha comprado el Powerpack para Alfred 2 , puede crear flujos de trabajo como este:

Las teclas de acceso rápido tienen un breve retraso de forma predeterminada, pero puede reducirlo cambiando el comportamiento del disparador:

KeyRemap4MacBook también admite la ejecución de scripts de shell:

<?xml version="1.0"?>
<root>
  <vkopenurldef>
    <name>KeyCode::VK_OPEN_URL_SHELL_say_a</name>
    <url type="shell">say a</url>
  </vkopenurldef>
  <item>
    <name>test</name>
    <identifier>test</identifier>
    <autogen>__KeyToKey__ KeyCode::A, KeyCode::VK_OPEN_URL_SHELL_say_a</autogen>
  </item>
</root>

Otras aplicaciones que admiten la asignación de accesos directos a scripts:

Otra opción es crear un servicio Automator:

  1. Abra Automator y elija la plantilla de Servicio.
  2. Compruebe que el tipo de entrada y el alcance de la aplicación son correctos, o cambie "texto seleccionado" a "sin entrada" si el servicio no recibe ninguna entrada.
  3. Agregue una acción Ejecutar script de Shell o Ejecutar AppleScript para el script.
  4. Guarde el servicio y dele un acceso directo desde Preferencias del sistema.

Ha habido un error desde 10.7 donde los accesos directos para los servicios no siempre funcionan hasta que pasa el cursor sobre el menú de servicios desde la barra de menú. Los accesos directos para servicios no funcionan cuando una aplicación que no tiene un menú de servicios (como Tower) está en primer plano. También hay un retraso notable antes de que se ejecuten los servicios.

Lri
fuente
open -a ScreenSaverEnginees incluso un poco más corto.
Jari Keinänen
Instrucciones de Quicksilver: macosxtips.co.uk/index_files/…
paragbaxi
FastScripts es $ 10 shareware pero vale la pena.
un nerd pagado el
¿Tiene un FastScript básico que hace algo como enlazar F1 para abrir un terminal o lo que sea?
Nick T
1
Agregue Hammerspoon a la lista :)
bóveda
1

Si está utilizando BetterTouchTool, puede asignar un acceso directo al comando de shell seleccionando una acción siguiente: Control de otras aplicaciones> Ejecutar comando de terminal

alexeit
fuente
0

Aquí hay un ejemplo de script KeePass.sh que hice. Acabo de obtener información sobre él y lo configuré para que se ejecute con Terminal. Después de eso, creé un alias en mi escritorio. Ejecuta el script KeePass.sh dentro de una Terminal y luego, después de salir de la aplicación, elimina cualquier ventana de Terminal abierta. Es posible que desee modificar esa última línea :-)

cd ~/Documents/KeePass
/Library/Frameworks/Mono.framework/Versions/current/bin/mono KeePass.exe 1>/dev/null 2>/dev/null
cd ~
killall Terminal

No necesita usar nada especial como en las respuestas de todos los demás aquí.

luego
fuente