Windows任务栏
Electron具有用于在Windows任务栏中配置应用程序图标的API。支持的是一个创建JumpList
, 自定义缩略图和工具栏, 图标覆盖,以及所谓的 “闪框”效果,但Electron也使用app的Dock图标来实现类似的跨平台特性最近的文件和 应用进展。
跳转列表
Windows允许应用程序定义自定义上下文菜单,当用户右键单击任务栏中的应用程序图标时,将显示该菜单。该上下文菜单称为 JumpList
。您可以在Tasks
JumpList类别中指定自定义操作,如MSDN所引用:
应用程序基于程序的功能以及用户期望使用它们进行的关键操作来定义任务。任务应该与上下文无关,因为无需运行应用程序即可使它们起作用。从统计学上来说,它们还应该是普通用户在应用程序中执行的最常见的统计操作,例如撰写电子邮件或在邮件程序中打开日历,在文字处理器中创建新文档,以特定模式启动应用程序,或启动其子命令之一。应用程序不应使用标准用户不需要的高级功能或一次性操作(例如注册)来使菜单混乱。不要将任务用于促销项目,例如升级或特价优惠。
强烈建议任务列表是静态的。无论应用程序的状态如何,它都应保持不变。尽管可以动态更改列表,但您应考虑到这可能会使不希望目标列表的那一部分发生更改的用户感到困惑。
Internet Explorer的任务:
与macOS中的停靠菜单不同,后者是真正的菜单,Windows中的用户任务的工作方式类似于应用程序快捷方式,因此当用户单击任务时,将使用指定的参数执行程序。
要为您的应用程序设置用户任务,可以使用 app.setUserTasks API:
const { app } = require('electron')
app.setUserTasks([
{
program: process.execPath,
arguments: '--new-window',
iconPath: process.execPath,
iconIndex: 0,
title: 'New Window',
description: 'Create a new window'
}
])
app.setUserTasks
使用空数组进行调用:
const { app } = require('electron')
app.setUserTasks([])
缩略图工具栏
在Windows上,您可以在应用程序窗口的任务栏布局中添加带有指定按钮的缩略图工具栏。它为用户提供了一种无需还原或激活窗口即可访问特定窗口命令的方法。
从MSDN可以看到:
该工具栏是熟悉的标准工具栏常用控件。它最多具有七个按钮。每个按钮的ID,图像,工具提示和状态都在结构中定义,然后将其传递到任务栏。该应用程序可以根据其当前状态的需要显示,启用,禁用或隐藏缩略图工具栏上的按钮。
例如,Windows Media Player可能提供标准的媒体传输控件,例如播放,暂停,静音和停止。
Windows Media Player的缩略图工具栏:
您可以使用BrowserWindow.setThumbarButtons在应用程序中设置缩略图工具栏:
const { BrowserWindow } = require('electron')
const path = require('path')
const win = new BrowserWindow()
win.setThumbarButtons([
{
tooltip: 'button1',
icon: path.join(__dirname, 'button1.png'),
click () { console.log('button1 clicked') }
}, {
tooltip: 'button2',
icon: path.join(__dirname, 'button2.png'),
flags: ['enabled', 'dismissonclick'],
click () { console.log('button2 clicked.') }
}
])
BrowserWindow.setThumbarButtons
使用一个空数组调用:
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.setThumbarButtons([])
在Windows上,任务栏按钮可以使用一个小的覆盖物来显示应用程序状态,如MSDN所示:
图标覆盖层用作状态的上下文通知,旨在消除需要单独的通知区域状态图标以将该信息传达给用户的需求。例如,现在可以通过任务栏按钮上的覆盖图指示当前在通知区域中显示的Microsoft Outlook中的新邮件状态。同样,您必须在开发周期中决定哪种方法最适合您的应用程序。覆盖图标旨在提供重要的长期状态或通知,例如网络状态,Messenger状态或新邮件。不应向用户展示不断变化的叠加层或动画。
覆盖任务栏按钮:
要为窗口设置覆盖图标,可以使用 BrowserWindow.setOverlayIcon API:
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.setOverlayIcon('path/to/overlay.png', 'Description for overlay')
在Windows上,您可以突出显示任务栏按钮以引起用户的注意。这类似于在macOS上弹跳停靠图标。从MSDN参考文档:
通常,窗口会闪烁以通知用户该窗口需要注意,但当前没有键盘焦点。
要刷新BrowserWindow任务栏按钮,可以使用 BrowserWindow.flashFrame API:
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.once('focus', () => win.flashFrame(false))
win.flashFrame(true)
flashFrame
使用false
来关闭闪光灯。在上面的示例中,当窗口成为焦点时被调用,但是您可以使用超时或其他事件将其禁用。