Esiste un comando Terminale per aprire un elemento della barra dei menu del Mac?

5

Supponiamo di voler aprire un'app specifica con un'icona sulla barra dei menu, è possibile farlo utilizzando un comando di shell?

Nel mio caso, c'è un'app chiamata "Quick View Calendar" (disponibile su Mac App Store) che compare nella barra dei menu, che vorrei aprire con un comando Terminale e utilizzare quel codice per eseguire un Servizio di automazione per

    
posta Rathan 24.02.2018 - 04:37
fonte

3 risposte

5

Poiché è sufficiente un solo clic sull'icona della barra dei menu per aprire l'app, AppleScript può ottenere questo risultato molto facilmente utilizzando lo scripting GUI, che richiede che le autorizzazioni di accessibilità siano concesse a qualsiasi programma tu voglia utilizzare eseguire l'AppleScript (ad esempio Script Editor , Automator , Terminal , ecc.).

Quindi, in primo luogo, concedere le autorizzazioni appropriate tramite Preferenze di sistema . Questo screenshot proviene da MacOS 10.13:

Dopoaverlofatto,apriScriptEditoredeseguiquestoscript.NonhoVistacalendariovelocemestesso,maiprincipiperlamaggiorpartedelleappdellabarradeimenusonoglistessi,quindisisperachesiottengaunelencodinomidiapplicazionichehannoiconenellabarradeimenu:

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

"Quick View Calendar" o qualcosa di simile dovrebbe apparire nell'elenco che viene restituito eseguendo quel comando. Questo è il nome che ho usato nel seguente snippet, che è ciò che effettivamente fa ciò di cui hai bisogno, in particolare per emettere un clic del mouse sull'icona della barra dei menu e aprire l'applicazione. Se il nome è qualcosa di diverso, puoi cambiarlo tu stesso:

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

Puoi incollare questo codice in un'azione Esegui AppleScript in Automator (di nuovo, a condizione che Automator sia stato concesso permessi di accessibilità), che quindi diventa parte del tuo flusso di lavoro nella creazione del servizio che desideri creare.

La tua richiesta originale era di eseguire un comando da Terminale per eseguire questa azione, quindi puoi semplicemente aprire Terminale (ancora, permessi di accessibilità!), e digitare questo :

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

Se riscontri problemi, fammelo sapere.

    
risposta data 25.02.2018 - 12:51
fonte
1

Terminale (bash, csh, zsh, et. al.) non "apre" i comandi della barra dei menu. Questo è ciò che è per AppleScript - script della GUI.

Per ottenere un'applicazione per "eseguire" un'opzione / funzione sulla riga di comando a cui normalmente si accede tramite la barra dei menu, si passano i parametri della riga di comando. In genere, il comando ha il seguente aspetto:

$ command -x [optional arguments]

Il comando precedente verrà eseguito con l'opzione flag x (dove x è una qualsiasi bandiera che accetta il comando) e qualsiasi argomento facoltativo per quel flag.

L'avvertenza qui è che l'applicazione deve accettare le opzioni della riga di comando. In caso contrario, non ci sarà nulla da poter scrivere dalla riga di comando per fare ciò che vuoi.

Se questo è il caso, guarda ad AppleScript, ma ricorda che non tutte le app sono scriptable in AppleScript.

    
risposta data 24.02.2018 - 11:46
fonte
0

Puoi compilare una semplice applicazione framework a 14 linee Foundation, che da quel momento in poi ti darà la possibilità di fare clic su qualsiasi punto x / y sullo schermo,

[Contenuti ritirati a causa del massiccio sms down-voting ...]

    
risposta data 09.11.2018 - 19:01
fonte

Leggi altre domande sui tag