11import { app , BrowserWindow , ipcMain , Menu , shell } from 'electron'
2+ import type { Rectangle } from 'electron'
23import path from 'path'
4+ import { platform } from 'process'
35import { store } from './store'
46import { checkForUpdate } from './update-check'
57import { ImageOptimizer } from './image-compressor'
@@ -8,12 +10,21 @@ import { createMenu } from './menu'
810const isDev = process . env . NODE_ENV === 'development'
911let mainWindow : BrowserWindow
1012
13+ function getPlatform ( ) {
14+ switch ( platform ) {
15+ case 'darwin' : return 'macos'
16+ case 'win32' : return 'windows'
17+ default : return 'linux'
18+ }
19+ }
20+
1121function createWindow ( ) {
12- const bounds = store . app . get ( 'bounds' )
22+ const { x , y } = store . app . get ( 'bounds' ) as Rectangle
1323 mainWindow = new BrowserWindow ( {
1424 width : 550 ,
1525 height : 370 ,
16- ...bounds ,
26+ x,
27+ y,
1728 titleBarStyle : 'hidden' ,
1829 resizable : false ,
1930 backgroundColor : '#212123' ,
@@ -40,6 +51,7 @@ function createWindow () {
4051}
4152
4253function init ( ) {
54+ store . app . set ( 'os' , getPlatform ( ) )
4355 createWindow ( )
4456 checkForUpdate ( mainWindow )
4557 Menu . setApplicationMenu ( Menu . buildFromTemplate ( createMenu ( mainWindow ) ) )
@@ -72,6 +84,14 @@ ipcMain.on('drop', (_, files = []) => {
7284 optimizer . start ( )
7385} )
7486
87+ ipcMain . on ( 'toolbar' , ( _ , type ) => {
88+ switch ( type ) {
89+ case 'reduce' : return mainWindow . minimize ( )
90+ case 'maximize' : return mainWindow . maximize ( )
91+ case 'close' : return mainWindow . close ( )
92+ }
93+ } )
94+
7595ipcMain . on ( 'open-url' , ( event , url ) => {
7696 shell . openExternal ( url )
7797} )
0 commit comments