Skip to content

A Windows taskbar application that notifies you of unread emails in an Outlook folder.

License

Notifications You must be signed in to change notification settings

mdgrs-mei/outlook-taskbar-notifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Outlook Taskbar Notifier

GitHub license GitHub release (latest by date) GitHub all releases

Hashnode

Outlook Taskbar Notifier is a Windows taskbar application that notifies you of unread emails in an Outlook folder by showing an overlay badge.

capture

Compared to Outlook's default desktop notifications you are less likely to miss unread emails even after leaving your seat. If you use folders to receive notifications from some web services (Jira, GitHub, GitLab etc.) you can make a dedicated notifier for each, assign the icons you like and add thumb buttons to quickly access the sites. They will work like small desktop apps for the services.

Features

  • Notifies unread email count for an Outlook folder
  • Customizable icons and badge colors
  • Customizable actions performed when the notifier is clicked
  • Thumb buttons with customizable actions

Requirements

  • Tested on Windows 10/11 and Powershell 5.1
  • Outlook desktop app needs to be installed

Installation

  1. Download and extract the zip or clone this repository anywhere you like
  2. Copy and edit sample/settings.ps1 (You have to edit folderPath at least. See Settings.)
  3. Run tools/create_shortcut.bat, select your settings file and save the shortcut
  4. Run the shortcut

Settings

You can customize the behavior by a settings file. A sample settings file is placed at sample/settings.ps1.

Outlook settings

outlook = @{
    folderPath = "\\[email protected]\folder-name"
}

folderPath is a path of the outlook folder that the notifier monitors. You can list all your folder paths by running tools/list_outlook_folders.bat.

Icon image

iconPath = ".\icon.png"

An icon file used for the title bar. The image is converted to .ico file during the shortcut creation and also used as a shortcut icon. .bmp, .png, .tif, .gif and .jpg with single resolution are supported.

Overlay icon

overlay_icon

overlayIcon = @{
    size = 20.0
    lineWidth = 1.0
    backgroundColor = "DeepPink"
    textColor = "White"
}

You can change the unread badge size and color. Available WPF color names are listed here: https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.colors?view=net-5.0

If you want to hide the unread number, set textColor to "Transparent".

Taskbar icon flashing

taskbar

flashTaskbar = @{
    enable = $true
    rateInMillisecond = 300
    count = 2
}

You can change the flash rate and count or you can completely disable this feature.

Do Not Disturb

do_not_disturb

doNotDisturb = @{
    globalMode = $true
}

Do Not Disturb mode can be turned on by ToggleDoNotDisturb click action. In Do Not Disturb mode, unread count update and icon flashing are paused and it's indicated by "D" badge. If globalMode is $true, Do Not Disturb status is shared between all the notifier instances. If globalMode is $false, the notifier ignores the global Do Not Disturb status and you can control it independently.

Click actions

clickActions = @(
    ,@("FocusOnFolder")
)

When the notifier is clicked, actions you specify here are executed sequentially. If an action fails, the subsequent actions will not be executed.

Actions

Action Name Description When does it succeed?
FocusOnFolder Opens the Outlook folder that the notifier is monitoring. Always.
OpenNewestUnread Opens the newest unread email. When the mail is opened.
OpenOldestUnread Opens the oldest unread email. When the mail is opened.
OpenUnreadIfOnlyOne Opens an unread email if there is only one. When the unread count is 1 and the mail is opened.
MarkAllAsRead Marks all emails in the folder as read. Always.
ToggleDoNotDisturb Toggles Do Not Disturb mode. Always.
FocusOnApp Focuses on the specified app window. An app name is specified by an argument which is a process name that Get-Process PowerShell command returns. Normally it's an executable file name without ".exe" (e.g. "outlook", "chrome", "firefox"). When the app exists.
SendKeysToAppInFocus Sends keyboard inputs to the app in focus. The key string format follows Windows.Forms.SendKeys format: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.sendkeys?view=net-5.0 Always.
SleepMilliseconds Waits for specified milliseconds to tweak the timing for SendKeys. Always.
RunCommand Runs any executable with arguments. Always.
RunCommandAndWait Runs any executable with arguments and waits until the process finishes. Always.
RunCommandWithNewWindow Runs any executable in a new window with arguments. Always.
RunCommandAndWaitWithNewWindow Runs any executable in a new window with arguments and waits until the process finishes. Always.
Or Executes actions specified as arguments sequentially and returns when an action succeeds. When one of the actions succeeds.

More complex examples

  1. Marks all as read and opens a web page. Recommended for web services that have notifications pages but don't support desktop notifications.

    # Opens GitHub notifications page.
    clickActions = @(
        ,@("MarkAllAsRead")
        ,@("RunCommand", '"C:\Program Files\Mozilla Firefox\firefox.exe"', "-url", "https://github.com/notifications")
    )
  2. Marks all as read and sends keys to an app. Recommended for services that have shortcut commands to their notifications page.

    # Opens GitHub notifications page by sending shortcut keys to a pinned tab in Chrome.
    clickActions = @(
        ,@("MarkAllAsRead")
        ,@("FocusOnApp", "chrome")
        ,@("SendKeysToAppInFocus", "^1")
        ,@("SleepMilliseconds", 100)
        ,@("SendKeysToAppInFocus", "gn")
    )
  3. Opens an unread mail if there is only one. Otherwise opens the folder.

    clickActions = @(
        ,@("Or", @("OpenUnreadIfOnlyOne"), @("FocusOnFolder"))
    )

Thumb buttons

thumbButtons = @(
    ,@{
        description = "Mark all as read"
        iconPath = ".\mark_read.png"
        clickActions = @(
            ,@("MarkAllAsRead")
        )
    }
)

You can add maximum 7 thumb buttons and define actions performed when they are clicked. The formats of iconPath and clickActions are the same as before.

Unread items summary

unreadItemsSummary = @{
    enable = $true
    maxItemCount = 10
    maxItemCharacterCount = 32
}

Titles of unread emails are displayed on top of the thumbnail window.

Treat all as unread

treatAllAsUnread = $false

If this is set to $true, all of the emails in the folder are treated as unread. The badge count indicates the number of emails, not the actual unread count. This is useful for Follow up Search Folders.

Tools

Lists all the Outlook folder paths that the notifier can monitor. Copy one of the folder paths and paste it in your settings file.

This tool takes a settings file and creates a shortcut to run the notifier. If you want to create another notifier that monitors another Outlook folder, you just need to create a settings file and run this tool again.

Converts an image to .ico file. When you want to update the icon of the shortcut, run this tool.

Reporting Issues

If the notifier cannot connect to Outlook, "E" badge is shown to indicate the erorr. When this or any other issues happen, right click the notifier icon and press Run with debug console. The messages on the console might help you find the cause of the issue. If it doesn't help, please create an issue on GitHub.

Sample Icons

The sample icons except icon.png were downloaded from Google Material Icons which are distributed under Apache License, Version 2.0.