Establezca un ícono de base personalizado para una instancia de aplicación a través de Terminal

Con frecuencia abro varias instancias de aplicaciones, especialmente Emacs, ya que puedo estar trabajando en diferentes proyectos al mismo tiempo, y considero que esta es la mejor manera de administrar esto (sí, sé que hay muchas extensiones de administración de proyectos para Emacs , no necesito que me enseñen en Emacs).

Estoy haciendo esto con open -n -a Emacs.applo que abre una nueva instancia de Emacs separada. Pero sería muy bueno establecer un icono de base personalizado para las instancias abiertas, de modo que pueda diferenciarlas fácilmente al hacer Cmd+Tab.

¿Conoce algún truco o forma de configurar un icono de aplicación (Dock) personalizado para una instancia? Incluso si es un comando de shell bastante complejo (entonces podría crear un script de shell para esto).

Lo que realmente quiero lograr es crear un shellscript para esto para poder llamar opennew Emacs.app xy luego bifurcaría el ícono de Emacs y agregaría una insignia con una x en él.

Entonces puedo pedir opennew Emacs.app s"relacionado con la escuela", opennew Emacs.app p"relacionado con el proyecto", etc.

También ayudaría modificar el título de la aplicación.

Respuestas (1)

No tengo una solución completa para usted, pero al mirar las páginas del manual, creo que veo cómo se podría crear una.

  • open(1) proporciona la opción --args para pasar argumentos a la aplicación invocada.

  • emacs(1) leerá los valores de un archivo .Xresources. Uno de los valores que lee es emacs.iconName.

  • X le permite seleccionar Xresources para una aplicación específica configurando $XENVIRONMENT para que contenga la ruta de un archivo que contiene valores de Xresource. Además, se supone que los programas X admiten las opciones -name y -title para configurar (creo) el nombre de un archivo Xresource que se cargará y/o el título de la instancia de la aplicación.

Así que no he probado esto, pero es posible que puedas hacer algo como:

open -n -a Emacs.app --args "-name <resource-file-path> -title school"

Luego, en el archivo de recursos, una línea que dice

emacs.iconName:<path-to-school-icon-file>

En otro archivo de recursos, tendría iconName establecido en un icono de trabajo, etc.

Si intentas esto, me interesaría saber cómo funciona.