Icônes de la barre de menus scriptables

8

Existe-t-il un moyen simple d'ajouter des icônes personnalisées à la zone d'état de la barre de menus? Idéalement, quelque chose comme Growl (par exemple, où vous pouvez simplement exécuter une commande) mais au lieu de notifications, rend simplement les icônes dans la barre de menus.

Je cherche principalement à dessiner des nombres que j'utiliserais pour m'alerter de diverses choses. Par exemple, je peux configurer mon client de messagerie pour exécuter une commande / AppleScript pour mettre à jour les numéros lorsqu'un certain type de courrier électronique arrive.

Quelque chose comme ça:

img

chroder
la source

Réponses:

4

Je suggère de commencer par ce fil , qui décrit l'utilisation d'appels Cocoa Objective-C à partir d'AppleScript. Il y a un exemple de projet Xcode ici .

Et Launch est une application complète écrite en AppleScript qui fait cela fonctionnellement. Son fichier de projet Xcode est ici .

Le principe de base est de générer des instances NSMenuItem et de les ajouter au NSStatusBar du système:

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)

Extrait AppleScript du code source de Launch, Copyright © Lee Hanken

Lingnik
la source
Les liens manquent maintenant en 2018
davidfrancis
3

D'accord, j'ai créé une application pour cela. C'est sur GitHub: 0942v8653 / ScriptableStatusBar . Gardez simplement l'application en cours d'exécution et utilisez l' sbaroutil pour définir et supprimer des éléments.

Comme le dit le readme:

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

Crée un visage dans la barre d'état. Le menu aura une option Bye!qui s'exécute en sbar remove facese débarrassant du menu qu'il crée.


Vous pouvez télécharger une version compilée sur https://github.com/0942v8653/ScriptableStatusBar/releases .

0942v8653
la source
Bien, mais pourquoi vous inscrivez-vous à toutes les notifications distribuées au lieu de celle avec le nom: "io.github.0942v8653.ScriptableStatusBar"?
Mateusz Szlosek
@MateuszSzlosek Bonne question.
Corrige
1
@MateuszSzlosek Fixed.
0942v8653
La fonctionnalité de votre application semble être très similaire à "BitBar" (mentionnée ci-dessus); tandis que le vôtre comporte une icône (vous ne savez pas si BitBar le fait), l'autre permet à presque tous les langages de script (avec sortie standard) d'afficher très facilement sa sortie dans la barre de menu de droite. Je l'utilise pour "osascript" un script Apple qui "renvoie" le nombre actuel d'espace de travail sur lequel je me trouve (comme dans les anciennes versions du système d'exploitation). Les scripts sont simplement placés dans un dossier de plugins et EXTRA! une partie des noms (par exemple xx.3s.sh => 3 secondes) spécifie les intervalles de répétition. TRÈS utile pour l'affichage du statut !!!
clemsam lang
2

Vous pouvez également utiliser RubyCocoa :

require "osx/cocoa"
include OSX

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

Oui, vous pouvez créer une application Cocoa à cet effet dans Xcode. Non, vous ne pouvez pas le faire avec AppleScript.

plus loin
la source