79 lines
1.4 KiB
TypeScript
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,
|
|
};
|