5
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Macのデスクトップ通知をPythonから表示する

Last updated at Posted at 2020-09-04

Macの通知をPythonスクリプトから出したい局面があったので、

  • AppleScriptをコマンドで実行する
  • 上記のコマンドをPythonから実行する

という流れで作成しました。

AppleScriptでデスクトップ通知を表示する

AppleScriptでは、

notification.scpt
display notification "こんにちは世界"

でデスクトップ通知を表示できます。下図では、ScriptEditor.appから実行しています。

notification_applescript.png

コマンドからAppleScriptを実行する

osascriptコマンドを使用します。

terminal.appにて、

$ osascript -e 'display notification "こんにちは世界"'

で、先程と同じ結果が得られます。

Pythonスクリプト内でコマンドを呼び出す

osモジュールのsystemメソッドの引数に、前述のコマンドを文字列として渡すことで実行できます。

notification.py
import os

os.system("osascript -e 'display notification \"こんにちは世界\"'")

実行環境がMacのときだけ上記の処理を実行したい

PythonスクリプトがMac以外の環境でも実行される可能性がある場合、デスクトップ通知の表示は環境によっては行わないようにする必要が出てきます。

Pythonの標準ライブラリにplatformというモジュールがあるので、こちらを利用しました。

platform.system()を実行すると、システムの名前が'Linux', 'Darwin', 'Java', 'Windows'のような文字列で返ってきます。不明な場合は空文字が返ってきます。

まとめ

以上をまとめると次のようになりました。

notification_matome.py
import os
from platform import system

pf = system()
if pf == "Darwin":
    os.system("osascript -e 'display notification \"こんにちは世界\"'")

今後の展望

通知が「スクリプトエディタ」発になっているので、できれば変更したい。

環境

  • macOS 10.15.6
  • zsh 5.7.1 (x86_64-apple-darwin19.0)
  • Python 3.8.0

Reference

pythonからmacOSの通知センターを操る方法 - アウトプットして苦悩する

platform --- 実行中プラットフォームの固有情報を参照する — Python 3.8.5 ドキュメント

5
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?