Esiste un'utilità della riga di comando per visualizzare una stringa o un'immagine nella barra di stato in Mavericks?

3

Fondamentalmente voglio emettere un comando in uno script bash o in uno script Apple e vedi qualche stringa (o icona) nella barra di stato alias "dove è l'orologio".

Qualcosa di simile a osascript ma per la barra di stato:

/ usr / bin / osascript -e 'mostra notifica "Lorem ipsum dolor sit amet" con titolo "Titolo"'

    
posta user151851 23.09.2014 - 22:24
fonte

1 risposta

6

Questo è qualcosa che ho cercato molto tempo fa e non ho trovato una soluzione soddisfacente. La tua domanda mi ha ispirato a finire il progetto che ho iniziato quando stavo cercando una soluzione a questo.

Dai un'occhiata a menubarnotifier su GitHub. È possibile visualizzare una notifica nella barra dei menu passando una stringa allo script:

./menubarnotifier.py "Notification Text Here"

... e verrà visualizzato nella barra dei menu di OS X. Facendo clic sulla notifica si esce dall'applicazione.

Aggiungilaposizionedelloscriptaltuopercorso(ocreasemplicementeunaliasperloscriptstesso)esaraiingradodiusarlodaqualsiasiposizionenelTerminale.

Ilproblemaconl'implementazioneesistenteècheregistrausandoNSLog,chescrivesustderrdidefault.SarànecessariosopprimereimessaggiNSLogperottenereunrealeutilizzodalloscript.

Ilmioapproccioconsistenell'aggiungerelaseguentefunzioneal~/.bash_profileequindichiamarelafunzionequandosidesideraaggiungereunanotificaallabarradeimenu:

#menubarnotifier.pyfunctionmn(){/path/to/menubarnotifier.py"$1" 2>/dev/null &
}

Quindi puoi usarlo con:

mn "Notification Text Here"

E non accederà allo stdout. Verrà eseguito anche in background per non richiedere Ctrl + C.

Lo script usa PyObjC, quindi dovrai installarlo se non lo hai già. L'ho installato usando MacPorts facilmente con sudo port install py27-pyobjc* , ma penso che puoi farcela con appena sudo port install py27-pyobjc py27-pyobjc-cocoa .

L'idea è di utilizzare NSStatusBar.systemStatusBar().statusItemWithLength_() per creare un nuovo elemento nella barra dei menu di OS X.

self.statusItem = NSStatusBar.systemStatusBar().statusItemWithLength_(NSVariableStatusItemLength)
self.statusItem.setTitle_(display_text)

Aggiungerò più funzionalità in seguito (ad esempio immagini come quelle citate nella tua domanda). Devo anche capire un meccanismo di registrazione migliore in modo da poterlo solo avviare e non vedere l'output NSLog. Per ora, usa la funzione bash che ho scritto sopra per farlo funzionare nel modo che preferisci.

    
risposta data 24.09.2014 - 02:28
fonte

Leggi altre domande sui tag