La aplicación en cuestión realiza alguna acción (aquí conecta el audio a las transmisiones de red) y se ejecuta minimizada si estas acciones fueron exitosas. Por lo tanto, se necesita un icono de estado para mostrar el estado de la conexión (por ejemplo, CONECTADO / DESCONECTADO). Solo al hacer clic en el icono se abrirá la ventana de la aplicación para dar acceso a otras opciones.
Usando Python 2.6 y pyGtk, me di cuenta convenientemente de esto usando gtk_status_icon . Deliberadamente escribí la aplicación para que se ejecute en tantas distribuciones como sea posible, incluidas las diversas versiones de Ubuntu. Me ocupé de usar posibles dependencias solo después de que el usuario las instaló.
Sin embargo, ahora escucho que gtk_status_icon ya no será compatible en futuras versiones de Ubuntu. Se les pide a los desarrolladores que usen indicadores de aplicación en su lugar. ¿Cuál es entonces la mejor práctica para asegurarse de que:
- Los iconos locales de la aplicación se muestran correctamente
- La aplicación aún se ejecutará y mostrará sus íconos en futuras versiones de Ubuntu.
- La aplicación también se ejecutará y mostrará sus íconos en otros entornos donde no se proporcionan indicador-applet , libappindicator y python-appindicator .
Los mecanismos de respaldo del indicador de aplicación a gtk_status_icon no funcionarán si el applet indicador no se está ejecutando. Los intérpretes de Python no se ejecutarán si no hubiera un módulo de aplicación desde el cual importar. ¿Necesito desarrollar diferentes versiones para diferentes distribuciones o hay una mejor manera de solucionar esto?
¿Dónde encuentro una documentación sobre cómo usar ApplicationIndicator que no sea en el ejemplo dado en Ubuntu Wiki ? ¿Qué comandos se proporcionan para verificar si el applet indicador se está ejecutando para evitar la programación de diferentes códigos fuente para distribuciones de Ubuntu vs.
Tengo una solución excelente que ha funcionado bien en StackApplet : creé una versión funcionalmente equivalente del
appindicator
módulo que se usagtk.StatusIcon
internamente para proporcionar una funcionalidad idéntica cuando el módulo real no existe.Usarlo es tan simple como:
appindicator_replacement.py
Agregar lo siguiente a su aplicación:
¡Eso es! Ahora su aplicación funcionará perfectamente con o sin soporte para AppIndicators. Incluso se ejecutará en Windows, suponiendo que no tenga ningún otro código específico de la plataforma.
Nota: el archivo se publica bajo la licencia MIT, por lo que puede usarlo prácticamente para cualquier cosa.
fuente
Necesitará escribir código para ambos. Puede detectar la presencia de appindicator en su código Python usando algo similar a:
A partir de ahí, use have_appindicator para decidir si debe usar el código appindicator o el código gtk_status_icon.
Desafortunadamente, esto también significa que necesitará tener un entorno Ubuntu y otro para probar.
fuente
De esta manera puede detectar si el applet indicador se está ejecutando. No necesita preocuparse por Ubuntu 11.04 porque este no será el caso. No hay escenario de reserva porque el indicador-applet es un componente obligatorio, que se ejecuta de forma predeterminada.
fuente
/usr/lib/x86_64-linux-gnu/indicator-messages/indicator-messages-service
tareas en su lugar.