Przypisz skrót do uruchamiania skryptu w OS X.

33

Czy OS X zapewnia łatwy sposób wiązania kombinacji klawiszy z poleceniami, które zwykle są uruchamiane w wierszu poleceń?

Na przykład, czy jest jakiś sposób przypisania ⌘ Cmd+ Ljako globalnego skrótu, aby szybko zablokować ekran, prawdopodobnie używając /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine?

Stefan Lasiewski
źródło

Odpowiedzi:

21

Tak, możesz to zrobić za pomocą Applescript lub Automator .

Sposób, w jaki to zrobiłem, to użycie Automatora do stworzenia usługi, która jest dostępna we wszystkich aplikacjach. Można wykonać usługę uruchamiania skryptu bash / zsh / ruby ​​/ any. Następnie możesz powiązać kombinację klawiszy z usługą w panelu Klawiatura w preferencjach systemowych.

Pod koniec tego podcastu MacBreak procedura ta jest szczegółowo pokazana.

Edycja: Właśnie zauważyłem, że nie używasz Snow Leopard. Nie sądzę, aby tworzenie usługi ogólnosystemowej było tak łatwe w 10.5.8. Myślę, że nie możesz uaktualnić, ponieważ jest to Powerbook. Możesz zajrzeć do FastScripts, który pozwala przypisywać skróty klawiaturowe do skryptów AppleScript (do użycia maksymalnie dla 10 skrótów klawiaturowych) i używać następującego Applescript:

do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine"
ghoppe
źródło
36

Obecnie używam FastScripts . Zawiera wszystkie skrypty ~/Library/Scripts/, więc nie musisz dodawać skryptów ręcznie. Obsługuje również skrypty specyficzne dla aplikacji i ma kilka funkcji przydatnych w AppleScripts, takich jak zatrzymanie skryptu przed poleceniem keystrokelub key codedo momentu zwolnienia klawiszy modyfikujących.

Jeśli kupiłeś Powerpack dla Alfreda 2 , możesz tworzyć takie przepływy pracy:

Klawisze skrótów mają domyślnie krótkie opóźnienie, ale można je zmniejszyć, zmieniając zachowanie wyzwalacza:

KeyRemap4MacBook obsługuje również uruchamianie skryptów powłoki:

<?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>

Inne aplikacje obsługujące przypisywanie skrótów do skryptów:

Inną opcją jest utworzenie usługi Automator:

  1. Otwórz Automator i wybierz szablon usługi.
  2. Sprawdź, czy typ wprowadzania i zakres zastosowania są prawidłowe, lub zmień „zaznaczony tekst” na „brak wprowadzania”, jeśli usługa nie otrzymuje żadnych danych wejściowych.
  3. Dodaj dla skryptu akcję Uruchom skrypt Shell lub Uruchom AppleScript.
  4. Zapisz usługę i nadaj jej skrót w Preferencjach systemowych.

Wystąpił błąd od 10.7, w którym skróty do usług nie zawsze działają, dopóki nie najedziesz myszą na menu usług z paska menu. Skróty do usług nie działają, gdy aplikacja, która nie ma menu usług (np. Wieża), znajduje się na pierwszym planie. Istnieje również zauważalne opóźnienie przed uruchomieniem usług.

Lri
źródło
open -a ScreenSaverEnginejest nawet odrobinę krótszy.
Jari Keinänen,
Instrukcje Quicksilver: macosxtips.co.uk/index_files/…
paragbaxi
FastScripts to shareware za 10 USD, ale warto.
płatny frajer
Czy masz podstawowy skrypt FastScript, który działa jak polecenie F1, aby otworzyć terminal lub cokolwiek innego?
Nick T
1
Dodaj Hammerspoon do listy :)
sklepienie
1

Jeśli używasz BetterTouchTool, możesz przypisać skrót do polecenia powłoki, wybierając następującą akcję: Kontrolowanie innych aplikacji> Wykonaj polecenie terminala

alexeit
źródło
0

Oto przykład skryptu KeePass.sh, który wykonałem. Właśnie dostałem informacje na ten temat i uruchomiłem go z terminalem. Następnie utworzyłem alias do tego na pulpicie. Uruchamia skrypt KeePass.sh wewnątrz terminala, a następnie po zamknięciu aplikacji zabija wszystkie otwarte okna terminala. Możesz dostosować tę ostatnią linię :-)

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

Nie musisz tutaj używać niczego specjalnego, jak w odpowiedziach innych osób.

zaraz
źródło