Скриптовые значки в строке меню

8

Есть ли простой способ добавить пользовательские значки в область состояния строки меню? В идеале что-то вроде Growl (например, где вы можете просто выполнить команду), но вместо уведомлений, просто отображает значки в строке меню.

Я в основном собираюсь нарисовать цифры, которые я бы использовал, чтобы предупредить меня о разных вещах. Например, я могу настроить свой почтовый клиент на запуск команды / AppleScript для обновления номеров при поступлении определенного вида электронной почты.

Что-то вроде этого:

IMG

chroder
источник

Ответы:

4

Я бы предложил начать с этой темы , которая описывает использование вызовов Cocoa Objective-C из AppleScript. Существует пример Xcode проект здесь .

А Launch - это законченное приложение, написанное на AppleScript, которое делает это функционально. Его файл проекта Xcode находится здесь .

Основной предпосылкой является создание экземпляров NSMenuItem и добавление их в системный 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)

AppleScript выдержка из исходного кода запуска, Copyright © Lee Hanken

Lingnik
источник
Ссылки отсутствуют в 2018 году
Давидфрансис
3

Хорошо, я сделал приложение для этого. Он находится на GitHub: 0942v8653 / ScriptableStatusBar . Просто оставьте приложение запущенным и используйте sbarинструмент для установки и удаления элементов.

Как говорится в readme:

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

Создает лицо в строке состояния. В меню будет опция, Bye!позволяющая sbar remove faceизбавиться от создаваемого меню.


Вы можете скачать скомпилированную версию с https://github.com/0942v8653/ScriptableStatusBar/releases .

0942v8653
источник
Хорошо, но почему вы регистрируетесь на все распространяемые уведомления, а не на имя с именем: "io.github.0942v8653.ScriptableStatusBar"?
Матеуш Шлосек
@MateuszSzlosek Хороший вопрос.
Исправлю
1
@MateuszSzlosek Исправлено.
0942v8653
Похоже, функциональность вашего приложения очень похожа на «BitBar» (упомянуто выше); в то время как у вас есть значок (не уверен, что в BitBar есть), другой позволяет практически любому языку сценариев (с std-out) очень легко отображать свой вывод в правой строке меню. Я использую это для «osascript» сценария Apple, который «возвращает» текущее количество рабочей области, на которой я работаю (как в предыдущих версиях ОС). Скрипты просто помещаются в папку плагинов и ДОПОЛНИТЕЛЬНО! часть имен (например, xx.3s.sh => 3 секунды) определяет интервалы повторения. ОЧЕНЬ полезно для отображения статуса !!!
Clemsam Lang
2

Вы также можете использовать RubyCocoa :

require "osx/cocoa"
include OSX

app = NSApplication.sharedApplication
statusitem = NSStatusBar.systemStatusBar().statusItemWithLength(NSVariableStatusItemLength)
statusitem.setTitle("aa")
app.run
LRI
источник
0

Да, вы можете создать приложение Какао для этой цели в XCode. Нет, вы не можете сделать это с помощью appleScript.

еще дальше
источник