コンテンツにスキップ
Tauri

システム・トレイ

Tauri では、あなたのアプリケーション用に「システム・トレイ」を作成およびカスタマイズできます。 これにより、一般的なアクションにすばやくアクセスできるようになり、ユーザー・エクスペリエンスが向上します。

まず初めに、Cargo.toml をアップデートし、「システム・トレイ」に必要な機能が含まれるようにします。

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

「トレイ API」は JavaScript と Rust の両方で利用できます。

《訳注》

トレイ API tray API: 以下、本稿での各関数へのリンクは、「英語版」のみです。

新しい「トレイ・アイコン」を作成するには、静的関数 TrayIcon.new を使用します。

import { TrayIcon } from '@tauri-apps/api/tray';
const options = {
// この部分には、トレイ・メニュー(tray menu)、タイトル(title)、ツールチップ(tooltip)、イベント・ハンドラー(event handler)などを追加できます。
};
const tray = await TrayIcon.new(options);

カスタマイズ・オプションの詳細については、リンク先 TrayIconOptions を参照してください。

トレイの生成時には、アプリケーション・アイコンをトレイ・アイコンとして利用できます。

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);

トレイをクリックしたときに表示される「メニュー」を追加するには、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);

JavaScript では、「メニュー・クリック・イベント・リスナー」をメニュー項目に直接記述できます:

  • メニュー・クリック・ハンドラーを共有利用する場合

    import { Menu } from '@tauri-apps/api/menu';
    function onTrayMenuClick(itemId) {
    // itemId === 'quit'
    }
    const menu = await Menu.new({
    items: [
    {
    id: 'quit',
    text: 'Quit',
    action: onTrayMenuClick,
    },
    ],
    });
  • 専用のメニュー・クリック・ハンドラーを使用する場合

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

「トレイ・アイコン」は、次のような「マウス・イベント」に対してイベントを発行します。

  • クリック(Click): カーソルが左、右、または中央のシングル・クリックを受け取ったときに、マウスのクリックが解除されたかどうかの情報も含めて、トリガーされます。
  • ダブルクリック(DoubleClick): カーソルが左、右、または中央のダブルクリックを受け取ったときにトリガーされます。
  • 進入(Enter): カーソルがトレイ・アイコン領域に入ったときにトリガーされます
  • 移動(Move): カーソルがトレイ・アイコン領域内を移動したときにトリガーされます
  • 離脱(Leave): カーソルがトレイ・アイコン領域から離れた時にトリガーされます
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);

「イベント・ペイロード」の詳細については、TrayIconEvent を参照してください。

【※ この日本語版は、「Jul 08, 2025 英語版」に基づいています】


© 2025 Tauri Contributors. CC-BY / MIT