Skriptfähige Menüleistensymbole

8

Gibt es eine einfache Möglichkeit, dem Statusbereich der Menüleiste benutzerdefinierte Symbole hinzuzufügen? Idealerweise so etwas wie Growl (z. B. wenn Sie nur einen Befehl ausführen können), aber anstelle von Benachrichtigungen werden nur Symbole in der Menüleiste gerendert.

Ich möchte hauptsächlich Zahlen zeichnen, mit denen ich auf verschiedene Dinge aufmerksam gemacht werde. Beispielsweise kann ich meinen E-Mail-Client so konfigurieren, dass ein Befehl / AppleScript ausgeführt wird, um die Nummern zu aktualisieren, wenn eine bestimmte Art von E-Mail eintrifft.

Etwas wie das:

img

chroder
quelle

Antworten:

4

Ich würde vorschlagen, mit diesem Thread zu beginnen , der die Verwendung von Cocoa Objective-C-Aufrufen aus AppleScript heraus beschreibt. Es ist ein Beispiel Xcode Projekt hier .

Und Launch ist eine vollständige Anwendung, die in AppleScript geschrieben wurde und dies funktional tut. Die Xcode-Projektdatei ist hier .

Die Grundvoraussetzung besteht darin, NSMenuItem-Instanzen zu generieren und sie der NSStatusBar des Systems hinzuzufügen:

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)

AppleScript-Auszug aus dem Quellcode von Launch, Copyright © Lee Hanken

Lingnik
quelle
Links fehlen jetzt im Jahr 2018
Davidfrancis
3

Okay, ich habe eine App dafür gemacht. Es ist auf GitHub: 0942v8653 / ScriptableStatusBar . Lassen Sie einfach die App laufen und verwenden Sie das sbarTool, um Elemente festzulegen und zu entfernen.

Wie die Readme sagt:

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

Erstellt ein Gesicht in der Statusleiste. Das Menü verfügt über eine Option Bye!, sbar remove facemit der das erstellte Menü entfernt wird.


Sie können eine kompilierte Version von https://github.com/0942v8653/ScriptableStatusBar/releases herunterladen .

0942v8653
quelle
Schön, aber warum registrieren Sie sich bei allen verteilten Benachrichtigungen anstelle der Benachrichtigung mit dem Namen "io.github.0942v8653.ScriptableStatusBar"?
Mateusz Szlosek
@MateuszSzlosek Gute Frage. Wird später
behoben
1
@MateuszSzlosek Behoben.
0942v8653
Die Funktionalität Ihrer App scheint "BitBar" (oben erwähnt) sehr ähnlich zu sein. Während Ihre ein Symbol enthält (nicht sicher, ob BitBar dies tut), ermöglicht die andere, dass fast jede Skriptsprache (mit Standardausgabe) ihre Ausgabe sehr einfach in der rechten Menüleiste anzeigen kann. Ich verwende das, um ein Apple-Skript zu "osascript", das die aktuelle Anzahl der Arbeitsbereiche "zurückgibt", auf denen ich mich befinde (wie in früheren Betriebssystemversionen). Skripte werden einfach in einen Plugin-Ordner & EXTRA gelegt! Ein Teil der Namen (z. B. xx.3s.sh => 3 Sekunden) gibt Wiederholungsintervalle an. SEHR nützlich für die Statusanzeige !!!
Clemsam Lang
2

Sie können auch RubyCocoa verwenden :

require "osx/cocoa"
include OSX

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

Eine weitere Option ist die Verwendung von Rumps, einer Python-Bibliothek, die die Obj-C-Klassen und -Funktionen verwendet.

http://rumps.readthedocs.org/en/latest/

Jay Thompson
quelle
0

Ja, Sie können zu diesem Zweck in Xcode eine Kakao-App erstellen. Nein, mit Applescript geht das nicht.

weiter weg
quelle