Assegna un collegamento all'esecuzione di uno script in OS X


33

OS X offre un modo semplice per associare le combinazioni di tasti ai comandi che in genere vengono eseguiti sulla riga di comando?

Ad esempio, c'è un modo per assegnare ⌘ Cmd+ Lcome scorciatoia globale per bloccare rapidamente il mio schermo, possibilmente usando /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine?

Risposte:


21

Sì, puoi farlo con Applescript o Automator .

Il modo in cui ho fatto cose del genere è usare Automator per creare un servizio disponibile in tutte le applicazioni. È possibile creare un servizio per eseguire uno script bash / zsh / ruby ​​/ qualunque. Quindi è possibile associare una combinazione di tasti al servizio nel riquadro Tastiera delle preferenze di sistema.

Verso la fine di questo podcast di MacBreak questa procedura è mostrata in dettaglio.

Modifica: ho appena notato che non stai usando Snow Leopard. Non credo che creare un servizio a livello di sistema sia facile con 10.5.8. Immagino che non sia possibile eseguire l'upgrade poiché è un Powerbook. Potresti voler esaminare FastScripts che ti consente di assegnare scorciatoie da tastiera a applecripts (libero da usare per un massimo di 10 scorciatoie da tastiera) e usare il seguente Applescript:

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

36

Attualmente uso FastScripts . Include tutti gli script ~/Library/Scripts/, quindi non è necessario aggiungere script manualmente. Supporta anche script specifici dell'applicazione e ha alcune funzioni utili con AppleScripts, come se interrompesse uno script prima di un comando keystrokeo key codefino al rilascio dei tasti modificatori.

Se hai acquistato Powerpack per Alfred 2 , puoi creare flussi di lavoro come questo:

I tasti di scelta rapida hanno un breve ritardo per impostazione predefinita, ma puoi ridurlo modificando il comportamento del trigger:

KeyRemap4MacBook supporta anche l'esecuzione di script 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>

Altre applicazioni che supportano l'assegnazione di collegamenti agli script:

Un'altra opzione è quella di creare un servizio di Automator:

  1. Apri Automator e scegli il modello di servizio.
  2. Verificare che il tipo di input e l'ambito dell'applicazione siano corretti o modificare "testo selezionato" su "nessun input" se il servizio non riceve alcun input.
  3. Aggiungi un'azione Run Shell Script o Run AppleScript per lo script.
  4. Salvare il servizio e dargli un collegamento dalle Preferenze di Sistema.

Si è verificato un errore dal 10.7 in cui le scorciatoie per i servizi non funzionano sempre fino a quando non si passa il mouse sul menu dei servizi dalla barra dei menu. Le scorciatoie per i servizi non funzionano quando un'applicazione che non ha un menu di servizi (come Tower) è in primo piano. C'è anche un notevole ritardo prima dell'esecuzione dei servizi.


open -a ScreenSaverEngineè anche un po 'più breve.
Jari Keinänen,

Istruzioni Quicksilver: macosxtips.co.uk/index_files/…
paragbaxi

FastScripts è shareware da $ 10 ma ne vale la pena.
un secchione pagato

Hai un FastScript di base che fa qualcosa come legare F1 per aprire un terminale o altro?
Nick T,

1
Aggiungi Hammerspoon all'elenco :)
vault

1

Se si utilizza BetterTouchTool è possibile assegnare un collegamento al comando shell selezionando una delle seguenti azioni: Controllo di altre applicazioni> Esegui comando terminale


0

Ecco un esempio di script KeePass.sh che ho creato. Ho appena fatto Informazioni su di esso e impostato per l'esecuzione con Terminal. Successivamente, ho creato un alias sul mio desktop. Esegue lo script KeePass.sh all'interno di un Terminale e quindi dopo aver chiuso l'applicazione, uccide tutte le finestre aperte del Terminale. Potresti voler modificare l'ultima riga :-)

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

Non è necessario utilizzare nulla di speciale come nelle risposte di tutti gli altri qui.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.