2009-04-08 7 views
5

Me gustaría ejecutar un script antes de que Firefox inicie & después de que se cierre. En Ubuntu, hago esto creando un nuevo atajo que llama primero a mi función, luego llama al comando firefox y luego llama a mi última función. Como el comando de Firefox bloquea hasta que se cierra la aplicación, se llama a mi última función inmediatamente después de que finaliza el proceso.Cómo cambiar el ejecutable en un paquete de aplicación OS X

Sin embargo, en OS X no puedo hacer esto tan bien porque termino con dos íconos en el dock. Uno para mi secuencia de comandos se convirtió en una aplicación & otra para la aplicación Firefox. Preferiría tener solo un ícono de dock & para no interrumpir las actualizaciones de Firefox.

Mi solución actual es cambiar el nombre de MacOS/firefox {, - bin} por el prefijo 'real-' y luego nombrar mi script de shell 'firefox-bin'. Esto funciona, pero estoy bastante seguro de que el próximo tiempo de Firefox intenta actualizar sí estoy tostadas.

he intentado cambiar la propiedad "CFBundleExecutable" en el archivo Info.plist del paquete a ser mi guión, pero que no funciona.

¿Puede cualquier persona ofrecer otras sugerencias?

+2

Descubrí cómo editar la propiedad "CFBundleExecutable" en el archivo Info.plist. Parece que OS X guarda en caché la información de la aplicación en ~/Library/Caches/Firefox. Al eliminar estos cachés, logré que reconociera mis cambios. Cambié el script de shell para que siempre se abra con "Terminal.app" y creé un enlace simbólico sin una extensión de archivo al script dentro de la carpeta Firefox.app/Content/MacOS/. Luego, después de configurar el archivo ejecutable al nombre del enlace simbólico, todo funciona. No estoy seguro de si las actualizaciones de Firefox funcionarán, pero esto es bastante fácil de re/deshacer. – Rob

+0

hola rob. Creé un paquete de aplicaciones que lanza Firefox en otro perfil. Le di a mi paquete un ícono personalizado. ejecuto múltiples perfiles a la vez usando '-no-remote'. por lo que es normal ver un logotipo de Firefox para el predeterminado y uno para mi perfil personalizado. sin embargo, a veces, el ícono del perfil personalizado se convierte en el ícono predeterminado. estarías disponible para chatear alguna vez? Puedo mostrarte un screencast de mi situación. – Noitidart

+0

Hola @Rob, ¿cuál es el comando que usas para iniciar Firefox? – Noitidart

Respuesta

3

Crea un paquete de aplicaciones normal pero establece LSUIElement en él, por lo que el icono de la aplicación de script está oculto del dock e incluye Firefox dentro del paquete.

Una forma sencilla de hacerlo es con Platypus. Configure Platypus de la siguiente manera:

  • Haga clic en "Parámetros". Marque la casilla de verificación "Establecer $ 1 en el camino a la aplicación", para que su secuencia de comandos pueda hacer referencia a los archivos dentro del paquete.

  • Compruebe "Se ejecuta en segundo plano": este conjunto LSUIElement para usted.

  • En la lista de "Archivos y carpetas a se incluyen con la aplicación en la carpeta de recursos ", suelte Firefox.

  • Cambie la salida a "Ninguna" para que sus mensajes de registro vayan a la consola del sistema.

  • Coloque el archivo de íconos de Firefox (firefox.icns) en el icono "Custom Icon".

  • Cambiar "Nombre de la aplicación" a Firefox.

Por un guión que es como la siguiente:

#!/bin/sh 
echo before >&2 
$1/Contents/Resources/Firefox.app/Contents/MacOS/firefox-bin 
echo after >&2 

tiene un resultado así:

4/8/09 1:16:33 PM [0x0-0x801801].net.sabi.PlatypusScript[76610] before 
4/8/09 1:16:35 PM firefox-bin[76613] Database load time: 0.373 (717 objects) 
4/8/09 1:16:35 PM [0x0-0x801801].net.sabi.PlatypusScript[76610] 
2009-04-08 13:16:35.699 firefox-bin[76613:10b] Database load time: 0.373 (717 objects) 
4/8/09 1:16:57 PM [0x0-0x801801].net.sabi.PlatypusScript[76610] after 

Si los usuarios inician Firefox de otras maneras, como con manipuladores URL y al abrir archivos HTML, en su lugar deberá usar una aplicación nativa, que puede pasar los eventos de Apple correspondientes a Firefox y agregar la información adecuada sobre el URL y el manejador de archivos a Info.plist. (aemreceive es un conveniente contenedor de Python para la recepción del evento Apple).

+0

exactamente lo que estaba buscando, solo necesitaba un poco sobre cómo ocultar un icono del dock. Danke! – Rob

+0

Un problema con esta solución es que ya no puedes ver la barra de menú de Firefox. Encontré uno mejor arriba. – Rob

+0

Tengo una situación similar a la de @Nicholas pero mi problema es que cuando hago clic en mi paquete de aplicaciones, lanza firefox con los argumentos de línea de comando '-no-remote -P" mi segundo perfil "'. Así que esto es bueno, pero si lo hago 'Killall Dock; killall Finder' separa mi icono en dos. Haré un video de demostración, si es necesario, pero ¿sabes cómo hacer que Firefox crea que el ícono de mi paquete de aplicaciones es su ícono? Creo que esto es similar a lo que compartiste aquí. – Noitidart

0

Utilice un flujo de trabajo Automator si está disponible en su versión de Mac OS.

+0

Cuando inicia una aplicación, siempre crea un ícono en el dock. Prefiero que solo haya uno para no ser confuso. Mencioné que ya tengo una versión de la aplicación de mi script y no me gusta ese método. – Rob

+0

@Rob: Gracias por la aclaración. Estaba confundido (no vi que no hay dos íconos en _runtime_). – dirkgently

+0

@dirkgently: np, creo que tu solución es la única a la que voy a poder acceder. Pero todavía estoy esperando que algún gurú llegue con algunas dosis de conocimiento para mí. – Rob

Cuestiones relacionadas