Ícones da barra de menus com scripts

8

Existe uma maneira fácil de adicionar ícones personalizados à área de status da barra de menus? Idealmente, algo como Growl (por exemplo, onde você pode simplesmente executar um comando), mas em vez de notificações, apenas renderiza ícones na barra de menus.

Eu estou procurando principalmente desenhar números que eu usaria para me alertar sobre várias coisas. Por exemplo, eu posso configurar meu cliente de email para executar um comando / AppleScript para atualizar os números quando um determinado tipo de email chegar.

Algo assim:

img

chroder
fonte

Respostas:

4

Eu sugeriria começar com este segmento , que descreve o uso de chamadas Cocoa Objective-C no AppleScript. Há um exemplo de projeto Xcode aqui .

E o Launch é um aplicativo completo escrito em AppleScript que faz isso funcionalmente. Seu arquivo de projeto do Xcode está aqui .

A premissa básica é gerar instâncias NSMenuItem e adicioná-las ao NSStatusBar do 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)

Trecho AppleScript do código fonte do Launch, Copyright © Lee Hanken

Lingnik
fonte
Os links estão faltando agora em 2018
davidfrancis
3

Ok, eu fiz um aplicativo para isso. Está no GitHub: 0942v8653 / ScriptableStatusBar . Apenas mantenha o aplicativo em execução e use a sbarferramenta para definir e remover itens.

Como o readme diz:

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

Cria uma face na barra de status. O menu terá uma opção Bye!que é executada para sbar remove facese livrar do menu que ele cria.


Você pode baixar uma versão compilada em https://github.com/0942v8653/ScriptableStatusBar/releases .

0942v8653
fonte
Bom, mas por que você se registra em todas as notificações distribuídas em vez daquela com o nome: "io.github.0942v8653.ScriptableStatusBar"?
Mateusz Szlosek
@MateuszSzlosek Good question. Será corrigido mais tarde: P
0942v8653 04/11
1
@MateuszSzlosek Fixed.
0942v8653
A funcionalidade do seu aplicativo parece ser muito semelhante ao "BitBar" (mencionado acima); enquanto o seu apresenta um ícone (não sei se o BitBar possui), o outro permite que quase qualquer linguagem de script (com saída padrão) mostre com facilidade sua saída na barra de menus à direita. Eu uso isso para "osascript" um script da apple que "retorna" o número atual de áreas de trabalho em que estou (como nas versões anteriores do sistema operacional). Os scripts são simplesmente colocados em uma pasta de plugins e EXTRA! parte dos nomes (por exemplo, xx.3s.sh => 3 segundos) especifica intervalos de repetição. MUITO útil para exibição de status !!!
Clemsam lang
2

Você também pode usar o RubyCocoa :

require "osx/cocoa"
include OSX

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

Sim, você pode criar um aplicativo de cacau para essa finalidade no Xcode. Não, você não pode fazer isso com o AppleScript.

ainda mais longe
fonte