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)