MCPcopy
hub / github.com/lobehub/lobehub / LinuxMenu

Class LinuxMenu

apps/desktop/src/main/menus/impls/linux.ts:12–496  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10import { BaseMenuPlatform } from './BaseMenuPlatform';
11
12export class LinuxMenu extends BaseMenuPlatform implements IMenuPlatform {
13 private appMenu: Menu | null = null;
14 private trayMenu: Menu | null = null;
15
16 buildAndSetAppMenu(options?: MenuOptions): Menu {
17 const template = this.getAppMenuTemplate(options);
18 this.appMenu = Menu.buildFromTemplate(template);
19 Menu.setApplicationMenu(this.appMenu);
20 return this.appMenu;
21 }
22
23 buildContextMenu(type: string, data?: ContextMenuData): Menu {
24 let template: MenuItemConstructorOptions[];
25 switch (type) {
26 case 'chat': {
27 template = this.getChatContextMenuTemplate(data);
28 break;
29 }
30 case 'editor': {
31 template = this.getEditorContextMenuTemplate(data);
32 break;
33 }
34 default: {
35 template = this.getDefaultContextMenuTemplate(data);
36 }
37 }
38 return Menu.buildFromTemplate(template);
39 }
40
41 buildTrayMenu(): Menu {
42 const template = this.getTrayMenuTemplate();
43 this.trayMenu = Menu.buildFromTemplate(template);
44 return this.trayMenu;
45 }
46
47 refresh(options?: MenuOptions): void {
48 this.buildAndSetAppMenu(options);
49 }
50
51 // --- Private methods: define menu templates and logic ---
52
53 private getAppMenuTemplate(options?: MenuOptions): MenuItemConstructorOptions[] {
54 const showDev = isDev || options?.showDevItems;
55 const t = this.app.i18n.ns('menu');
56
57 const template: MenuItemConstructorOptions[] = [
58 {
59 label: t('file.title'),
60 submenu: [
61 {
62 accelerator: 'Ctrl+N',
63 click: () => {
64 const mainWindow = this.app.browserManager.getMainWindow();
65 mainWindow.show();
66 mainWindow.broadcast('createNewTopic');
67 },
68 label: t('file.newTopic'),
69 },

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected