diff --git a/src/App.vue b/src/App.vue index a092750..7886738 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ diff --git a/src/components/SyncPopover.vue b/src/components/SyncPopover.vue new file mode 100644 index 0000000..258771b --- /dev/null +++ b/src/components/SyncPopover.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/electron/colors.ts b/src/electron/colors.ts index c8f19ea..704d4b9 100644 --- a/src/electron/colors.ts +++ b/src/electron/colors.ts @@ -25,6 +25,10 @@ type ColorModeMapping = { dark: ColorMapping } +function getAccentColor(): string { + return '#' + systemPreferences.getAccentColor(); +} + function deriveColorMapping(): ColorModeMapping { if (process.platform == 'darwin') { return { @@ -39,7 +43,7 @@ function deriveColorMapping(): ColorModeMapping { selectedContentBackground: systemPreferences.getColor('selected-content-background'), windowBackground: systemPreferences.getColor('window-background'), - accent: systemPreferences.getAccentColor(), + accent: getAccentColor(), separator: /*systemPreferences.getColor('separator')*/ '#ffffff1a', divider: '#000000' }, @@ -54,7 +58,7 @@ function deriveColorMapping(): ColorModeMapping { selectedContentBackground: systemPreferences.getColor('selected-content-background'), windowBackground: systemPreferences.getColor('window-background'), - accent: systemPreferences.getAccentColor(), + accent: getAccentColor(), separator: /*systemPreferences.getColor('separator')*/ '#d8d4d8', divider: '#d8d4d8' } @@ -64,15 +68,15 @@ function deriveColorMapping(): ColorModeMapping { dark: { text: systemPreferences.getColor('window-text'), textSecondary: systemPreferences.getColor('window-text'), - controlText: systemPreferences.getColor('window-text'), + controlText: systemPreferences.getColor('button-text'), selectedControlText: systemPreferences.getColor('window-text'), controlBackground: '', - navBarBackground: '#3c363c', - selectedContentBackground: systemPreferences.getAccentColor(), + navBarBackground: '#f0f0f0', + selectedContentBackground: getAccentColor(), windowBackground: systemPreferences.getColor('window'), - accent: systemPreferences.getAccentColor(), + accent: getAccentColor(), separator: '', divider: '#000000' }, @@ -83,11 +87,11 @@ function deriveColorMapping(): ColorModeMapping { selectedControlText: systemPreferences.getColor('window-text'), controlBackground: '', - navBarBackground: '#efebef', - selectedContentBackground: systemPreferences.getAccentColor(), + navBarBackground: '#f0f0f0', + selectedContentBackground: getAccentColor(), windowBackground: systemPreferences.getColor('window'), - accent: systemPreferences.getAccentColor(), + accent: getAccentColor(), separator: '', divider: '#d8d4d8' } diff --git a/src/electron/interface.ts b/src/electron/interface.ts index 3d0135e..1f43952 100644 --- a/src/electron/interface.ts +++ b/src/electron/interface.ts @@ -3,6 +3,7 @@ import { ipcMain } from "electron"; import OBSSocket from "@/electron/obs"; import Preferences from "./preferences"; import { Node } from './obs'; +import emitter from './events'; export interface InstallationOptions { preferences: Preferences, @@ -49,4 +50,8 @@ export function install(options: InstallationOptions): void { ipcMain.handle('sync-layout-to-scene', (_, nodes: Node[], sceneName: string) => { return options.obsSocket.syncLayout(nodes, sceneName); }) + + ipcMain.on('open-settings', () => { + emitter.emit('open-preferences'); + }) } \ No newline at end of file diff --git a/src/electron/menus.ts b/src/electron/menus.ts index c4d39b6..5ec91b3 100644 --- a/src/electron/menus.ts +++ b/src/electron/menus.ts @@ -31,40 +31,49 @@ export function installContextMenuHandling(): void { }); } +export function showsApplicationMenu(): boolean { + return process.platform == 'darwin' +} + export function configureApplicationMenu(): void { - Menu.setApplicationMenu( - Menu.buildFromTemplate( - [ - { - role: 'appMenu', - submenu: [ - { role: 'about' }, - { type: 'separator' }, - { - label: 'Preferences...', - accelerator: 'CmdOrCtrl+,', - click: () => { emitter.emit('open-preferences') } - }, - { type: 'separator' }, - { role: 'services' }, - { type: 'separator' }, - { role: 'hide' }, - { role: 'hideOthers' }, - { role: 'unhide' }, - { type: 'separator'}, - { role: 'quit' } - ] - }, - { - role: 'windowMenu', - submenu: [ - { role: 'minimize' }, - { role: 'zoom' }, - { type: 'separator' }, - { role: 'toggleDevTools' } - ] - } - ] + if (showsApplicationMenu()) { + Menu.setApplicationMenu( + Menu.buildFromTemplate( + [ + { + role: 'appMenu', + submenu: [ + { role: 'about' }, + { type: 'separator' }, + { + label: 'Preferences...', + accelerator: 'CmdOrCtrl+,', + click: () => { emitter.emit('open-preferences') } + }, + { type: 'separator' }, + { role: 'services' }, + { type: 'separator' }, + { role: 'hide' }, + { role: 'hideOthers' }, + { role: 'unhide' }, + { type: 'separator'}, + { role: 'quit' } + ] + }, + { + role: 'windowMenu', + submenu: [ + { role: 'minimize' }, + { role: 'zoom' }, + { type: 'separator' }, + { role: 'toggleDevTools' } + ] + } + ] + ) ) - ) + } else { + // Remove the menu on Windows, since we'll use the command bar for similar purposes. + Menu.setApplicationMenu(null) + } } \ No newline at end of file