diff --git a/browser.js b/browser.js index e69de29..7e33c88 100644 --- a/browser.js +++ b/browser.js @@ -0,0 +1,40 @@ +'use strict'; +const electron = require('electron'); +const config = require('./config'); + +const ipc = electron.ipcRenderer; +const webFrame = electron.webFrame; + +ipc.on('zoom-in', () => { + // Get zoom factor and increase it + const currentZoomFactor = webFrame.getZoomFactor(); + const zoomFactor = currentZoomFactor + 0.05; + // Upper bound check + if (zoomFactor < 1.3) { + webFrame.setZoomFactor(zoomFactor); + config.set('zoomFactor', zoomFactor); + } +}); + +ipc.on('zoom-out', () => { + // Get zoom factor and decrease it + const currentZoomFactor = webFrame.getZoomFactor(); + const zoomFactor = currentZoomFactor - 0.05; + // Lower bound check + if (zoomFactor > 0.7) { + webFrame.setZoomFactor(zoomFactor); + config.set('zoomFactor', zoomFactor); + } +}); + +ipc.on('zoom-reset', () => { + // Reset zoom factor + webFrame.setZoomFactor(1.0); + config.set('zoomFactor', 1.0); +}); + +document.addEventListener('DOMContentLoaded', () => { + // Preserve zoom factor + const zoomFactor = config.get('zoomFactor'); + webFrame.setZoomFactor(zoomFactor); +}); diff --git a/menu.js b/menu.js index c015c02..bf619d3 100644 --- a/menu.js +++ b/menu.js @@ -6,6 +6,14 @@ const electron = require('electron'); const app = electron.app; const shell = electron.shell; const appName = app.getName(); +const BrowserWindow = electron.BrowserWindow; + +function activate(command) { + const appWindow = BrowserWindow.getAllWindows()[0]; + // Extra measure in order to be shown + appWindow.show(); + appWindow.webContents.send(command); +} const helpSubmenu = [{ label: `${appName} Website`, @@ -96,6 +104,28 @@ const darwinTpl = [{ focusedWindow.reload(); } } + }, { + type: 'separator' + }, { + label: 'Make Text Larger', + accelerator: 'CmdOrCtrl+Plus', + click() { + activate('zoom-in'); + } + }, { + label: 'Make Text Smaller', + accelerator: 'CmdOrCtrl+-', + click() { + activate('zoom-out'); + } + }, { + label: 'Reset Zoom Level', + accelerator: 'CmdOrCtrl+0', + click() { + activate('zoom-reset'); + } + }, { + type: 'separator' }, { label: 'Toggle Full Screen', accelerator: 'Ctrl+Command+F', @@ -170,6 +200,28 @@ const otherTpl = [{ focusedWindow.reload(); } } + }, { + type: 'separator' + }, { + label: 'Make Text Larger', + accelerator: 'CmdOrCtrl+Plus', + click() { + activate('zoom-in'); + } + }, { + label: 'Make Text Smaller', + accelerator: 'CmdOrCtrl+-', + click() { + activate('zoom-out'); + } + }, { + label: 'Reset Zoom Level', + accelerator: 'CmdOrCtrl+0', + click() { + activate('zoom-reset'); + } + }, { + type: 'separator' }, { label: 'Toggle Full Screen', accelerator: 'F11', diff --git a/readme.md b/readme.md index 228fe88..7fb5864 100644 --- a/readme.md +++ b/readme.md @@ -30,6 +30,14 @@ brew cask install whale [Download](https://github.com/1000ch/whale/releases) and extract `.zip`, and move `Whale` to some location. +## Keyboard shortcuts + +Description | Keys +-------------------------- | -------------------------- +Reset Zoom Level | Cmd/Ctrl 0 +Make Text Smaller | Cmd/Ctrl - +Make Text Larger | Cmd/Ctrl Shift = + ## License [MIT](https://1000ch.mit-license.org) © [Shogo Sensui](https://github.com/1000ch)