notify-send
を使用してデスクトップに通知を表示し、それを再度使用して別の通知を表示すると、2番目の通知ではafterのみが表示されることに気付きました。
notify-send
を取得して、既存の通知をすぐに別の通知に置き換える方法はありますか?
notify-send
には、タイムアウトする(または消える)前に既存の通知を置き換える機能がありません。これは 既知のバグ です。ただし、バグレポートのコメンター パッチを投稿しました を修正します。
PPAでの置換を許可するlibnotify-binパッケージのパッチバージョンを作成しました。現在、Ubuntu 12.04専用ですが、現在サポートされている他のリリースで必要な場合は、コメントを投稿してください。利用できるように最善を尽くします。
インストールするには、ターミナルを開き、次の操作を行います。
sudo apt-add-repository ppa:izx/askubuntu Sudo apt-get update sudo apt-get install libnotify-bin
パッチを適用したnotify-send
には、-p
(または-print-id)と-r
の2つの新しいスイッチが含まれます。 (または-replace-id)。 --help
は、それらを次のように説明します。
-p、--print-id通知IDを出力します。 -r、--replace-id = REPLACE_ID置き換える通知のID。
-p
の場合、各notify-send
はIDN(数値/整数)を返します。notify-send
を-r N
で発行すると、以前の通知が即座に置き換えられます。たとえば、bashの場合、次のようにnotify-send -p ...
からIDを保存できます。
NID=$(notify-send -p "MESSAGE-1")
そしてそれを次のものに置き換えます:
notify-send -r $NID "MESSAGE-2"
スクリプトで-pと-rの両方を再帰的に使用できます。 -r変数が最初に0に初期化される限り。
以下は、0.5秒間隔で0から100までカウントする通知を表示する簡単なスクリプトです。
#!/ bin/bash
NID = 0
for i for {0..100..10} do NID = $(notify-send -p -r $ NID $ i) sleep 0.5 完了
「同期」ヒントを使用して、以前の確認通知を置き換える「確認」通知を作成できます。例えば:
notify-send "Message" -h string:x-canonical-private-synchronous:anything
「x-canonical-private-synchronous」ヒントは、 このドキュメント で指定されています。ヒントを指定するには、-h type:name:value
を使用します。ここでの型はstring
で、名前はx-canonical-private-synchronous
で、値はあなたが望むものなら何でもいいようです。
したがって、最初の通知がそのヒントandで作成された場合、2番目も同様に、2番目がすぐに1番目を置き換えます。 (「確認バブル」の列のドキュメントの Animations and Durations を参照してください。)
外部参照:
以前の通知が終了するのを待たずにnotify-osdの新しい通知を強制的に表示する方法
パッチなしで簡単にできます
#!/bin/bash
for i in {0..100..10}
do
killall notify-osd
notify-send "testing" $i
sleep 1
done
ブックマーク:
既存の通知をすぐに置き換えるために「notify-send」を使用するにはどうすればよいですか?
エラーnotify-osd(2592)を送信します:操作は許可されていません。どういう意味ですか?
特権が不十分なことを意味する場合があります:
Sudo killall notify-osd
Notify-sendとほぼ同じように動作するシンプルなpythonスクリプトを作成しましたが、--replaces-id
をサポートしています。
web:https://github.com/phuhl/notify-send.py
シェルからデスクトップ通知を送信するためのpythonスクリプト。
Libnotifyは、Linuxの世界の多くのスクリプトの一部です。 Desktop Notifications Specificationの指定された機能の多くを利用し、シェルスクリプトからアクセスできるようにします。 notは行いますが、既存の通知をreplaces-id
に置き換えることはできます。これは、2008年以降の既知の bug であり、2012年以降の patch です。ただし、パッチはまだアップストリームではありません(2018)。
このpythonスクリプトはnotify2パッケージを利用し、機能をシェルに公開します。
notify-send.py -h
は、ヒントのパラメーターではなくヘルプを表示します。ヒントについては、--hint
を使用してください。notify-send.py -r ID
およびnotify-send.py --replaces-id ID
に存在します。通知を置き換えるには、notify-send.py
を、置き換えられる通知によって返されたIDで呼び出します。notify-send.py
は、新しく作成された通知のIDを返します。notify-send.py --replaces-process NAME
が存在します。同じNAMEで作成されたすべての通知は、その前のすべての通知を同じNAMEで置き換えます。このパラメーターで呼び出された場合、notify-send.py
がブロックされる可能性があります。末尾の&
で呼び出すのが最適です。Python3が必要です。
git clone https://github.com/phuhl/notify-send.py
cd notify-send.py
Sudo pip install notify2
Sudo python setup.py install
$ notify-send.py -h
usage: notify-send.py [-h] [-u LEVEL] [-t TIME] [-a APP_NAME]
[-i ICON[,ICON...]] [-c TYPE[,TYPE...]]
[--hint TYPE:NAME:VALUE] [-r ID]
[--replaces-process NAME]
SUMMERY [BODY]
positional arguments:
SUMMERY
BODY
optional arguments:
-h, --help show this help message and exit
-u LEVEL, --urgency LEVEL
Specifies the urgency level (low, normal, critical).
-t TIME, --expire-time TIME
Specifies the timeout in milliseconds at which to
expire the notification.
-a APP_NAME, --app-name APP_NAME
Specifies the app name for the icon
-i ICON[,ICON...], --icon ICON[,ICON...]
Specifies an icon filename or stock icon to display.
-c TYPE[,TYPE...], --category TYPE[,TYPE...]
Specifies the notification category.
--hint TYPE:NAME:VALUE
Specifies basic extra data to pass. Valid typesare
int, double, string and byte.
-r ID, --replaces-id ID
Specifies the id of the notification that should be
replaced.
--replaces-process NAME
Specifies the name of a process that should take care
of replacing notifications for this process.
通知を表示するために、libnotifyまたは
notify-send.py
これらの2つのスクリプトは、rootユーザーから使用されます。
#!/bin/bash
username=<your username here>
if [ "$(id -u)" != "1000" ] ; then
Sudo -u $username DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send.sh "$@"
else
notify-send.sh "$@"
fi
notify-send.sh
の場合:
#!/bin/bash
notify-send.py "$@" &
また、 Dunst に触発された私の notification-daemon を見てください。ただし、透明な背景や通知を保存する通知センターの可能性など、いくつかの改善点があります。