Iconos de barra de menú programables

8

¿Hay alguna manera fácil de agregar iconos personalizados al área de estado de la barra de menú? Idealmente, algo como Growl (por ejemplo, donde puedes ejecutar un comando) pero en lugar de notificaciones, solo muestra iconos en la barra de menú.

Principalmente busco dibujar números que usaría para alertarme de varias cosas. Por ejemplo, puedo configurar mi cliente de correo electrónico para ejecutar un comando / AppleScript para actualizar los números cuando llegue un determinado tipo de correo electrónico.

Algo como esto:

img

chroder
fuente

Respuestas:

4

Sugeriría comenzar con este hilo , que describe el uso de llamadas Cocoa Objective-C desde AppleScript. Hay un ejemplo de proyecto Xcode aquí .

Y Launch es una aplicación completa escrita en AppleScript que funcionalmente hace esto. Su archivo de proyecto Xcode está aquí .

La premisa básica es generar instancias NSMenuItem y agregarlas a NSStatusBar del sistema:

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)

Extracto de AppleScript del código fuente de Launch, Copyright © Lee Hanken

Lingnik
fuente
Faltan enlaces ahora en 2018
davidfrancis
3

Bien, hice una aplicación para esto. Está en GitHub: 0942v8653 / ScriptableStatusBar . Simplemente mantenga la aplicación en funcionamiento y use la sbarherramienta para configurar y eliminar elementos.

Como dice el archivo Léame:

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

Crea una cara en la barra de estado. El menú tendrá una opción Bye!que se ejecutará sbar remove facedeshaciéndose del menú que crea.


Puede descargar una versión compilada de https://github.com/0942v8653/ScriptableStatusBar/releases .

0942v8653
fuente
Bien, pero ¿por qué te registras en todas las notificaciones distribuidas en lugar de la que tiene el nombre: "io.github.0942v8653.ScriptableStatusBar"?
Mateusz Szlosek
@MateuszSzlosek Buena pregunta. Se solucionará más tarde: P
0942v8653
1
@MateuszSzlosek Corregido.
0942v8653
La funcionalidad de su aplicación parece ser muy similar a "BitBar" (mencionado anteriormente); mientras que el suyo presenta un ícono (no estoy seguro si BitBar lo hace), el otro permite que casi cualquier lenguaje de script (con salida estándar) muestre muy fácilmente su salida en la barra de menú de la derecha. Lo uso para "osascript" un script de Apple que "devuelve" el número actual de espacio de trabajo en el que estoy (como en versiones anteriores del sistema operativo). Los scripts simplemente se colocan en una carpeta de complementos y ¡EXTRA! parte de los nombres (por ejemplo, xx.3s.sh => 3 segundos) especifica los intervalos de repetición. MUY útil para mostrar el estado !!!
clemsam lang
2

También puedes usar RubyCocoa :

require "osx/cocoa"
include OSX

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

Sí, puedes crear una aplicación Cocoa para este propósito en Xcode. No, no puedes hacerlo con AppleScript.

más lejos
fuente