- 1. Introduction
- 2. Mac OS
- 3. Linux
- 4. Windows
- 5. Making the script cross-platform
- 6. Conclusion
Introduction
We often use print to monitor the state of a script, or when we're debugging. Instead of constantly looking at the terminal window and waiting for some kind of output, we can use toast notifications as a way to view the output while doing something else.
This is not at all difficult to do - we will use the built-in commands of our operating system to display notifications, simply by running them through Python. A few lines of code, and no third-party modules.
Mac OS
The following command runs AppleScript (Apple's built-in scripting language) for notifications.
osascript -e 'display notification "Your message goes here" with title "Title"'
If you run this command you will see the following output:
More about the script itself:
So, if you are using Mac OS, then you can run the following Python code:
import os title = "Готово" message = "Файл скачан" command = f''' osascript -e 'display notification "{message}" with title "{title}"' ''' os.system(command)
By running this script, you will see a similar result as above.
Linux
Linux offers an even simpler option:
notify-send "Your message" "Title"
Similar to how we displayed a notification on Mac OS via os.system, you can do the same on a Linux system.
Windows
On Windows there is no such command that would trigger notifications like on Linux and Mac OS, but it can still be done using the win10toast library, first you need to install it: pip install win10toast and now an example of its use:
import win10toast toaster = win10toast.ToastNotifier() toaster.show_toast("Заголовок", "Описание уведомления")
The show_toast method also accepts other arguments, but you can read more about them directly - just by calling help passing it the object of the function you want to know more about.
Making the script cross-platform
To find out what system is on your computer, use the system() command from the built-in platform library. For Mac OS, this command returns the string "Darwin", for Linux "Linux", for Windows - "Windows", now, knowing all this, we can put all the code in the push function. Here's what happens:
import platform, os def push(title, message): plt = platform.system() if plt == "Darwin": command = ''' osascript -e 'display notification "{message}" with title "{title}"' ''' elif plt == "Linux": command = f''' notify-send "{title}" "{message}" ''' elif plt == "Windows": win10toast.ToastNotifier().show_toast(title, message) return else: return os.system(command)
Conclusion
The article showed how to display toast notifications in Python, but it certainly wasn't the only way. There are a sufficient number of libraries that fulfill such goals.