Come far funzionare un servizio al momento del lancio

3

Qualche tempo fa, ho scritto alcuni servizi e li ho assegnati a combinazioni di tasti. Il problema è che, anche se i servizi sono sotto la voce di menu File dell'applicazione, devo richiamarlo manualmente la prima volta, quindi posso usare la combinazione di tasti. C'è un modo per essere in grado di utilizzare i servizi quando si avvia l'applicazione per la prima volta? Ho guardato questa risposta , ma preferirei usare un'applicazione di terze parti solo se assolutamente necessario.

    
posta Tolga Ozses 09.12.2016 - 13:09
fonte

1 risposta

1

Puoi farlo funzionare con launchd. Ciò richiede due passaggi: prima creare uno script che richiama il / i tuo / i servizio / i, e in secondo luogo creare un file plist LaunchAgent che chiamerà lo script all'avvio.

Primo passo: creazione di uno script che richiama i tuoi servizi

  1. Scrivi un file di testo con il seguente contenuto, dove ~/Library/Services/myservice.workflow punta al servizio che vuoi avviare (se vuoi avviare più di un servizio, ripeti la seconda linea che punta ai diversi servizi):

    #!/bin/bash
    automator ~/Library/Services/myservice.workflow
    
  2. Salva il file, ad es. come ~/Library/LaunchAgents/me.myname.launchmyservice.sh

  3. Rendilo eseguibile emettendo il seguente comando nel Terminale:

    chmod u+x ~/Library/LaunchAgents/me.myname.launchmyservice.sh
    

Secondo passaggio: creazione di un plist LaunchAgent che chiama lo script

  1. Scrivi un file di testo con il seguente contenuto. È necessario adattare la stringa /Users/myusername/Library/LaunchAgents/me.myname.launchmyservice.sh in modo che punti allo script creato nel primo passaggio. Non puoi utilizzare un percorso relativo con ~ .

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>Label</key>
      <string>me.myname.launchmyservice</string>
      <key>ProgramArguments</key>
      <array>
        <string>/Users/myusername/Library/LaunchAgents/me.myname.launchmyservice.sh</string>
      </array>
      <key>RunAtLoad</key>
      <true/>
    </dict>
    </plist>
    
  2. Salva il file di testo in ~/Library/LaunchAgents/me.myname.update-desktop-from-webcam.plist - il nome deve corrispondere alla chiave "Etichetta" nel file.

  3. Caricalo emettendo il seguente comando:

    launchctl load ~/Library/LaunchAgents/me.myname.update-desktop-from-webcam.plist
    
risposta data 05.02.2017 - 22:21
fonte

Leggi altre domande sui tag