Designe um atalho para executar um script no OS X

33

O OS X fornece uma maneira fácil de vincular combinações de teclas a comandos que são normalmente executados na linha de comando?

Por exemplo, existe alguma maneira de atribuir Cmd + L como um atalho global para bloquear rapidamente minha tela, possivelmente usando /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine ?

    
por Stefan Lasiewski 18.06.2010 / 01:03

4 respostas

21

Sim, você pode fazer isso com o Applescript ou com o Automator .

A maneira como eu fiz coisas assim é usar o Automator para criar um serviço que está disponível em todos os aplicativos. Um serviço pode ser feito para executar um script bash / zsh / ruby / whatever. Em seguida, você pode vincular uma combinação de teclas ao serviço no painel Teclado das preferências do sistema.

Perto do final do este podcast do MacBreak este procedimento é mostrado em detalhes.

Edit: Acabei de perceber que você não está usando o Snow Leopard. Eu não acho que criar um serviço para todo o sistema é tão fácil com o 10.5.8. Eu acho que você não pode atualizar desde que é um Powerbook. Você pode querer olhar em FastScripts que lhe permite atribuir atalhos de teclado a applescripts (livre para usar até 10 teclados atalhos) e use o seguinte Applescript:

do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"
    
por 18.06.2010 / 01:33
36

Atualmente, uso os FastScripts . Ele inclui todos os scripts em ~/Library/Scripts/ , portanto, você não precisa adicionar scripts manualmente. Ele também suporta scripts específicos de aplicativos, e possui alguns recursos que são úteis com o AppleScripts, como um script antes de um comando keystroke ou key code , até que as teclas modificadoras sejam liberadas.

SevocêcomprouoPowerpackparao Alfred 2 , pode criar fluxos de trabalho como este:

Teclasdeatalhotêmumpequenoatrasoporpadrão,masvocêpodereduzi-loalterandoocomportamentodoacionador:

O KeyRemap4MacBook também suporta a execução 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>

Outras aplicações que suportam a atribuição de atalhos para scripts:

Outra opção é criar um serviço do Automator:

  1. Abra o Automator e escolha o modelo de serviço.
  2. Verifique se o tipo de entrada e o escopo do aplicativo estão corretos ou altere o "texto selecionado" para "sem entrada" se o serviço não receber nenhuma entrada.
  3. Adicione uma ação Executar script shell ou Executar AppleScript para o script.
  4. Salve o serviço e forneça um atalho a partir das Preferências do Sistema.

Ocorreu um erro desde 10.7, em que os atalhos para os serviços nem sempre funcionam até você passar o mouse sobre o menu de serviços na barra de menus. Os atalhos para serviços não funcionam quando um aplicativo que não tem um menu de serviços (como o Tower) é o mais avançado. Há também um atraso perceptível antes que os serviços sejam executados.

    
por 31.03.2011 / 18:55
1

Se você estiver usando o BetterTouchTool, você pode atribuir um atalho ao comando shell selecionando uma ação a seguir: Controlando outros aplicativos > Execute o comando do terminal

    
por 20.10.2014 / 23:47
0

Aqui está um exemplo do script KeePass.sh que eu fiz. Acabei de obter informações sobre isso e configurá-lo para executar com o Terminal. Depois disso, criei um alias para ele no meu desktop. Ele executa o script KeePass.sh dentro de um Terminal e depois que você sai do aplicativo, ele mata todas as janelas do Terminal abertas. Você pode querer ajustar a última linha: -)

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

Você não precisa usar nada de especial como nas respostas de todos os outros aqui.

    
por 07.01.2017 / 23:12