diff --git a/src/main.js b/src/main.js index c12970c..64215be 100644 --- a/src/main.js +++ b/src/main.js @@ -1218,6 +1218,44 @@ function createMenu() { { type: 'separator', }, + { + label: 'Monospace Font', + submenu: [ + { + label: 'JetBrains Mono', + type: 'radio', + checked: readSettingsJsonCached().monospaceFont !== 'fira-code', + click: () => + mainWindow.webContents.send('monospace-setting-change', { + monospaceFont: 'jetbrains-mono', + }), + }, + { + label: 'Fira Code', + type: 'radio', + checked: readSettingsJsonCached().monospaceFont === 'fira-code', + click: () => + mainWindow.webContents.send('monospace-setting-change', { + monospaceFont: 'fira-code', + }), + }, + { + type: 'separator', + }, + { + label: 'Ligatures', + type: 'checkbox', + checked: readSettingsJsonCached().monospaceLigatures === true, + click: (menuItem) => + mainWindow.webContents.send('monospace-setting-change', { + monospaceLigatures: menuItem.checked, + }), + }, + ], + }, + { + type: 'separator', + }, { label: 'Spell Check', type: 'checkbox', diff --git a/src/renderer.js b/src/renderer.js index caaca59..892dc64 100644 --- a/src/renderer.js +++ b/src/renderer.js @@ -1875,6 +1875,17 @@ document.addEventListener('DOMContentLoaded', async () => { applyMonospaceClasses(null); } + // Reachable UI control: View > Monospace Font menu (main.js) sends the + // requested change here; persist it via the existing setter and apply it + // live the same way the initial load above does. + ipcRenderer.on('monospace-setting-change', (event, partial) => { + if (!window.electronAPI || typeof window.electronAPI.invoke !== 'function') return; + window.electronAPI + .invoke('set-monospace-settings', partial) + .then(applyMonospaceClasses) + .catch(() => {}); + }); + // Welcome tab on startup const hasLaunched = localStorage.getItem('hasLaunchedBefore'); const showWelcome = localStorage.getItem('showWelcomeOnStartup') !== 'false';