娘が Raspberry Pi で Minecraft を 1 週間に 60 分以上プレイしないようにするためのシェル スクリプトを作成しました :)。スクリプトの一部では、notify-send
残り時間を警告する通知をポップアップ表示するために を使用しています。しかし、notify-send
とnotify-send --urgency=critical
通知の両方が Minecraft ウィンドウの下に表示されるため、ウィンドウのタイトル バーの上にはわずかな灰色の部分しか見えません。なぜこのようなことが起こるのでしょうか。また、警告を表示するために他に何かできることはありますか ( の代替手段がある場合notify-send
)。
答え1
「notify-send」を使用する場合、通知の表示は2つの要素によって決まります。他のコンポーネント:
- の通知サーバー特定の外観を持つポップアップ ウィンドウを作成します (例: notification-daemon、notify-osd、xfce4-notifyd、dunst、dzenify、lxqt-notificationd)。
- デスクトップ上の各ウィンドウの位置と Z オーダーを最終的に決定するウィンドウ マネージャー。
- (「notify-send」自体は何も表示せず、「通知の表示」要求を送信するだけです。)
つまり、現在の通知サーバーがポップアップを常に最前面に表示するように十分に努力していないか、ウィンドウ マネージャーがフルスクリーン ウィンドウを優先すると決定しているか、ウィンドウ マネージャー (または Xorg 自体) に多少のバグがあるかのいずれかです。
通知サーバーを変更して実験することができます。まず、現在のプロセスを強制終了し (デスクトップ環境の「自動起動」から削除します)、次に新しいサーバーをインストールして起動します (たとえば、 を実行します/usr/lib/notify-osd/notify-osd &
)。
現在通知サーバーとして機能しているプロセス ID を確認するには、次のコマンドを使用します。
gdbus call -e -d org.freedesktop.DBus \
-o /org/freedesktop/DBus \
-m org.freedesktop.DBus.GetConnectionUnixProcessID \
"'org.freedesktop.Notifications'"
一般的に、notify-send の代わりに、xmessage、gxmessage、zenity などのテキストを含む通常のウィンドウを作成するプログラムを使用することもできます。これらのプログラムの方が、正しく動作する可能性が高いでしょう。