-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
115 lines (96 loc) · 3.73 KB
/
main.js
File metadata and controls
115 lines (96 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
const path = require( 'path' );
const url = require( 'url' );
const { spawn } = require( 'child_process' );
require( 'v8-compile-cache' );
const { app, BrowserWindow } = require( 'electron' );
const Store = require( 'electron-store' );
const store = new Store();
require( 'electron-reload' )( __dirname, {
electron: path.join( __dirname, 'node_modules', '.bin', 'electron' )
} );
const { transformHwnd, bounds } = require( './common' );
const { devTools } = require( './configs/config' );
const registerGlobalShortcutsWindow = require( './main/globalShortcutsWindow' );
app.allowRendererProcessReuse = true;
// Module to create native browser window.
app.commandLine.appendSwitch( 'disable-smooth-scrolling' ); // Turn off the sluggish scrolling.
app.commandLine.appendSwitch( 'high-dpi-support', 'true' );
// app.commandLine.appendSwitch( "disable-color-correct-rendering" ); Keep a global reference of the window object, if you don't,
// the window will be closed automatically when the JavaScript object is garbage collected.
let mainWindow;
const isWindows = process.platform === 'win32';
const isLinux = process.platform === 'linux';
const isDarwin = process.platform === 'darwin';
function initialize () {
// Create the browser window.
mainWindow = new BrowserWindow( {
webPreferences: {
nodeIntegration: true
},
width : bounds( store ).width,
height : bounds( store ).height,
x : bounds( store ).x,
y : bounds( store ).y,
frame : false,
thickFrame : true,
transparent : true,
hasShadow : false
} );
registerGlobalShortcutsWindow( mainWindow );
//TODO: Make new module in /main/ for the below
mainWindow.on( 'resize', () => {
store.set( 'bounds', mainWindow.getBounds() );
} );
mainWindow.on( 'maximize', () => {
store.set( 'bounds', mainWindow.getBounds() );
} );
BrowserWindow.addDevToolsExtension( './debug/devtools-react' );
//registerGlobalShortcuts(); and load the index.html of the app.
mainWindow.loadURL( url.format( {
pathname: path.join( __dirname, 'index.html' ),
protocol: 'file:',
slashes : true
} ) );
if ( isWindows ) {
spawn( './libs/win32/SetWindowCompositionAttribute.exe', [
'hwnd',
transformHwnd( mainWindow.getNativeWindowHandle() ),
'accent',
'3',
'1',
'00000000',
'0'
] );
//spawn('./assets/slide/slide.exe');
}
/*TODO: think of more elegant solution ;) */
//*fork("./components/filemanager/server.js");
//* Open the DevTools. mainWindow.webContents.openDevTools() Emitted when the window is closed.
mainWindow.on( 'closed', function () {
// Dereference the window object, usually you would store windows in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null;
} );
if ( devTools )
mainWindow.openDevTools();
}
// This method will be called when Electron has finished initialization and is ready to create browser windows. Some APIs can only
// be used after this event occurs.
app.on( 'ready', _ => {
initialize();
} );
// Quit when all windows are closed.
app.on( 'window-all-closed', function () {
// On OS X it is common for applications and their menu bar to stay active until the user quits explicitly with Cmd + Q
if ( process.platform !== 'darwin' ) {
app.quit();
}
} );
app.on( 'activate', function () {
// On OS X it's common to re-create a window in the app when the dock icon is clicked and there are no other windows open.
if ( mainWindow === null ) {
initialize();
}
} );
// In this file you can include the rest of your app's specific main process code. You can also put them in separate files and
// require them here.