hyper/app/menus/menus/shell.ts

105 lines
2.8 KiB
TypeScript
Raw Normal View History

2023-06-26 01:29:50 -08:00
import type {BrowserWindow, MenuItemConstructorOptions} from 'electron';
2019-12-20 08:55:03 -09:00
2023-07-25 08:11:02 -08:00
const shellMenu = (
2019-12-20 08:55:03 -09:00
commandKeys: Record<string, string>,
execCommand: (command: string, focusedWindow?: BrowserWindow) => void,
profiles: string[]
2019-12-20 08:55:03 -09:00
): MenuItemConstructorOptions => {
const isMac = process.platform === 'darwin';
return {
label: isMac ? 'Shell' : 'File',
submenu: [
{
label: 'New Tab',
accelerator: commandKeys['tab:new'],
click(item, focusedWindow) {
execCommand('tab:new', focusedWindow);
}
},
{
label: 'New Window',
accelerator: commandKeys['window:new'],
click(item, focusedWindow) {
execCommand('window:new', focusedWindow);
}
},
{
type: 'separator'
},
{
label: 'Split Down',
accelerator: commandKeys['pane:splitDown'],
click(item, focusedWindow) {
execCommand('pane:splitDown', focusedWindow);
}
},
{
label: 'Split Right',
accelerator: commandKeys['pane:splitRight'],
click(item, focusedWindow) {
execCommand('pane:splitRight', focusedWindow);
}
},
{
type: 'separator'
},
...profiles.map(
(profile): MenuItemConstructorOptions => ({
label: profile,
submenu: [
{
label: 'New Tab',
accelerator: commandKeys[`tab:new:${profile}`],
click(item, focusedWindow) {
execCommand(`tab:new:${profile}`, focusedWindow);
}
},
2023-06-30 11:07:04 -08:00
{
label: 'New Window',
accelerator: commandKeys[`window:new:${profile}`],
2023-06-30 11:07:04 -08:00
click(item, focusedWindow) {
execCommand(`window:new:${profile}`, focusedWindow);
}
},
{
type: 'separator'
},
{
label: 'Split Down',
accelerator: commandKeys[`pane:splitDown:${profile}`],
click(item, focusedWindow) {
execCommand(`pane:splitDown:${profile}`, focusedWindow);
}
},
{
label: 'Split Right',
accelerator: commandKeys[`pane:splitRight:${profile}`],
click(item, focusedWindow) {
execCommand(`pane:splitRight:${profile}`, focusedWindow);
}
}
]
})
),
{
type: 'separator'
},
{
label: 'Close',
accelerator: commandKeys['pane:close'],
click(item, focusedWindow) {
execCommand('pane:close', focusedWindow);
}
},
{
label: isMac ? 'Close Window' : 'Quit',
role: 'close',
accelerator: commandKeys['window:close']
}
]
};
};
2023-07-25 08:11:02 -08:00
export default shellMenu;