Gibt es einen Terminal-Befehl zum Öffnen eines Mac-Menüleistenelements?

7

Angenommen, ich möchte eine bestimmte App mit einem Symbol in der Menüleiste öffnen. Ist dies mit einem Shell-Befehl möglich?

In meinem Fall gibt es eine App namens "Quick View Calendar" (im Mac App Store verfügbar), die in der Menüleiste angezeigt wird. Diese möchte ich mit einem Terminal-Befehl öffnen und mit diesem Code einen Automator-Dienst ausführen

Rathan
quelle
Können Sie beschreiben, welche Schritte Sie normalerweise ausführen, um die App zu öffnen? Zum Beispiel müssen Sie nur auf das Symbol in der Menüleiste klicken, oder müssen Sie mit der rechten Maustaste klicken und eine Menüoption auswählen? Gibt es eine Tastenkombination, die die App öffnet? Wenn Sie diese Fragen beantworten können, kann ich Ihnen möglicherweise eine praktikable Lösung anbieten.
CJK
Es ist ein einziger Klick, um die App zu öffnen. Standardmäßig gibt es keine Verknüpfung.
Rathan
Wenn Sie dies wirklich mit TERMINAL tun möchten und Ihre gewählte Antwort Ihnen NICHT hilft - da einige Apps nicht beschreibbar sind -, finden Sie unter dem folgenden Link eine umfassende Lösung, die einen einfachen "click x y" -Befehl zur Verfügung stellt. (Auf dieser Seite finden Sie Anleitungen
clemsam lang

Antworten:

6

Da zum Öffnen der App lediglich ein Mausklick auf das Menüleistensymbol erforderlich ist, kann AppleScript dies sehr einfach mithilfe von GUI-Skripten erreichen. Dazu müssen die richtigen Zugriffsberechtigungen für jedes Programm erteilt werden, mit dem Sie das AppleScript ausführen (zB Script Editor , Automator , Terminal , etc ..).

Erteilen Sie daher zunächst die entsprechenden Berechtigungen über die Systemeinstellungen . Dieser Screenshot stammt aus MacOS 10.13:

Systemeinstellungen unter MacOS 10.13

Öffnen Sie anschließend den Skript-Editor und führen Sie dieses Skript aus. Ich selbst habe keine Schnellkalenderansicht , aber die Prinzipien für die meisten Menüleisten-Apps sind die gleichen. Daher wird hoffentlich eine Liste der Anwendungsnamen mit Symbolen in Ihrer Menüleiste angezeigt:

    tell application "System Events" to get the name of ¬
        every process whose class of menu bar 2 is menu bar 

In der Liste, die durch Ausführen dieses Befehls zurückgegeben wird, sollte "Quick View Calendar" oder ein ähnliches Element angezeigt werden. Dies ist der Name, den ich im folgenden Snippet verwendet habe. Das ist genau das, was Sie brauchen, nämlich einen Mausklick auf das Menüleistensymbol auszugeben und die Anwendung zu öffnen. Wenn der Name etwas anderes ist, können Sie das selbst ändern:

    tell application "System Events" to tell process "Quick View Calendar" to ¬
        click menu bar item 1 of menu bar 2

Sie können diesen Code in eine Aktion " AppleScript ausführen" in Automator einfügen (vorausgesetzt, Automator wurden Zugriffsberechtigungen erteilt), die dann Teil Ihres Workflows beim Erstellen des zu erstellenden Dienstes werden.

Ihre ursprüngliche Anforderung bestand darin, einen Befehl vom Terminal aus auszuführen, um diese Aktion auszuführen. Sie können also einfach das Terminal öffnen (erneut, Zugriffsberechtigungen!) Und Folgendes eingeben:

    osascript \
        -e 'tell application "System Events" to ¬' \
        -e 'tell process "Quick View Calendar" to ¬' \
        -e 'click menu bar item 1 of menu bar 2'

Wenn Sie auf Probleme stoßen, lassen Sie es mich wissen.

CJK
quelle
1

Terminal (bash, csh, zsh usw.) "öffnet" Menübefehle nicht. Dafür ist AppleScript gedacht - es skriptet die GUI.

Damit eine Anwendung eine Option / Funktion auf der Befehlszeile "ausführt", auf die normalerweise über die Menüleiste zugegriffen wird, übergeben Sie Befehlszeilenparameter. In der Regel sieht der Befehl folgendermaßen aus:

$ command -x [optional arguments]

Der obige Befehl wird mit dem Optionsflag x(wobei xes sich um ein beliebiges Flag handelt, das der Befehl akzeptiert) und optionalen Argumenten für dieses Flag ausgeführt.

Die Einschränkung hierbei ist, dass die Anwendung Befehlszeilenoptionen akzeptieren muss . Wenn dies nicht der Fall ist, können Sie über die Befehlszeile ein Skript ausführen, um das zu tun, was Sie möchten.

Wenn dies der Fall ist, schauen Sie in AppleScript nach, aber beachten Sie, dass nicht alle Apps unter AppleScript skriptfähig sind.

Allan
quelle
Es gibt immer GUI-Skripte (diese benötigen jedoch eine Zugriffsberechtigung).
SilverWolf
0

Sie können eine sehr einfache 14-Zeilen-Foundation-Framework-App kompilieren, mit der Sie von nun an auf einen beliebigen Punkt x / y auf dem Bildschirm klicken können.

[Inhalt aufgrund massiver anonymer Abstimmungen zurückgenommen ...]

clemsam lang
quelle
[Wenn Sie eine Antwort herabstimmen, die anderen helfen soll (oder zumindest Hinweise gibt), seien Sie bitte so ehrlich, wenn Sie einen kurzen Satz schreiben, WARUM Sie ihn nicht "mögen"! ]
Clemsam Lang