Saltar al contenido

Bandeja del Sistema (System Tray)

Tauri te permite crear y personalizar una bandeja del sistema para tu aplicación. Esto puede mejorar la experiencia del usuario al proporcionar un acceso rápido a acciones comunes.

En primer lugar, actualiza tu Cargo.toml para incluir la feature necesaria para la bandeja del sistema.

src-tauri/Cargo.toml
tauri = { version = "2.0.0", features = [ "tray-icon" ] }

La API de la bandeja del sistema está disponible tanto en JavaScript como en Rust.

Usa la función estática TrayIcon.new para crear un nuevo ícono de bandeja:

import { TrayIcon } from '@tauri-apps/api/tray';
const options = {
// here you can add a tray menu, title, tooltip, event handler, etc
};
const tray = await TrayIcon.new(options);

Consulta TrayIconOptions para obtener más información sobre las opciones de personalización.

Al crear la bandeja puedes usar el ícono de la aplicación como el ícono de la bandeja:

import { TrayIcon } from '@tauri-apps/api/tray';
import { defaultWindowIcon } from '@tauri-apps/api/app';
const options = {
icon: await defaultWindowIcon(),
};
const tray = await TrayIcon.new(options);

Para adjuntar un menú que se muestre al hacer clic en la bandeja, puedes usar la opción menu.

import { TrayIcon } from '@tauri-apps/api/tray';
import { Menu } from '@tauri-apps/api/menu';
const menu = await Menu.new({
items: [
{
id: 'quit',
text: 'Quit',
},
],
});
const options = {
menu,
menuOnLeftClick: true,
};
const tray = await TrayIcon.new(options);

En JavaScript puedes adjuntar un escuchador de eventos de clic directamente al elemento del menú:

  • Usando un manejador de clic de menú compartido

    import { Menu } from '@tauri-apps/api/menu';
    function onTrayMenuClick(itemId) {
    // itemId === 'quit'
    }
    const menu = await Menu.new({
    items: [
    {
    id: 'quit',
    text: 'Quit',
    action: onTrayMenuClick,
    },
    ],
    });
  • Usando un manejador de clic de menú dedicado

    import { Menu } from '@tauri-apps/api/menu';
    const menu = await Menu.new({
    items: [
    {
    id: 'quit',
    text: 'Quit',
    action: () => {
    console.log('quit pressed');
    },
    },
    ],
    });

El ícono de la bandeja emite eventos para los siguientes eventos del mouse:

  • click: se activa cuando el cursor recibe un solo clic izquierdo, derecho o central, incluyendo información sobre si la presión del mouse fue liberada o no
  • Double click: se activa cuando el cursor recibe un doble clic izquierdo, derecho o central
  • Enter: se activa cuando el cursor entra en el área del ícono de la bandeja
  • Move: se activa cuando el cursor se mueve alrededor del área del ícono de la bandeja
  • Leave: se activa cuando el cursor sale del área del ícono de la bandeja
import { TrayIcon } from '@tauri-apps/api/tray';
const options = {
action: (event) => {
switch (event.type) {
case 'Click':
console.log(
`mouse ${event.button} button pressed, state: ${event.buttonState}`
);
break;
case 'DoubleClick':
console.log(`mouse ${event.button} button pressed`);
break;
case 'Enter':
console.log(
`mouse hovered tray at ${event.rect.position.x}, ${event.rect.position.y}`
);
break;
case 'Move':
console.log(
`mouse moved on tray at ${event.rect.position.x}, ${event.rect.position.y}`
);
break;
case 'Leave':
console.log(
`mouse left tray at ${event.rect.position.x}, ${event.rect.position.y}`
);
break;
}
},
};
const tray = await TrayIcon.new(options);

Consulta TrayIconEvent para obtener más información sobre el payload del evento.

Para obtener información detallada sobre la creación de menús, incluidos los elementos de menú, submenús y actualizaciones dinámicas, consulta la documentación del Menú de Ventana.


© 2026 Colaboradores de Tauri. CC-BY / MIT