8 votos

¿Existe alguna manera de que la salida de AppleScript se muestre en la barra de menús?

Antes de seguir leyendo: Sé acerca de butler y programas similares. Estoy buscando una forma INCORPORADA de hacer esto sin una aplicación de terceros.

De todos modos, escribí un AppleScript que ejecuta un comando de shell. Quiero mostrar esa salida en la barra de menús en la parte superior... sin Butler, ¿cómo puedo hacer esto?

0 votos

Ya que AppleScriptObjC es parte de macOS (2014) es posible utilizar su framework "Foundation" (incluyendo los métodos de NSMenu) para lograr lo que probablemente no era posible en 2012. . . . . Vea mi respuesta a continuación sobre ¡Cómo hacerlo!

2voto

Nader Shirazie Puntos 8494

Como regla general, sin un programa de terceros, como Growl, no hay una forma incorporada de hacer esto.

Sin embargo, podrías escribir un script u otro programa como el que encontré aquí que ofrece el servicio del menulet para ti. Estoy seguro de que la integración con Growl sería mucho más fácil de lograr.

1voto

Julius Canute Puntos 26

No hay una forma integrada de hacer esto en OS X. Sin embargo, usando Growl, puedes recibir notificaciones. Aquí tienes un script de ejemplo:

--Asegúrate de que Growl esté funcionando
tell application "System Events"
    set isRunning to (count of (every process whose bundle identifier is "com.Growl.GrowlHelperApp")) > 0
end tell

if isRunning then
    tell application id "com.Growl.GrowlHelperApp"
        set the allNotificationsList to ¬
            {"Notificación de prueba", "Otra notificación de prueba"}
        --Las notificaciones se pueden habilitar en Preferencias del sistema>Growl>Aplicaciones>Opciones de visualización
        set the enabledNotificationsList to ¬
            {"Notificación de prueba"}
        register as application ¬
            "Ejemplo de AppleScript de Growl" todas las notificaciones allNotificationsList ¬
            notificaciones predeterminadas enabledNotificationsList ¬
                    -- Establece el ícono. Puedes usar cualquier ícono de cualquier aplicación
            icono de la aplicación "AppleScript Editor"

        notify with name ¬
            "Notificación de prueba" title ¬
            "Notificación de prueba" description ¬
            "Esta es una notificación de prueba de AppleScript." nombre de la aplicación "Ejemplo de AppleScript de Growl"

        notify with name ¬
            "Otra notificación de prueba" title ¬
            "Otra notificación de prueba :) " description ¬
            "¡Lamentablemente, no me verás hasta que me habilites!" nombre de la aplicación "Ejemplo de AppleScript de Growl"

    end tell
end if

¡Eso debería mostrar esto!

Y si también tienes habilitada la otra notificación:

Técnicas más avanzadas se describen aquí.

1voto

zonble Puntos 2925

Dado que AppleScriptObjC es parte de macOS, es posible utilizar su marco "Foundation" (incl. los métodos de NSMenu) para lograr lo que probablemente no era posible en 2012.

Encontré un script interesante para crear menús personalizados desde AppleScript; a partir de esto extraje código adecuado para colocar texto en la barra de menú de macOS. De hecho, solo utiliza el "título" de un menú para insertar cierto contenido.

Para demostrar esto, implementé un script de diálogo muy básico que pide a los usuarios que ingresen texto (esperando 6 seg.) que luego se muestra temporalmente en la barra de menú (5 seg.).
¡Aquí está!

use framework "Foundation"
use framework "AppKit"
use scripting additions
property StatusItem : missing value
property newMenu : class "NSMenu"

display dialog "Escribe algo:" default answer "" giving up after 6
set myText to text returned of the result
if myText is "" then set myText to "¡Demasiado lento... intenta de nuevo!"
set myText to ">>    " & myText & "    <<"

set bar to current application's NSStatusBar's systemStatusBar
set StatusItem to bar's statusItemWithLength:-1.0
StatusItem's setTitle:myText
set newMenu to current application's NSMenu's alloc()'s initWithTitle:"Personalizado"
StatusItem's setMenu:newMenu

delay 5
current application's NSStatusBar's systemStatusBar()'s ¬
        removeStatusItem:StatusItem  

Este código de AppleScript puede ser utilizado en cualquiera de tus scripts. (Su parte de "diálogo" es opcional...)

user3439894 ayudó con el cierre de mi "menú", ver la última línea del script. ¡Muchas gracias!

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X