Files
WYF-koubo/electron/config/tray.ts
T
2026-06-19 18:45:55 +08:00

79 lines
1.4 KiB
TypeScript

import {app, Menu, Tray} from "electron";
import {trayPath} from "./icon";
import {AppRuntime} from "../mapi/env";
import {AppConfig} from "../../src/config";
import {t} from "./lang";
import {isMac, isWin} from "../lib/env";
let tray = null;
const showApp = () => {
if (isMac) {
app.dock.show();
}
AppRuntime.mainWindow.show();
};
const hideApp = () => {
if (isMac) {
app.dock.hide();
}
AppRuntime.mainWindow.hide();
};
const quitApp = () => {
app.quit();
};
const ready = () => {
try {
tray = new Tray(trayPath);
} catch (err) {
console.error('[Tray] Failed to create tray:', err);
return;
}
tray.setToolTip(AppConfig.title);
if (isWin) {
tray.on("click", () => {
showApp();
});
}
const contextMenu = Menu.buildFromTemplate([
{
label: t("显示主界面"),
click: () => {
showApp();
},
},
{
label: t("重启"),
click: () => {
app.relaunch();
quitApp();
},
},
{
label: t("退出"),
click: () => {
quitApp();
},
},
]);
tray.setContextMenu(contextMenu);
};
const show = () => {
if (tray) {
tray.destroy();
tray = null;
}
};
export const ConfigTray = {
ready,
};