plyer · PyPI というライブラリを使ってみた。
通知が簡単に出せるらしい。Python でバルーン(通知)出したいとき Plyer 使うとメチャ楽 - Qiita
ハマりどころ
エラーメッセージの全文は覚えていないが、ディスプレイ環境がないWSL2の環境でインストールすると失敗する。
大体「Python dbus package」あたりでこける。そもそもディスプレイがないのでインストールされていなくても仕方がないのだが…。
原因は何か
フルパス貼るといろいろ微妙(ユーザ名とか)になるので、要約だけ貼るとまず上のほうにこれが出ている。
UserWarning: The Python dbus package is not installed. Try installing it with your distribution's package manager, it is usually called python-dbus or python3-dbus, but you might have to try dbus-python instead, e.g. when using pip.
python3-dbus なり dbus-python がないと警告が出ている。
最後に出ているのは implemention error なので、差し替えようとしているライブラリがなさそう。
NotImplementedError: No usable implementation found!
pip install dbus-python
なんか無限にエラーログが出る。
これと雰囲気似てそう。
https://stackoverflow.com/questions/61285415/no-package-dbus-1-found
glib あたりが足りないので、入れてみたら dbus-python
のインストールに成功した。
sudo apt install libdbus-glib-1-dev libgirepository1.0-dev
が。実際にスクリプトを実行すると、まあ動かない。下記のエラーが見える。
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
うーんわからん。
DISPlAY 設定周りを見てみると、Xサーバーアプリが必要なので、VcXsrv を入れてみる。設定はこの辺をパクる。
- https://astherier.com/blog/2020/08/run-gui-apps-on-wsl2/
- https://qiita.com/ryoi084/items/0dff11134592d0bb895c
後は notification 周りの設定をなんややかんやして、なんかする(正直このあたりから覚えてない)
- https://wiki.archlinux.jp/index.php/%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E9%80%9A%E7%9F%A5
- https://developer.gnome.org/notification-spec/
立ち上がる際の設定値に Exec=/usr/lib/notification-daemon/notification-daemon
とあるので、 notification-deamon 入れたり、notify-send
自体が動いているかどうか確認するためにこの周りのライブラリをいれたりした。
最終的に画面の左上に通知が出るようになった。が、なんかWSL側のウィンドウの認識が少し変で、3枚のディスプレイを1枚のディスプレイとみなして通知してくるっぽい。自分の配置では一番左上のディスプレイは少し小さいものにしているので、最初動いていることに気が付かなかった。
ディスプレイ設定は xrandr で見た。見方は下記のブログを参考にした。
https://kzmmtmt.pgw.jp/?p=1733
ほか
Windows 側で動かせばすぐ動くので、すぐ動かしたい場合は Windows 側で環境構築して書くほうが早いかも。てか、そのほうが手っ取り早い。わざわざいろいろ経由して表示するのは大変すぎる。
まとめ
最初できないと書くつもりでしたが、エラーを解決してるうちに動いていたので、困ったもんです。