2019-10-10 13:47:34 +00:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8" />
|
|
|
|
<title>Customize Menus</title>
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
2019-10-16 15:17:09 +00:00
|
|
|
<div>
|
2019-10-10 13:47:34 +00:00
|
|
|
<h1>Customize Menus</h1>
|
|
|
|
|
|
|
|
<h3>
|
|
|
|
The <code>Menu</code> and <code>MenuItem</code> modules can be used to
|
|
|
|
create custom native menus.
|
|
|
|
</h3>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
There are two kinds of menus: the application (top) menu and context
|
|
|
|
(right-click) menu.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
Open the
|
2020-02-17 00:46:41 +00:00
|
|
|
<a href="https://electronjs.org/docs/api/menu"
|
2019-10-16 15:17:09 +00:00
|
|
|
>full API documentation<span
|
2019-10-10 13:47:34 +00:00
|
|
|
>(opens in new window)</span
|
|
|
|
></a
|
|
|
|
>
|
|
|
|
in your browser.
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
2019-10-16 15:17:09 +00:00
|
|
|
<div>
|
2019-10-10 13:47:34 +00:00
|
|
|
<h2>Create an application menu</h2>
|
2019-10-16 15:17:09 +00:00
|
|
|
<div>
|
|
|
|
<div>
|
2019-10-10 13:47:34 +00:00
|
|
|
<p>
|
|
|
|
The <code>Menu</code> and <code>MenuItem</code> modules allow you to
|
|
|
|
customize your application menu. If you don't set any menu, Electron
|
|
|
|
will generate a minimal menu for your app by default.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
If you click the 'View' option in the application menu and then the
|
|
|
|
'App Menu Demo', you'll see an information box displayed.
|
|
|
|
</p>
|
|
|
|
|
2019-10-16 15:17:09 +00:00
|
|
|
<div>
|
2019-10-10 13:47:34 +00:00
|
|
|
<h2>ProTip</h2>
|
|
|
|
<strong>Know operating system menu differences.</strong>
|
|
|
|
<p>
|
|
|
|
When designing an app for multiple operating systems it's
|
|
|
|
important to be mindful of the ways application menu conventions
|
|
|
|
differ on each operating system.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
For instance, on Windows, accelerators are set with an
|
|
|
|
<code>&</code>. Naming conventions also vary, like between
|
|
|
|
"Settings" or "Preferences". Below are resources for learning
|
|
|
|
operating system specific standards.
|
|
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a
|
|
|
|
href="https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/"
|
2019-10-16 15:17:09 +00:00
|
|
|
>macOS<span
|
2019-10-10 13:47:34 +00:00
|
|
|
>(opens in new window)</span
|
|
|
|
></a
|
|
|
|
>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a
|
2023-03-21 15:39:19 +00:00
|
|
|
href="https://learn.microsoft.com/en-us/previous-versions/windows/desktop/bb226797"
|
2019-10-16 15:17:09 +00:00
|
|
|
>Windows<span
|
2019-10-10 13:47:34 +00:00
|
|
|
>(opens in new window)</span
|
|
|
|
></a
|
|
|
|
>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a
|
|
|
|
href="https://developer.gnome.org/hig/stable/menu-bars.html.en"
|
2019-10-16 15:17:09 +00:00
|
|
|
>Linux<span
|
2019-10-10 13:47:34 +00:00
|
|
|
>(opens in new window)</span
|
|
|
|
></a
|
|
|
|
>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2019-10-16 15:17:09 +00:00
|
|
|
<div>
|
2019-10-10 13:47:34 +00:00
|
|
|
<h2>Create a context menu</h2>
|
2019-10-16 15:17:09 +00:00
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<button id="context-menu">View Demo</button>
|
2019-10-10 13:47:34 +00:00
|
|
|
</div>
|
|
|
|
<p>
|
|
|
|
A context, or right-click, menu can be created with the
|
|
|
|
<code>Menu</code> and <code>MenuItem</code> modules as well. You can
|
|
|
|
right-click anywhere in this app or click the demo button to see an
|
|
|
|
example context menu.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
In this demo we use the <code>ipcRenderer</code> module to show the
|
|
|
|
context menu when explicitly calling it from the renderer process.
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
See the full
|
|
|
|
<a
|
2020-02-17 00:46:41 +00:00
|
|
|
href="https://electronjs.org/docs/api/web-contents/#event-context-menu"
|
2019-10-10 13:47:34 +00:00
|
|
|
>context-menu event documentation</a
|
|
|
|
>
|
|
|
|
for all the available properties.
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
// You can also require other files to run in this process
|
|
|
|
require("./renderer.js");
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|