Microsoft-ui-xaml: 提案:WinUI 3 桌面(Win32 和 .NET Core)的系统托盘图标

创建于 2020-02-24  ·  20评论  ·  资料来源: microsoft/microsoft-ui-xaml

提案:WinUI 3 桌面(Win32 和 .NET Core)的系统托盘图标

概括


添加在系统托盘区域创建 NotifyIcon 的功能。 用于 WinUI 3 桌面

基本原理

  • 允许用户在任何地方访问应用程序。
  • 允许在后台运行的应用程序提出上下文菜单。
  • 基于系统托盘模型增加经典Win32应用的可移植性。

范围


| 能力 | 优先级 |
| :---------- | :------- |
| 允许开发者创建系统托盘图标| 必须|
| 系统托盘上下文菜单应遵循Windows Light/Dark 主题和流畅的设计| 应该|
| 允许开发者发送经典气球通知 | 不会|



area-External feature proposal

最有用的评论

我认为应该从 Windows 中完全删除系统托盘图标。 我们应该将所有应用程序放在任务栏上以保持一致性。 在这两个地方都看到应用程序是荒谬的。 为什么一个应用程序在任务栏上,另一个在系统托盘中,另一个在两者中? 它没有逻辑。

如果你想要一些图标在右边,一些在左边——我们不需要系统托盘,我们需要的是更多的任务栏定制。

也许,但我不确定。 对我来说,系统托盘图标与任务栏图标没有相同的实用程序:

  • 任务栏图标用于打开的窗口应用程序并与之交互。
  • 系统托盘图标用于后台应用程序(防病毒、云同步),允许我们在不打开任何窗口的情况下与这些活动进行交互(带有上下文菜单和弹出窗口,如 OneDrive、声音图标等)

所有20条评论

Windows 10X 不支持此功能。 我觉得不应该带回来。

@jesbis你能路由这个请求吗?

@shaheedmalik我会争辩说,仅仅因为 Windows 10X 不支持它,并不意味着 Windows 10 不应该。 请记住,Windows 10 的用户超过 9.5 亿。

@marb2000仅供参考

我认为应该从 Windows 中完全删除系统托盘图标。 我们应该将所有应用程序放在任务栏上以保持一致性。 在这两个地方都看到应用程序是荒谬的。 为什么一个应用程序在任务栏上,另一个在系统托盘中,另一个在两者中? 它没有逻辑。

如果你想要一些图标在右边,一些在左边——我们不需要系统托盘,我们需要的是更多的任务栏定制。

我认为应该从 Windows 中完全删除系统托盘图标。 我们应该将所有应用程序放在任务栏上以保持一致性。 在这两个地方都看到应用程序是荒谬的。 为什么一个应用程序在任务栏上,另一个在系统托盘中,另一个在两者中? 它没有逻辑。

如果你想要一些图标在右边,一些在左边——我们不需要系统托盘,我们需要的是更多的任务栏定制。

也许,但我不确定。 对我来说,系统托盘图标与任务栏图标没有相同的实用程序:

  • 任务栏图标用于打开的窗口应用程序并与之交互。
  • 系统托盘图标用于后台应用程序(防病毒、云同步),允许我们在不打开任何窗口的情况下与这些活动进行交互(带有上下文菜单和弹出窗口,如 OneDrive、声音图标等)

是否有另一种简单、优雅和直观的方式让后台进程与用户交互,而无需成为基于 Windows 的应用程序。 如果是这样,那么可能是系统托盘是多余的,如果这是唯一的方法,那么它需要保留。 我认为它有很多用例。

应用可以固定到 Windows 10 开始菜单,并使用徽章 API磁贴 API通知用户并通知他们有关应用事件的信息。 右键单击“开始”菜单中的应用程序条目会打开一个上下文菜单,可以使用Jumplist API填充该菜单。

鉴于 10X 删除通知区域,我目前正在使用上述 API 将我的应用程序的通知区域条目替换为“开始”菜单条目。 我的应用程序的用户一直支持这种变化。

10X 并没有移除通知区域,而是只显示通知,没有侧边栏。

快速操作在它们自己单独的 UI 区域中进行。

托盘图标理论上可以放置在这些空间中的任何一个,除了 10X,他们认为安装后台应用程序可能是他们希望避免的。 还有其他方法可以实现相同的目标,但是在 10X 变得完全详细之前,并且在测试人员手中 - 对此的反馈将不得不等待。

我看不出为什么 Windows 10 上的 WinUI 桌面应用程序无法使用托盘图标。 如果有可以提供给应用程序开发人员的控件或 UI 表面,以启用一致的托盘 UI 和 UX - 我会赞成。 目前与弹出菜单样式不一致太多。

@mdtauk “10X 删除通知区域”是指我相信这里的人们将其描述为“系统托盘”的区域: https :

@mdtauk “10X 删除通知区域”是指我相信这里的人们将其描述为“系统托盘”的区域: https :

