¿Cómo se puede activar la barra de menú de secuencias de comandos con AppleScript?

En AppleScript, si desea mostrar Script Menuen la barra de menú, debe:

  1. Haga clic en Aplicaciones
  2. Desplácese hacia abajo y haga clic en Utilidades
  3. Haga clic en Editor de secuencias de comandos (esto se llamaba Editor de AppleScript en versiones anteriores de OS X)
  4. Haga clic en el elemento de menú "Editor de secuencias de comandos", luego haga clic en "Preferencias..."
  5. En el cuadro de diálogo Preferencias, haga clic en "Mostrar menú Script en la barra de menú"
  6. Si no está seleccionado, querrá habilitar la opción "Mostrar scripts de computadora"

pero, ¿hay algún archivo en el sistema al que pueda apuntar para activar esto en un script? Estoy tratando de crear un instalador que active esto cuando no esté activo, pero tengo problemas para encontrar en qué parte del sistema puedo presionar esto. No me importa, do shellpero prefiero no usar Automator.

Respuestas (3)

10.13 (High Sierra) y antes

Si no desea tener que pasar por el Editor de secuencias de comandos > Preferencias > General para marcar la casilla de verificación
[ ] Mostrar menú de secuencias de comandos en la barra de menús , esta es una forma de habilitar el Menú de secuencias de comandos mediante AppleScript :

tell application "System Events"
    if not (script menu enabled) then
        tell current application
            do shell script "open '/System/Library/CoreServices/Menu Extras/Script Menu.menu'"
        end tell
    end if
end tell

Podrías simplemente usar:

do shell script "open '/System/Library/CoreServices/Menu Extras/Script Menu.menu'"

Sin embargo, dado que los eventos del sistema tienen una script menu enabled propiedad , tiene sentido verificar primero si está habilitado o no. Sin embargo, al abrir el archivo de destino , se carga el menú de secuencias de comandos y se marca la casilla de verificación [√] Mostrar menú de secuencias de comandos en la barra de menús en: Editor de secuencias de comandos > Preferencias > General

Además, desde la Terminal , puedes simplemente ejecutar:

open '/System/Library/CoreServices/Menu Extras/Script Menu.menu'

Abrir el archivo de destino de cualquier manera que se muestra logra el objetivo.

Por cierto, cuando el menú Script está habilitado, el archivo plist de destino es:

com.apple.systemuiserver.plist

La clave es un valor booleano y es NSStatusItem Visible com.apple.scriptmenu, y también tendrá un elemento en el menuExtras Array que Stringcontiene la ruta de acceso del elemento.

Tenga en cuenta que la información anterior se recopiló en macOS 10.13.5 .


10.14 (Mojave) y posteriores

El menú de la secuencia de comandos se ha actualizado a una aplicación completa, en lugar de un .menuarchivo. Ahora se encuentra en /System/Library/CoreServices/Script Menu.app.

Para activarlo en 10.14+, el comando terminal/shell cambia a:

open '/System/Library/CoreServices/Script Menu.app'

Esta preferencia está controlada por el plist en la siguiente ruta: ~/Library/Preferences/com.apple.scriptmenu.plist.

Que contiene lo siguiente (cuando está apagado):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ScriptMenuEnabled</key>
    <false/>
</dict>
</plist>

se falsecambia a truecuando se activa.

Cambia esta preferencia con un defaultscomando en bash.

defaults write com.apple.scriptmenu.plist ScriptMenuEnabled true

o

defaults write com.apple.scriptmenu.plist ScriptMenuEnabled false

Así que en AppleScript:

do shell script "defaults write com.apple.scriptmenu.plist ScriptMenuEnabled true"

o

do shell script "defaults write com.apple.scriptmenu.plist ScriptMenuEnabled false"
Veo el archivo pero se ejecuta en la terminal y do shellno funciona sobre la marcha. Sigo buscando una solución sin reiniciar.
En macOS 10.13.5 de todos modos, ScriptMenuEnabledno es una clave válida en el com.apple.scriptmenu.plistarchivo. Por lo que veo, solo hay dos claves válidas para el com.apple.scriptmenu.plistarchivo PutAppScriptsFirsty ShowLibraryScripts.
@ user3439894 Lo probé en Mojave pero sospecho que sería lo mismo para todas las versiones.

No estoy muy seguro acerca de las versiones anteriores de macOS, pero con macOS Big Sur, la aplicación "AppleScript Utility" (que se encuentra aquí... "/System/Library/CoreServices/AppleScript Utility.app/") admite secuencias de comandos.

Con esto, no es necesario tener que abrir las preferencias de Script Editor.app ni editar ningún archivo plist. Tampoco hay necesidad de reiniciar.

tell application "AppleScript Utility"
    set Script menu enabled to true -- true or false
    set application scripts position to top -- top or bottom
    set show Computer scripts to false -- true or false
end tell