En AppleScript, si desea mostrar Script Menu
en la barra de menú, debe:
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 shell
pero prefiero no usar Automator.
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 String
contiene la ruta de acceso del elemento.
Tenga en cuenta que la información anterior se recopiló en macOS 10.13.5 .
El menú de la secuencia de comandos se ha actualizado a una aplicación completa, en lugar de un .menu
archivo. 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 false
cambia a true
cuando se activa.
Cambia esta preferencia con un defaults
comando 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"
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
ʀ2ᴅ2
do shell
no funciona sobre la marcha. Sigo buscando una solución sin reiniciar.usuario3439894
ScriptMenuEnabled
no es una clave válida en elcom.apple.scriptmenu.plist
archivo. Por lo que veo, solo hay dos claves válidas para elcom.apple.scriptmenu.plist
archivoPutAppScriptsFirst
yShowLibraryScripts
.JBis