系统托盘就是我的想法 - 所以我只是想区分它和保存通知的 Windows 10 区域。

操作中心是 Windows 10 中保存通知的 UI 区域的名称。 MS 似乎通过对同一 UI 区域使用“系统托盘”和“通知区域”术语来造成混淆,但文档指出:
image

由于 UWP 应用程序不直接支持“系统托盘”并且 10X 完全废弃了它(基于我们拥有的最新信息),这似乎不是 MS 想要继续前进的方向。 因此,与在系统托盘/通知区域中放置应用程序图标相比,我更愿意了解为什么将应用程序固定到“开始”菜单并使用上述 API 不是一种选择。

如果这不是一个选项,我们应该告诉 MS 为什么会这样,以便他们可以改进用户如何使用 UWP Shell 交互概念(瓷砖、徽章、通知)与后台应用程序交互。 要求通知区域(系统托盘)支持的 WinUI 3 桌面应用程序仍然需要一种方法来通知/通知用户 10X,这显然是 Windows 的未来。 我不确定现在要求系统托盘支持的用户是否也不会要求 MS 将“系统托盘”添加回 10X。 由于他们的请求可能不会被批准,他们将有更多的工作要做,以使他们的 Windows 10 WinUI 应用程序为 10X 做好准备。

因此,我觉得我们应该使用这个提案来统一通知区域(系统托盘)和 Windows 8/10 引入的新应用程序反馈/交互区域的想法和概念。 找出当前用户界面的不足之处并尝试改进它。 我认为当前的 UWP Shell API 没有太多遗漏。

主要用于在没有任何 UI 或窗口的情况下运行的应用程序,然后在与之交互时打开一个窗口或显示 UI。

由于没有窗口打开或最小化,任务栏上没有任何可切换的窗口,时间线或任务切换器视图中也没有窗口可显示。

开发人员倾向于将他们的应用程序放在系统托盘中,因为他们觉得他们的应用程序非常重要。 作为用户,在 99% 的情况下,应用程序并不像开发人员想象的那么重要。

现在,我的系统托盘中运行着 Defender、蓝牙设备、Nvidia 设置、杜比音频、Ear Trumpet 和 OneDrive。 在所有这些中,可能只有 Ear Trumpet 需要在那里。 其余的没那么重要。 甚至 Defender 也可以告诉我我需要从行动中心知道什么。

现在,我的系统托盘中运行着 Defender、蓝牙设备、Nvidia 设置、杜比音频、Ear Trumpet 和 OneDrive。 在所有这些中,可能只有Ear Trumpet需要在那里

对您来说并不重要,但是,它们对我和许多 Windows 用户很重要。 没有系统托盘,它们会移动到更糟糕的任务栏。

系统托盘主要是服务和后台应用程序显示它们正在运行的地方,同时允许对其状态进行一些控制,而不会污染主任务栏。 它们旨在通过快速交互实现一目了然的状态。

任务栏中的应用程序旨在显示您将在前台长时间交互的应用程序。 这允许在多个前台应用程序之间进行任务切换。

消息应用程序位于中间。 很长一段时间,它们最小化到系统托盘,因为它们主要是后台并且在弹出消息或您打开它向某人发送消息之前不会与之交互。 如果它是用于工作的主要日常消息传递应用程序,我会将其固定到我的任务栏以进行主要工作。 但是,有些应用程序很少再使用而且很杂乱,因此我将它们最小化在系统托盘中,直到我需要它为止。

我不想要的是认为我的消息传递应用程序正在运行,然后发现它没有运行,而且我有 20 条错过的消息。

系统托盘有它的真正用途,但我明白了,这很有挑战性。 您安装的应用程序越多,某项功能的混乱和潜在滥用就越多。 例如,在启动或登录时启动的应用程序。 有用,但被严重滥用。 但是,仅仅因为它的混乱和滥用而将其删除是错误的方法。 用户控制和现在的 AI 用于管理显示的内容以及处理问题的最佳方法。

对于 Windows 8 和 10X,Microsoft 正在重新思考许多范例,以了解它们如何推进操作系统。 问题是,Windows 95、XP、7 获得了如此多的正确范例,以至于您无法在不破坏大量用户故事的情况下真正删除它们。 当您已经比其他方法更好地解决问题时,很难在 2D 空间上进行创新! 另一个挑战是小屏幕上的空间。

使用 Windows 10X,他们没有后台应用程序运行,因此没有构建系统托盘是有意义的。 我认为一旦他们带回后台应用程序和服务,他们会找到一种方法来带回托盘,但可能与我们习惯的形式不同,因此他们可以解决房地产问题。

@mdtauk

主要用于在没有任何 UI 或窗口的情况下运行的应用程序,然后在与之交互时打开一个窗口或显示 UI。

使用上述开始菜单可以很好地适用于这些类型的应用程序。 我自己有一个这样的应用程序,它可以完全最小化启动(没有任务栏应用程序图标,没有应用程序窗口)但我可以使用徽章 API 和通知来通知用户什么时候发生的事情,他们可以决定使用开始将它带到前台菜单(就像他们使用通知区域应用程序图标一样)。

