web-dev-qa-db-ja.com

以前の通知が終了するのを待たずに、notify-osdの新しい通知を強制的に表示するにはどうすればよいですか?

Xamppを起動および停止するためのスクリプト(およびこのスクリプトにつながる.desktopショートカット)を作成しました...

Xamppのステータスをチェックし、それに応じてxamppを開始または停止します。

これで、スクリプトが開始されて「Starting xampp ...」または「Stopping xampp ...」が表示されるとすぐに通知が割り当てられ、xamppが開始または停止されると「Xampp started ...」または「 Xamppは停止しました...」

notify-sendを使用して、以下のスクリプトに示すように通知を表示しました

さて、ここで、2番目の通知は1番目の通知が消えるのを待ってから、xamppが開始/停止してもポップアップします。

ライフサイクルが完了する前に以前の通知を強制的に終了することにより、新しい通知をすぐに表示する必要があります。

ワイヤレス/ネットワークをすぐに有効化/無効化すると、これがうまくいくことがわかります...

たとえば、「ワイヤレスを有効にする」を選択すると「ワイヤレスを有効にする」が表示され、すぐに「ワイヤレスを無効にする」を選択すると、「ワイヤレスが有効」という通知がライフサイクルを完了するのを待たずに「ワイヤレスが無効」という通知が表示されます。

どうすればこれを達成できますか?

#!/bin/sh

SERVICE='proftpd'

if ps ax | grep -v grep | grep $SERVICE > /dev/null

then

notify-send -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Stopping XAMPP..." && 
gksudo /opt/lampp/lampp stop && notify-send -i /opt/lampp/htdocs/xampp/img/logo-
small.gif "XAMPP Stoped."

else

notify-send -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Starting XAMPP..." && gksudo /opt/lampp/lampp start && notify-send -i /opt/lampp/htdocs/xampp/img/logo-small.gif "XAMPP Started."

fi

notify-sendmanページで、-urgency = LEVELまたは-uレベルが低い、通常、クリティカル。

これは何の役にも立ちますか?それを重要にしている?

また、コマンド-notify-send -u=critical"Testing"で試してみましたが、そのdintは動作します...エラーが発生しました-不明な緊急度criticalTestingが指定されました。既知の緊急度レベル:低、通常、重大

または、コマンドnotify-send -u=LOW"Testing"を指定すると、エラーに引数がありません-u

どんな関係??

コメントからの情報、

何らかの理由でこれは奇妙な方法で動作しています! 「Starting xampp ..」および「Stopping xampp ..」の部分の通知の代わりにダイアログボックスが表示され、次に「xampp started」または「xampp stopped」の通知が表示されます...:/ダイアログボックスが対処します[OK]ボタンと[キャンセル]ボタンで!

enter image description here

4
Nirmik

このバグのパッチは- https://bugs.launchpad.net/ubuntu/+source/libnotify/+bug/257135?comments=all にあります。

@izxはパッチのppaバージョンを作成したため、インストールが簡単になりました(izxに感謝します!)- 「notify-send」を使用して既存の通知をすぐに置き換えるにはどうすればよいですか?

インストールするには、ターミナルを開き、次の操作を行います。

 sudo apt-add-repository ppa:izx/askubuntu 
 sudo apt-get update 
 sudo apt-get install libnotify-bin

これで、ID番号を置き換えて印刷できるnotify-sendのパッチバージョンがインストールされているはずです。シェルスクリプトに1つの通知ボックスのみを使用できます。このプログラムには、-pおよび-rオプション、または--print-idおよび--replace-idという長い構文があります。


これを使用するオリジナルに基づいてスクリプトを作成しました。これは、停止および開始画面が表示されるまで開始および停止通知を表示し、同じ通知ボックスを再利用します。パッチを当てたバージョンをインストールした場合、config.txtを入力し、その中に数字の0を入れてから、そのファイルをlampp.shファイルと同じフォルダーに入れます。

#!/bin/sh

SERVICE='proftpd'

if ps ax | grep -v grep | grep $SERVICE > /dev/null

then
notify-send -t 0 -p -r `cat config.txt` -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Stopping XAMPP ..." >config.txt && gksudo /opt/lampp/lampp stop && notify-send -r `cat config.txt` -t 5000 -i /opt/lampp/htdocs/xampp/img/logo-small.gif "XAMPP Stoped."  
else
notify-send -t 0 -p -r `cat config.txt` -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Starting XAMPP ..." >config.txt && gksudo /opt/lampp/lampp start && notify-send -r `cat config.txt` -t 5000 -i /opt/lampp/htdocs/xampp/img/logo-small.gif "XAMPP Started."

fi

Editこれは私の上での表示です... enter image description here

4
Mateo

Notify_notification_updateに続いてnotify_notification_showを使用して、既存の通知を更新できます。

PythonとPyGObjectを使用した例を次に示します。

from time import sleep
from gi.repository import Notify

Notify.init(app_name = 'notification-update-example')
notification = Notify.Notification.new("Notification", "Original message", None)
notification.show()
sleep(3)
notification.update("More notification", "Updated message", None)
notification.show()
2
Dylan McCall
0
george rowell