Icone della barra dei menu tramite script


8

Esiste un modo semplice per aggiungere icone personalizzate nell'area di stato della barra dei menu? Idealmente qualcosa come Growl (ad esempio, dove puoi semplicemente eseguire un comando) ma invece di notifiche, visualizza semplicemente le icone nella barra dei menu.

Sto principalmente cercando di disegnare numeri che userei per avvisarmi di varie cose. Ad esempio, posso configurare il mio client di posta elettronica per eseguire un comando / AppleScript per aggiornare i numeri quando arriva un determinato tipo di email.

Qualcosa come questo:

img

Risposte:


4

Vorrei suggerire di iniziare con questo thread , che descrive l'utilizzo delle chiamate Cocoa Objective-C dall'interno di AppleScript. C'è un esempio di progetto Xcode qui .

E Launch è un'applicazione completa scritta in AppleScript che funziona in modo funzionale. Il suo file di progetto Xcode è qui .

La premessa di base è generare istanze NSMenuItem e aggiungerle al sistema NSStatusBar:

set statusMenu to (NSMenu's alloc)'s initWithTitle_("Launch")
-- (build and do stuff with the statusMenu here)
set sysStatusBar to NSStatusBar's systemStatusBar
set statusItem to sysStatusBar's statusItemWithLength_(32)
tell statusItem to setMenu_(statusMenu)
tell statusItem to setHighlightMode_(1)
set menuImage to NSImage's imageNamed_("icon.png")
tell statusItem to setImage_(menuImage)

Estratto di AppleScript dal codice sorgente di Launch, Copyright © Lee Hanken


I collegamenti mancano ora nel 2018
davidfrancis

3

Ok, ho creato un'app per questo. È su GitHub: 0942v8653 / ScriptableStatusBar . Mantieni l'app in esecuzione e utilizza lo sbarstrumento per impostare e rimuovere elementi.

Come dice il readme:

sbar set face 😃 'Bye!:sbar remove face'

Crea una faccia nella barra di stato. Il menu avrà un'opzione Bye!che viene eseguita sbar remove faceeliminando il menu che crea.


È possibile scaricare una versione compilata da https://github.com/0942v8653/ScriptableStatusBar/releases .


Bene, ma perché ti registri a tutte le notifiche distribuite invece di quella con nome: "io.github.0942v8653.ScriptableStatusBar"?
Mateusz Szlosek,

@MateuszSzlosek Bella domanda.
Risolverà

1
@MateuszSzlosek Risolto.
0942v8653,

La funzionalità della tua app sembra essere molto simile a "BitBar" (menzionata sopra); mentre il tuo presenta un'icona (non sono sicuro che BitBar lo faccia), l'altro consente a quasi tutti i linguaggi di scripting (con std-out) di visualizzare molto facilmente il suo output nella barra dei menu a destra. Lo uso per "osascript" uno script Apple che "restituisce" il numero corrente di spazio di lavoro in cui mi trovo (come nelle precedenti versioni del sistema operativo). Gli script vengono semplicemente inseriti in una cartella di plug-in & EXTRA! parte dei nomi (ad es. xx.3s.sh => 3 secondi) specifica gli intervalli di ripetizione. MOLTO utile per la visualizzazione dello stato !!!
Clemsam Lang

2

Puoi anche usare RubyCocoa :

require "osx/cocoa"
include OSX

app = NSApplication.sharedApplication
statusitem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)
statusitem.setTitle("aa")
app.run


0

Sì, puoi creare un'app Cocoa per questo scopo in Xcode. No, non puoi farlo con applecript.

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.