È necessaria l'app della barra dei menu per mostrare l'output del comando Terminale ogni 60s


7

Ho bisogno di un'app per la barra dei menu * che mi mostri l'output di un comando del terminale ed esegua quel comando del Terminale ogni 60 secondi circa.

Oppure ho bisogno di un'app della barra dei menu che legga il contenuto di un file e si aggiorni ogni volta che il file viene aggiornato.

(L'output non dovrebbe contenere più di 3 o 4 cifre)

Esistono tali app?

* né il Dock né il desktop sono alternative praticabili. Deve essere la barra dei menu.

Aggiornamento 16/06/2014: la risposta del 9 giugno 12 alle 14:15 non ha funzionato per me, quindi sto ancora cercando una soluzione.



GeekTool = Desktop, non barra dei menu.
TJ Luoma,

1
Puoi posizionare l'output dove vuoi, inclusa la barra dei menu. 3 o 4 cifre, carattere piccolo, due righe, potrebbero adattarsi a sinistra delle icone a destra o alla luce dei riflettori.

Voglio che queste informazioni siano visibili dando un'occhiata alla barra dei menu, non da me dover andare nella barra dei menu per guardarle. Come un orologio o una sveglia su disco,
TJ Luoma,

1
Sì. L'output di GeekTool galleggia su tutto. Penso che la soluzione guidata da ruby ​​sia migliore, ma funzionerebbe se il tuo output non fosse molto grande. Se hai bisogno di più spazio aggiungi una voce di menu che non vuoi vedere (controllo del volume?) E fai in modo che l'output di GeekTool lo copra con uno sfondo non trasparente.

Risposte:


10
#!/usr/bin/env ruby

require "osx/cocoa"
include OSX

app = NSApplication.sharedApplication 
statusitem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)
while true
    statusitem.setTitle(rand(999))
    sleep 1
end
app.run

(Se qualcuno che effettivamente conosce Cocoa vuole migliorare questo, sentiti libero di modificarlo.) Ho copiato più o meno lo script dal blog di taw: punti di esperienza personale e menu OSX , che è stato menzionato nel display - C'è un modo per avere AppleScript output visualizzato nella barra dei menu? - Mela .


Wow, è fantastico. Per qualche motivo funziona alla grande randma non aggiorna il mio comando (ottengo l'output della prima volta che viene eseguito, ma non cambia mai dopo), ma è un ottimo punto di partenza. Mi fa venire voglia di conoscere Ruby!
TJ Luoma,

@TJLuoma Lo script originale utilizzava un NSTimer per aggiornare l'elemento di stato, ma non sono riuscito a capirlo. (Se qualcuno può, le modifiche sono ancora benvenute.)
Lri

5

Ecco la soluzione in Python.
Installa il framework rumps (il repository collegato ha una patch per OS X 10.9.3)
sudo pip install git+https://github.com/tito/rumps

Potrebbe essere necessario regolare $PYTHONPATHper includere pyobjc (Foundation)
export PYTHONPATH=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python

Adatta il seguente codice alle tue esigenze:

#!/usr/bin/env python
import rumps
import os
import threading


class AwesomeStatusBarApp(rumps.App):
    def __init__(self):
        super(AwesomeStatusBarApp, self).__init__("Awesome App", "Title")
        tail(self)


def tail(self):
    threading.Timer(5, tail, [self, ]).start()
    self.title = os.popen("tail -1 /var/log/system.log").read()[0:-1][0:50]

AwesomeStatusBarApp().run()

Non dimenticare di limitare la lunghezza della stringa ( [0:50]) (o OS X lo rimuoverà a favore dei menu se entrambi non si adattano) e alla fine si sbarazzerà della nuova riga ( [0:-1])

inserisci qui la descrizione dell'immagine


Grazie! Questo mostra un'app nel dock e la barra dei menu. Hai idea di come mostrarlo solo nella barra dei menu?
TJ Luoma,

Puoi usare qualcosa come Platypus per creare un'app dal tuo script e regolare il suo .plist per non mostrarlo nel dock.
Sergei,

Grazie! Speravo di trovare qualcosa di più ... facile da usare? Plug + play? Qualcosa. Ma questo è il 100% migliore di quello che avevo e apprezzo il tempo e gli sforzi per rispondere.
TJ Luoma,


2

Finalmente ho trovato quello che stavo cercando. In effetti, è molto meglio di quello che speravo:

TextBar

  • Configura TextBar per eseguire più script / comandi / etc e visualizzare i risultati nella barra dei menu.
  • Fare clic sull'elemento TextBar per aggiungere il testo negli Appunti.
  • Abilita / disabilita ciascun elemento singolarmente.
  • Configura la frequenza con cui desideri che ogni elemento venga aggiornato.
  • aggiungi un'icona per ogni elemento della barra dei menu (o nessuno)

Lo sto usando da una settimana o giù di lì ed è fantastico.

3 $. Demo disponibile su http://www.richsomerfield.com/apps/


1

C'è un'altra alternativa open source recente chiamata BitBar (Licenza MIT), che appare molto simile a "TextBar" e "ShellWrangler" e stupisce per la sua semplicità.

È possibile eseguire script in qualsiasi intervallo di tempo codificato nel nome del file di script (ad esempio my_script.60s.py) e può eseguire qualsiasi script eseguibile anche nel Terminale.


1
Mi piace anche la sua semplicità, poiché hai appena inserito uno script in una cartella e il suo output è visualizzato nella barra dei menu, mentre il suo tempismo è geniale in quanto aggiungi semplicemente "3s" o "2h" o "1d" al suo nome come: myScript.3s.shche viene di conseguenza aggiornato / eseguito. . . . . . Lo uso per consentire a uno script di chiamare un AppleScript che genera [ 3 ]se cambio al desktop 3.. . . . . Sooooo easy!
Clemsam Lang,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.