diff --git a/pelican/__init__.py b/pelican/__init__.py index 8d916fc7..1af02ed8 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -9,6 +9,10 @@ import sys import time import traceback from collections.abc import Iterable +import asyncio +from desktop_notifier import DesktopNotifier + +NOTIFIER = DesktopNotifier() # Combines all paths to `pelican` package accessible from `sys.path` # Makes it possible to install `pelican` and namespace plugins into different @@ -193,9 +197,9 @@ class Pelican: "draft pages", ) - console.print( - f"Done: Processed {pluralized_articles}, {pluralized_drafts}, {pluralized_hidden_articles}, {pluralized_pages}, {pluralized_hidden_pages} and {pluralized_draft_pages} in {time.time() - start_time:.2f} seconds." - ) + message = f"Done: Processed {pluralized_articles}, {pluralized_drafts}, {pluralized_hidden_articles}, {pluralized_pages}, {pluralized_hidden_pages} and {pluralized_draft_pages} in {time.time() - start_time:.2f} seconds." + console.print(message) + asyncio.run(NOTIFIER.send(title="Pelican", message=message)) def _get_generator_classes(self): discovered_generators = [ diff --git a/pyproject.toml b/pyproject.toml index 8d0fd9b9..617fabd2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,6 +40,7 @@ dependencies = [ "unidecode>=1.3.7", "watchfiles>=0.21.0", "tzdata; sys_platform == 'win32'", + "desktop-notifier>=6.2.0", ] [project.optional-dependencies]