Skryptowe ikony paska menu

8

Czy istnieje prosty sposób na dodanie niestandardowych ikon do obszaru statusu paska menu? Idealnie coś takiego jak Growl (np. Gdzie możesz po prostu wykonać polecenie), ale zamiast powiadomień, po prostu renderuje ikony na pasku menu.

Głównie chcę narysować liczby, których użyłbym, aby ostrzec mnie o różnych rzeczach. Na przykład mogę skonfigurować mojego klienta poczty e-mail, aby uruchamiał polecenie / AppleScript w celu aktualizacji liczb po otrzymaniu określonego rodzaju wiadomości e-mail.

Coś takiego:

img

chroder
źródło

Odpowiedzi:

4

Proponuję zacząć od tego wątku , który opisuje używanie wywołań Cocoa Objective-C z AppleScript. Jest to projekt Xcode przykład tutaj .

A Launch to kompletna aplikacja napisana w AppleScript, która funkcjonalnie to robi. Plik projektu Xcode jest tutaj .

Podstawowym założeniem jest wygenerowanie instancji NSMenuItem i dodanie ich do NSStatusBar systemu:

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)

Fragment AppleScript z kodu źródłowego Launcha, Copyright © Lee Hanken

Lingnik
źródło
Brakuje teraz linków w 2018 r.
davidfrancis
3

Ok, stworzyłem do tego aplikację. Jest na GitHub: 0942v8653 / ScriptableStatusBar . Po prostu utrzymuj działanie aplikacji i użyj sbarnarzędzia do ustawiania i usuwania elementów.

Jak mówi readme:

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

Tworzy twarz na pasku stanu. Menu będzie miało opcję Bye!uruchamiania sbar remove facepozbywanego przez siebie menu.


Możesz pobrać skompilowaną wersję ze strony https://github.com/0942v8653/ScriptableStatusBar/releases .

0942v8653
źródło
Fajnie, ale dlaczego rejestrujesz się we wszystkich rozproszonych powiadomieniach zamiast powiadomienia o nazwie: „io.github.0942v8653.ScriptableStatusBar”?
Mateusz Szlosek
@MateuszSzlosek Dobre pytanie. Naprawimy później: P
0942v8653
1
@MateuszSzlosek Naprawiono.
0942v8653
Wygląda na to, że funkcjonalność Twojej aplikacji jest bardzo podobna do „BitBar” (wspomnianego powyżej); podczas gdy twój zawiera ikonę (nie jestem pewien, czy BitBar ma), drugi pozwala prawie dowolnemu językowi skryptowemu (ze standardowym wyjściem) bardzo łatwo wyświetlać jego wyniki na pasku menu po prawej stronie. Używam tego do „osascript” skryptu Apple, który „zwraca” bieżącą liczbę obszaru roboczego, na którym jestem (jak w poprzednich wersjach systemu operacyjnego). Skrypty są po prostu umieszczane w folderze wtyczek i EXTRA! część nazw (np. xx.3s.sh => 3 sekundy) określa odstępy między powtórzeniami. BARDZO przydatne do wyświetlania statusu !!!
clemsam lang
2

Możesz także użyć RubyCocoa :

require "osx/cocoa"
include OSX

app = NSApplication.sharedApplication
statusitem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)
statusitem.setTitle("aa")
app.run
Lri
źródło
0

Tak, możesz utworzyć w tym celu aplikację Cocoa. Nie, nie możesz tego zrobić za pomocą AppleScript.

dalej
źródło