/
githubmirror
/
tabby
Обзор
Документация
Войти
/
githubmirror
/
tabby
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/lib/index.ts
116 строк
3 KB
Eugene
clean up the plugin manager
13 июл 2026, 11:41
Не верифицирован
13 июл 2026, 11:41
d33ba48
Код
Авторство
О чём код?
// Registers main-process error logging - must be first so it catches import-time errors import { logMainError } from './errors' import { app, ipcMain, Menu, dialog } from 'electron' // set userData Path on portable version import './portable' // set defaults of environment variables import 'dotenv/config' process.env.TABBY_PLUGINS ??= '' process.env.TABBY_CONFIG_DIRECTORY ??= app.getPath('userData') import 'source-map-support/register' import './sentry' import './lru' import { parseArgs } from './cli' import { Application } from './app' import electronDebug from 'electron-debug' import { loadConfig } from './config' const argv = parseArgs(process.argv, process.cwd()) // eslint-disable-next-line @typescript-eslint/init-declarations let configStore: any try { configStore = loadConfig() } catch (err) { dialog.showErrorBox('Could not read config', err.message) app.exit(1) } process.mainModule = module const application = new Application(configStore) // Register tabby:// URL scheme if (process.defaultApp) { if (process.argv.length >= 2) { app.setAsDefaultProtocolClient('tabby', process.execPath, [process.argv[1]]) } } else { app.setAsDefaultProtocolClient('tabby') } ipcMain.on('app:new-window', () => { application.newWindow() }) process.on('uncaughtException', err => { application.broadcast('uncaughtException', err) }) if (argv.d) { electronDebug({ isEnabled: true, showDevTools: true, devToolsMode: 'undocked', }) } app.on('activate', async () => { if (!application.hasWindows()) { application.newWindow() } else { application.focus() } }) // Handle URL scheme on macOS app.on('open-url', async (event, url) => { event.preventDefault() console.log('Received open-url event:', url) if (!application.hasWindows()) { process.argv.push(url) } else { await app.whenReady() application.handleSecondInstance([url], process.cwd()) } }) app.on('second-instance', async (_event, newArgv, cwd) => { application.handleSecondInstance(newArgv, cwd) }) if (!app.requestSingleInstanceLock()) { app.quit() app.exit(0) } app.on('ready', async () => { if (process.platform === 'darwin') { app.dock.setMenu(Menu.buildFromTemplate([ { label: 'New window', click () { this.app.newWindow() }, }, ])) } try { application.init() const window = await application.newWindow({ hidden: argv.hidden }) await window.ready window.passCliArguments(process.argv, process.cwd(), false) window.focus() } catch (err) { logMainError('Failed to open window', err) dialog.showErrorBox('Tabby failed to start', String(err?.stack ?? err)) app.exit(1) } })