一个潜在的 Shell 改进:在与其他人讨论后,有人建议,例如,可以改进“开始”菜单中显示的应用程序上下文菜单,以允许多级层次结构或 UI 元素,例如复选框和单选按钮,因为这些元素可以轻松实现今天添加到 Win32 通知区域上下文菜单中。

一般来说,获得当今使用的各种“系统托盘”应用上下文菜单会很有用,看看它们是如何设计的,以及目前 UWP Shell API 究竟在哪些方面有所欠缺。

PS:这是 Raymond Chen 的一篇博客文章,澄清“系统托盘”不是正确的术语,应使用“通知区域”代替: https :

使用上述开始菜单可以很好地适用于这些类型的应用程序。

我强烈反对。 我不了解你的应用程序,所以我不能谈论你的用户故事,但是一整类应用程序都不能很好地隐藏在隐藏的表面中,例如开始菜单或操作中心。 这些应用程序包括:信号强度指示器、电池电量、CPU/GPU 温度、同步状态、消息指示器等。

我们如何对所有这些应用程序进行分类以更好地理解它们? 我认为我们非常了解通知应用程序,Action Center 帮助改进了他们的用例。 但其他应用程序更适合作为“监控”。 监控与警报和通知不同,后者是一种常见的误解。

监控就是随时查看状态。 无需额外操作即可时不时地快速查看并继续前进的能力。 电池电量对此很好。 我可以看一眼电池指示器,看看我的电池是如何工作的。 我希望收到电池电量不足等关键事件的通知,但我不希望收到 70%、50% 或 30% 的通知。 我只是想看看并检查它。 你猜怎么着,时间是一样的! 我查看时间没有进一步操作,因此为什么它在任务栏通知区域中! 这些可能被视为系统操作系统,但有许多应用程序提供了操作系统所没有的类似功能。

现在,这是否意味着每个应用程序都应该像今天一样在通知区域中? 是否因为之前没有其他好地方而被滥用? 当然。 我认为这里可以并且正在进行很多改进。 在这方面,快速操作/控制中心有可能取代多种类型的应用程序。 但是,这也会很快变得臃肿,从而很难找到“快速操作”。

_“改变范式并不能解决问题,它只是将问题移到了不同​​的空间”_

将应用程序移动到固定任务栏只会使任务栏膨胀
将应用程序移至开始菜单意味着您必须先固定应用程序,然后主动单击开始进行检查
将应用程序移动到快速操作会失去区分所有其他快速操作的能力。

这就是为什么 Live Tiles 没有在 Windows Phone 之外获得关注的原因,它们被隐藏在一个隐藏的表面中,因此失去了它们的实用性和全部潜力。 在 Windows Phone 上,桌面和启动启动器合并到同一个东西中,使其在那里很有用。 在 Windows 8+ 上,桌面和任务栏是您的主要可见点。 因此,为什么桌面上的动态磁贴是一个受欢迎的请求,因为它可能几乎总是在大屏幕上可见。

让我们记住所有事情都有一个目的。 我们当然可以考虑移动东西,但我们需要了解应用程序的完整分类,以及它们是否真的会从移动中受益,或者它们是否会因此失去用途和目的。

Windows 10X 还远未完成,在我们了解更多之前,我们不应假设任何事情。 此提案是为了修复 UWP/WinUI 中需要解决的差距,以适应 Windows 的广泛使用方式。 这不会很快消失。

如果可能,我希望改进系统托盘体验。 类似于 macOS 的菜单栏应用程序。

消息应用程序位于中间。 很长一段时间,它们最小化到系统托盘,因为它们主要是后台并且在弹出消息或您打开它向某人发送消息之前不会与之交互。 如果它是用于工作的主要日常消息传递应用程序,我会将其固定到我的任务栏以进行主要工作。 但是,有些应用程序很少再使用而且很杂乱,因此我将它们最小化在系统托盘中,直到我需要它为止。

我不想要的是认为我的消息传递应用程序正在运行,然后发现它没有运行,而且我有 20 条错过的消息。

这将是通知系统的问题。 随着 Windows 的发展,人们不需要运行系统托盘图标来通知您潜在的消息。 人们可以在不弄乱系统托盘的情况下接收消息。

对我来说,托盘图标的用例很简单:我想看到在后台运行的应用程序,以及托盘中的图标指示连续状态(例如 CPU 负载/温度指示器)或离散状态指示发生了某些事情(比如消息应用程序图标说我收​​到了一条新消息)。 实际的消息通知转到操作中心。 如果应用程序未打开并最小化到任务栏或托盘,我根本不希望它运行。 我希望能够可靠地判断应用程序是在后台运行还是已关闭。 基本上,所有信使过去都以这种方式工作(通过成为 win32 应用程序或使用 win32 桥接应用程序)。

此页面是否有帮助?
0 / 5 - 0 等级