Skip to content

Support dark mode theme NotifyIcon in WPF / WinForms / Avalonia / WinUI / MAUI.

License

Notifications You must be signed in to change notification settings

lemutec/NotifyIconEx

Repository files navigation

NotifyIconEx NuGet Actions Platform

NotifyIconEx is an easy-to-use library for displaying NotifyIcon (notification icon) in WPF / WinForms / Avalonia / WinUI / MAUI / Wice applications, offering non-intrusive system notifications and quick access functionality in the taskbar.

Support dark mode / show icon / checkable / submenus.

You should enable the HiDPI in your Application for better rendering.

Usage

NotifyIconEx is available as NuGet package.

using NotifyIconEx;

var notifyIcon = new NotifyIcon()
{
    Text = "NotifyIcon",
    Icon = Icon.ExtractAssociatedIcon(Process.GetCurrentProcess().MainModule?.FileName!)!
};
notifyIcon.AddMenu("MenuItem1", new Bitmap(ResourceHelper.GetStream("pack://application:,,,/Assets/Images/Lock.png")));
var toDisableItem = notifyIcon.AddMenu("MenuItem2", new Bitmap(ResourceHelper.GetStream("pack://application:,,,/Assets/Images/Lock.png")));
notifyIcon.AddMenu("-");
notifyIcon.AddMenu("MenuItem3");
notifyIcon.AddMenu("MenuItem4", true);
notifyIcon.AddMenu("MenuItem5", OnClick);
notifyIcon.AddMenu("-");
notifyIcon.AddMenu("SubMenu", null!,
[
    new ToolStripMenuItem("SubMenuItem1"),
    new ToolStripMenuItem("SubMenuItem2"),
    new ToolStripMenuItem("SubMenuItem3"),
    new ToolStripMenuItem("SubSubMenu", null!,
    [
        new ToolStripMenuItem("SubSubMenuItem1"),
        new ToolStripMenuItem("SubSubMenuItem2"),
        new ToolStripMenuItem("SubSubMenuItem3")
    ])
]);
notifyIcon.AddMenu("-");
notifyIcon.AddMenu("Exit", (_, _) => Current.Shutdown());
notifyIcon.BalloonTipShown += OnBalloonTipShown;

toDisableItem.Enabled = false;

void OnBalloonTipShown(object? sender, EventArgs e)
{
    Debug.WriteLine("OnBalloonTipShown");
}

void OnClick(object? sender, EventArgs e)
{
    notifyIcon.BalloonTipTitle = "Title";
    notifyIcon.BalloonTipText = "This Balloon Tips";
    notifyIcon.ShowBalloonTip(5);
}

You can set the context menu theme like following:

// NotifyIcon default theme follows the system theme.
// Change it to Dark theme.
NotifyIcon.Theme = NotifyIconTheme.Dark;

Demo

  1. NotifyIcon.Demo.Avalonia for Avalonia Application.

  2. NotifyIcon.Demo.Maui for MAUI Application.

  3. NotifyIcon.Demo.WPF for WPF Application.

  4. NotifyIcon.Demo.Wice for Wice Application.

  5. NotifyIcon.Demo.WinForm for WinForms Application.

  6. NotifyIcon.Demo.WinUI for WinUI Application.

Repository

The source code for NotifyIcon is hosted on GitHub. You can find it at the following URL: https://github.com/lemutec/NotifyIconEx

License

NotifyIconEx is released under the MIT license. This means you are free to use and modify it, as long as you comply with the terms of the license.