Sería más aconsejable para crear la aplicación desde dentro del Editor de secuencias de Comandos como un verdadero AppleScript aplicación escrita en AppleScript; o para crear un shell script ejecutable del programa que está escrito en shell script sin necesidad de llamar a osascript
. No hay nada de malo per se sobre la mezcla para arriba, y de hecho hay un montón de situaciones donde es necesario o útil, pero este no es uno como ambos lenguajes tienen sus propios mecanismos para hacer lo que usted necesita. Te voy a mostrar tanto los scripts de ejemplo:
AppleScript
En primer lugar, me gustaría recomendar la ejecución de una línea rápida de AppleScript para obtener el identificador del paquete de KeyboardCleanTool
, que es una forma de permitir AppleScript para hacer referencia a una aplicación sin tener que iniciar la aplicación como un resultado sin una petición explícita para hacerlo (algunas aplicaciones lo hacen porque su diccionario de AppleScript sólo vale para ser leído por AppleScript si la aplicación se está ejecutando).
Así, ejecutar esta línea, entonces usted puede disponer de ella después de tomar nota del resultado:
return the id of the application named "KeyboardCleanTool"
Probablemente va a ser algo como "com.hegenberg.KeyboardCleanTool"
. Eso es lo que voy a usar en el siguiente script, que puede reemplazar con la correcta identificador del paquete:
property id : "com.hegenberg.KeyboardCleanTool"
property A : a reference to application id id
if A is running then return quit A
run A
Hay tres maneras de abrir aplicaciones usando AppleScript, cada uno con diferentes resultados:
-
activate
abre la aplicación, se la trae al primer plano, y le da importancia;
-
launch
la aplicación se abre y revela el windows pero no poner en el primer plano, ni le da importancia. Las ventanas se oculte detrás de cualquier aplicación que actualmente tiene el foco, y posiblemente otros (no recuerdo completamente, pero la recién lanzada aplicación podría sentarse en la parte de atrás de la solicitud de orden z);
-
run
abre la aplicación pero tampoco nos muestra su windows ni le da importancia. Para aplicaciones que no tienen ni un dock ni el icono de la barra de menú, usted no se dará ninguna señal de que se ha abierto. Este es el comando que suena como usted desea.
El uso de tell application "Finder" to set visible of process "KeyboardCleanTool" to false
no es un gran método. En primer lugar, usted no debería usar el Finder para el control de la interfaz gráfica de usuario, que es lo que está haciendo esto; utilizar los Eventos del Sistema, que fue creado específicamente para tomar el trabajo lejos del Buscador porque el Buscador no puede incluso hacer su propio trabajo de manera adecuada sin tener una fundir, mucho menos tratando de dar prioridad a las llamadas para manipular la interfaz de usuario.
También requiere permisos adicionales que estoy seguro de que ya has hecho, pero es que vale la pena mencionar para otros usuarios que no deseen hacerlo.
Por último, si usted no necesita llamar en ayuda externa para hacer algo, es mucho más ventajoso (más rápido, más eficiente, menos exigente en recursos) para el uso de un medio ya adquirida por el núcleo de secuencias de comandos.
Para crear una Aplicación usando el script de arriba: Guardar la secuencia de comandos en el Editor de secuencias de Comandos, seleccionar el tipo de la lista desplegable en el cuadro de diálogo Guardar que se llama algo así como "el paquete de la Aplicación" o "AppleScript Applet". Usted sabrá cuando usted ve las cuatro opciones. Se puede guardar en cualquier lugar que te gusta, pero un sub-directorio en tu carpeta de aplicaciones podría ser una buena opción, es decir, ~/Applications
, o la root de la carpeta de aplicaciones, /Applications
, si lo prefiere.
Secuencia de Comandos de Shell, por ejemplo bash
Déjeme saber si usted utiliza un shell de otros que bash
, y soy consciente de que Catalina está empaquetado con zsh
y yo, yo mismo, utilizar preferentemente Fish
y recomendamos echarle un vistazo.
El bash
script para la tarea a la mano puede ser este:
pkill -i 'KeyboardCleanTool' || lsappinfo launch nofront=true async=true /Applications/KeyboardCleanTool.app
Esto puede ser guardado como cualquier cosa que te gusta, y lo ideal en un directorio que aparece en su $PATH
variable de entorno, tales como _/usr/local/bin
. Será también deben ser ejecutable. Tomando el script de arriba, aquí está toda la bash
de código que va a hacer todo esto:
echo '#!/usr/bin/env bash
A="${1-KeyboardCleanTool}" # Default app name if none given
[[ -e "${fp="/Applications/$A.app"}" ]] || fp="$( locate -l 1 -i "*/$A.app" )"
pkill -i "$A" || lsappinfo launch nofront=true async=true "$fp"' > /usr/local/bin/rd; chmod +x /usr/local/bin/rd
Una vez que haya terminado, usted puede invocar el programa como este:
rd textedit # Will run or quit TextEdit
rd keyboardcleantool # Will run or quit KeyboardCleanTool
rd # (Default) Will run or quit KeyboardCleanTool
Y, por supuesto, usted no necesita guardar el programa en /usr/local/bin
. Guardar en el principal /Applications
carpeta está perfectamente bien. Tendrá un icono que representa una Terminal de shell, pero se puede tratar como cualquier otra aplicación: haga doble clic para ejecutar desde dentro del Buscador y se cerrará cuando se hace.