mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-30 18:05:55 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const {app, globalShortcut} = require('electron');
 | |
| const log = require('./src/services/log');
 | |
| const sqlInit = require('./src/services/sql_init');
 | |
| const cls = require('./src/services/cls');
 | |
| const keyboardActionsService = require('./src/services/keyboard_actions');
 | |
| const appIconService = require('./src/services/app_icon');
 | |
| const windowService = require('./src/services/window');
 | |
| 
 | |
| // Adds debug features like hotkeys for triggering dev tools and reload
 | |
| require('electron-debug')();
 | |
| 
 | |
| appIconService.installLocalAppIcon();
 | |
| 
 | |
| require('electron-dl')({ saveAs: true });
 | |
| 
 | |
| app.on('window-all-closed', () => {
 | |
|     if (process.platform !== 'darwin') {
 | |
|         app.quit();
 | |
|     }
 | |
|     else if (process.platform === 'win32') {
 | |
|         app.exit(0); // attempt to fix the issue when app.quite() won't terminate processes on windows
 | |
|     }
 | |
| });
 | |
| 
 | |
| async function registerGlobalShortcuts() {
 | |
|     await sqlInit.dbReady;
 | |
| 
 | |
|     const allActions = await keyboardActionsService.getKeyboardActions();
 | |
| 
 | |
|     for (const action of allActions) {
 | |
|         if (!action.effectiveShortcuts) {
 | |
|             continue;
 | |
|         }
 | |
| 
 | |
|         for (const shortcut of action.effectiveShortcuts) {
 | |
|             if (shortcut.startsWith('global:')) {
 | |
|                 const translatedShortcut = shortcut.substr(7);
 | |
| 
 | |
|                 const result = globalShortcut.register(translatedShortcut, cls.wrap(async () => {
 | |
|                     // window may be hidden / not in focus
 | |
|                     mainWindow.focus();
 | |
| 
 | |
|                     mainWindow.webContents.send('globalShortcut', action.actionName);
 | |
|                 }));
 | |
| 
 | |
|                 if (result) {
 | |
|                     log.info(`Registered global shortcut ${translatedShortcut} for action ${action.actionName}`);
 | |
|                 }
 | |
|                 else {
 | |
|                     log.info(`Could not register global shortcut ${translatedShortcut}`);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| app.on('ready', async () => {
 | |
|     app.setAppUserModelId('com.github.zadam.trilium');
 | |
| 
 | |
|     await sqlInit.dbConnection;
 | |
| 
 | |
|     // if schema doesn't exist -> setup process
 | |
|     // if schema exists, then we need to wait until the migration process is finished
 | |
|     if (await sqlInit.schemaExists()) {
 | |
|         await sqlInit.dbReady;
 | |
| 
 | |
|         await windowService.createMainWindow();
 | |
|     }
 | |
|     else {
 | |
|         await windowService.createSetupWindow();
 | |
|     }
 | |
| 
 | |
|     await registerGlobalShortcuts();
 | |
| });
 | |
| 
 | |
| app.on('will-quit', () => {
 | |
|     globalShortcut.unregisterAll();
 | |
| });
 | |
| 
 | |
| require('./src/www');
 |