Wie man einen Dienst beim Start zum Laufen bringt

Vor einiger Zeit habe ich ein paar Dienste geschrieben und sie Tastenkombinationen zugewiesen. Das Problem ist, obwohl sich Dienste unter dem Dateimenüpunkt der Anwendung befinden, muss ich sie das erste Mal manuell aufrufen, dann kann ich die Tastenkombination verwenden. Gibt es eine Möglichkeit, Dienste zu nutzen, wenn Sie die Anwendung zum ersten Mal starten? Ich habe mir diese Antwort angesehen , aber ich würde lieber nur dann eine Anwendung eines Drittanbieters verwenden, wenn ich es unbedingt muss.

Antworten (1)

Sie können dies mit launchd zum Laufen bringen. Dazu sind zwei Schritte erforderlich: Erstellen Sie zunächst ein Skript, das Ihre Dienste aufruft, und zweitens das Erstellen einer LaunchAgent-Plist-Datei, die das Skript beim Start aufruft.

Erster Schritt: Erstellen eines Skripts, das Ihre Dienste aufruft

  1. Schreiben Sie eine Textdatei mit folgendem Inhalt, wobei ~/Library/Services/myservice.workflowauf den Dienst zeigt, den Sie starten möchten (wenn Sie mehr als einen Dienst starten möchten, wiederholen Sie die zweite Zeile, die auf die verschiedenen Dienste zeigt):

    #!/bin/bash
    automator ~/Library/Services/myservice.workflow
    
  2. Speichern Sie die Datei, zB als~/Library/LaunchAgents/me.myname.launchmyservice.sh

  3. Machen Sie es ausführbar, indem Sie den folgenden Befehl im Terminal ausführen:

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

Zweiter Schritt: Erstellen einer LaunchAgent-Plist, die das Skript aufruft

  1. Schreiben Sie eine Textdatei mit folgendem Inhalt. Sie müssen den String /Users/myusername/Library/LaunchAgents/me.myname.launchmyservice.shso anpassen, dass er auf das im ersten Schritt erstellte Skript zeigt. Sie können keinen relativen Pfad mit verwenden ~.

    <?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. Speichern Sie die Textdatei unter ~/Library/LaunchAgents/me.myname.update-desktop-from-webcam.plist– der Name sollte mit dem „Label“-Schlüssel in der Datei übereinstimmen.

  3. Laden Sie es, indem Sie den folgenden Befehl ausführen:

    launchctl load ~/Library/LaunchAgents/me.myname.update-desktop-from-webcam.plist
    
Diese Antwort trifft nicht wirklich auf die Frage zu. Das Problem des OP ist wohl ein Bug in macOS. Ihre Antwort kann in einigen Fällen sogar funktionieren, da der Dienst beim Anmelden zwangsweise ausgeführt wird. Je nach Dienst kann dies jedoch zu unbeabsichtigten Folgen führen.
Es hat nicht funktioniert :(