Saltar al contenido

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

Rust
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.