|
|
|
@ -8,7 +8,11 @@ import { analytics, id } from './telemetry' |
|
|
|
require('@electron/remote/main').initialize() |
|
|
|
|
|
|
|
let tray: Tray | null = null |
|
|
|
|
|
|
|
const SingleInstanceLock = app.requestSingleInstanceLock() |
|
|
|
if (!SingleInstanceLock) { |
|
|
|
app.quit() |
|
|
|
} |
|
|
|
|
|
|
|
const createSystemtray = () => { |
|
|
|
let brightModeIconPath = path.join(__dirname, '..', '..', 'assets', 'ollama_icon_dark_16x16.png') |
|
|
|
@ -108,53 +112,49 @@ function installCLI() { |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
if (!SingleInstanceLock) { |
|
|
|
app.quit() |
|
|
|
} else { |
|
|
|
app.on('ready', () => { |
|
|
|
if (process.platform === 'darwin') { |
|
|
|
app.dock.hide() |
|
|
|
|
|
|
|
if (!app.isInApplicationsFolder()) { |
|
|
|
const chosen = dialog.showMessageBoxSync({ |
|
|
|
type: 'question', |
|
|
|
buttons: ['Move to Applications', 'Do Not Move'], |
|
|
|
message: 'Ollama works best when run from the Applications directory.', |
|
|
|
defaultId: 0, |
|
|
|
cancelId: 1, |
|
|
|
}) |
|
|
|
|
|
|
|
if (chosen === 0) { |
|
|
|
try { |
|
|
|
app.moveToApplicationsFolder({ |
|
|
|
conflictHandler: conflictType => { |
|
|
|
if (conflictType === 'existsAndRunning') { |
|
|
|
dialog.showMessageBoxSync({ |
|
|
|
type: 'info', |
|
|
|
message: 'Cannot move to Applications directory', |
|
|
|
detail: |
|
|
|
'Another version of Ollama is currently running from your Applications directory. Close it first and try again.', |
|
|
|
}) |
|
|
|
} |
|
|
|
return true |
|
|
|
}, |
|
|
|
}) |
|
|
|
return |
|
|
|
} catch (e) { |
|
|
|
console.error('Failed to move to applications folder') |
|
|
|
console.error(e) |
|
|
|
} |
|
|
|
app.on('ready', () => { |
|
|
|
if (process.platform === 'darwin') { |
|
|
|
app.dock.hide() |
|
|
|
|
|
|
|
if (!app.isInApplicationsFolder()) { |
|
|
|
const chosen = dialog.showMessageBoxSync({ |
|
|
|
type: 'question', |
|
|
|
buttons: ['Move to Applications', 'Do Not Move'], |
|
|
|
message: 'Ollama works best when run from the Applications directory.', |
|
|
|
defaultId: 0, |
|
|
|
cancelId: 1, |
|
|
|
}) |
|
|
|
|
|
|
|
if (chosen === 0) { |
|
|
|
try { |
|
|
|
app.moveToApplicationsFolder({ |
|
|
|
conflictHandler: conflictType => { |
|
|
|
if (conflictType === 'existsAndRunning') { |
|
|
|
dialog.showMessageBoxSync({ |
|
|
|
type: 'info', |
|
|
|
message: 'Cannot move to Applications directory', |
|
|
|
detail: |
|
|
|
'Another version of Ollama is currently running from your Applications directory. Close it first and try again.', |
|
|
|
}) |
|
|
|
} |
|
|
|
return true |
|
|
|
}, |
|
|
|
}) |
|
|
|
return |
|
|
|
} catch (e) { |
|
|
|
console.error('Failed to move to applications folder') |
|
|
|
console.error(e) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
createSystemtray() |
|
|
|
createSystemtray() |
|
|
|
|
|
|
|
if (app.isPackaged) { |
|
|
|
installCLI() |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
if (app.isPackaged) { |
|
|
|
installCLI() |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
// Quit when all windows are closed, except on macOS. There, it's common
|
|
|
|
// for applications and their menu bar to stay active until the user quits
|
|
|
|
|