El icono de bandeja
Presencia fuera de la ventana: qué es la bandeja en cada sistema, qué se puede poner ahí, y la decisión que hay que tomar antes — si tu aplicación se cierra o se esconde.
La decisión previa
La diferencia entre macOS y el resto es la más visible de este nivel: en macOS la aplicación viva sin ventana es lo normal; en Windows y Linux es la excepción y sorprende.
Poner el icono
let menu = MenuBuilder::new(app) .text("mostrar", "Mostrar ventana") .separator() .text("estado", "Sincronizado hace 2 min") // informativo, desactivado .separator() .text("salir", "Salir") .build()?;TrayIconBuilder::new() .icon(icono_por_tema(app)?) .menu(&menu) .show_menu_on_left_click(false) // en Windows y Linux, la pulsación izquierda muestra la ventana .on_tray_icon_event(|tray, ev| { /* … */ }) .build(app)?;Tres detalles que difieren entre sistemas:
- La pulsación izquierda. En macOS abre el menú; en Windows y Linux se espera que muestre la ventana, con el menú en la pulsación derecha.
- El icono debe ser monocromo en macOS y adaptarse al tema claro u oscuro. Un icono de color a todo detalle se ve mal ahí y bien en Windows.
- Y en Linux depende del escritorio: algunos no tienen bandeja, otros la tienen con limitaciones. Tu aplicación tiene que funcionar si el icono no aparece.
Qué poner en el menú
Los tres comportamientos que molestan
Y son los que hacen que la gente busque cómo desactivar tu icono:
- Arrancar con el sistema sin haberlo pedido. Si tu aplicación se pone en el arranque automático sin preguntar, es una intrusión. Debe ser una opción, desactivada por omisión.
- Volver a aparecer tras cerrarla. Si el usuario elige «Salir», la aplicación termina y no vuelve hasta que él la abra.
- Y el icono que no se puede quitar. Si tu bandeja es opcional, que haya una preferencia para desactivarla.
Los tres tienen la misma forma: la bandeja es un sitio donde el usuario elige tener cosas, no donde tú te instalas.