feat(settings): expose monospace font toggle in Settings UI

Add a View > Monospace Font menu (font family radio + ligatures
checkbox) — the app's existing reachable UI surface for this class of
preference (mirrors Theme/Font Size/Spell Check). The menu sends the
change to the renderer, which persists it via the already-working
ipcMain.handle('set-monospace-settings', ...) and applies it live via
the same applyMonospaceClasses() used on initial load.

Amit Haridas
This commit is contained in:
2026-08-23 19:31:33 +05:30
parent e09853952b
commit 11b1c9e13e
2 changed files with 49 additions and 0 deletions
+38
View File
@@ -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',
+11
View File
@@ -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';