通知送信はタイムアウトを無視しますか?


47

私は何か間違ったことをしているかもしれませんが、コマンドを実行すべきではありません(別々に実行します)

notify-send -t 1 "test"
notify-send -t 1000 "test"
notify-send -t 10000 "test"

異なるタイムアウトがありますか?1つ目はほぼ瞬時で、2つ目は1秒かかり、3つ目は100秒かかります。いずれの場合も、約6秒かかります。

行動を回避する方法はありますか?開発者はこれをバグではなく「機能」とラベル付けするので、いくつかの代替案が欲しい...


1
はい、彼らは私が確認しない
Ringtail

私にとっては、XFCE4を使用して期待どおりに動作します。
グリュンベル

@BlueXriderあなたは私と同じ問題を見る?その場合、どのバージョンを使用していますか?
フック

テストコードが正しく機能していることを確認しました。指示どおりにタイムアウトになります。
リング

6
別の方法としては、使用することができますnotify-send "Text Here" ; sleep 3 ; killall notify-osd(ここで、sleep 3有効期限の一例である(実際には3秒後に)殺します)!
パンディア

回答:


44

これは既知のバグです:https : //bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(メンテナは「設計決定」と見なします。)


3
これは実際にはバグではありません。それは設計上の決定です。
エレンタンテキン

68
誤った設計決定はバグになる可能性があります。
ボリスBukh

24
ソフトウェアが別のことをしている間に、あることをすると主張する場合、それはバグです。開発者がそれをバグと見なしたくない場合は、そうではないように振る舞うと主張しないでください。
-hytromo

10
それは機能ではありません。それはバグです!フロントガラスのワイパーをオンにするためにaaレバーを提供しても機能しない場合、壊れています。
マットH

3
@ChristopherDone敬意を表して、それはバグです。notify-send(notify-osdの一部)のヘルプには次のように記載されています。notify-send --help | grep timeout -t、--expire-time = TIME通知を期限切れにするタイムアウトをミリ秒で指定します。これは、ツールのユーザーに対する主要なインターフェイスです。その主なインターフェースはユーザーにあるため、これはバグです。それはあなたの視点に応じて、ヘルプテキストまたは実装のバグですが、間違いなくバグです。
マイケルスパークス

21

上記の投稿のいずれかで述べたように、この機能を禁止する設計上の決定があります。あなたにとって幸いなことに、他の人たちも同様に同意せず、PPAを設定しました。あなたのシステムでもこの決定を取り消すことができます。

問題を解決するには:

sudo add-apt-repository ppa:leolik/leolik 
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install libnotify-bin
pkill notify-osd

オプショナル

現在持っているよりも多くの機能をsend-notifyに追加するには:

Ubuntu 16.04以降:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install notifyosdconfig

バージョン9.10-14.10の場合:

sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig
sudo apt-get update
sudo apt-get install notifyosdconfig

上記のソリューションの詳細については、この記事をお読みください。

Ubuntuの構成可能な通知バブル


残念ながら、リポジトリdoesntのは言って、もうパッケージを提供E: Failed to fetch http://ppa.launchpad.net/amandeepgrewal/notifyosdconfig/ubun‌​tu/dists/xenial/main‌​/binary-amd64/Packag‌​es 404 Not Found(関連:askubuntu.com/questions/50/...
phil294

@Blauhirn:私はこのパッケージの開発者ではありません。開発者に連絡してください
Fabby

@Blauhirn:16.04以降の回答を更新
-Fabby

これはうまくいきました!ただし、他の人の説明として、notify-osdの更新バージョンもインストールする必要があります。すなわち: sudo add-apt-repository ppa:leolik/leolik; sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig; sudo apt-get update; sudo apt install notify-osd # Updates to actually useful version; sudo apt install notifyosdconfig どうもありがとう!
マイケルスパークス

1
@MichaelSparksはに変更されupgradeましたdist-upgrade。notify-osdはすでにインストールされており、確実にアップグレードする必要があるため、これで問題が解決します。
ファビー

4

これは、ホスト端末環境での失格なしに、確立された規則の意図的に実装された違反でした。すなわち。notify-send確立された予想および文書化された機能を損なうため、もはや存在しないはずです。その代わりに、新しいコマンドnotify-graffitiが存在するはずです-何???? ちょっと待ってください...「従来の」コマンド名のスペルを使用するスクリプトはすべて危険にさらされます!?!コマンド名のスペルの規則を変更しますか?!?!-うーん、この哲学は、Unityデスクトップターミナルインターフェースで支持されているように、例外的に逆説的に偽善的です。

両方の方法で実行することはできません-いくつかの規則を保持します。他のコマンドではなくコマンドの名前、文書化されているコマンドの機能。ユーザーの「経験」の整合性、従来性、一貫性などを維持するために、またはユーザーの「欲求不満」、「迷惑」、「刺激」などのように、機能が損なわれる場合、コマンド名もそうでなければなりません。 ..

ref:

ブックマーク:
通知送信はタイムアウトを無視しますか?


「Non-expiring_notifications」および「Notification | Ubuntu App Developer」リンクが壊れています(または、それらが参照するWebページが壊れています)。
キーストンプソン

2

notify-sendのドロップイン代替として小さな便利なスクリプトnotify-send.shがあります。これにより以前に送信された通知を閉じたり置換したりできます。

編集:@Glutanimateが指摘したように、このスクリプトはデフォルトで有効期限をサポートしています。

最終的に有効期限を得ることができなかったので、次のように2秒のタイムアウトで通知を送信するというかなりハックな方法を使用しました。

notify-send.sh --print-id test | xargs -I {} bash -c "sleep 2 && notify-send.sh --close={}" &


このスクリプトは素晴らしいです!ここで共有してくれてありがとう。現在、notify-sendの元のCLI引数と完全に互換性があるようです。つまり、を介して2秒のタイムアウトで通知を送信できますnotify-send.sh -t 2 "Hello World!"。スクリプトをローカルの$ PATHディレクトリにシンボリックリンクし、名前をnotify-sendに変更しました。そのsubpar notify-osd実装を扱う必要はもうありません!
グルタニメート

@Glutanimateかっこいい!お知らせいただきありがとうございます。
ニマのThr

0

Cinnamonデスクトップ環境を使用している場合、有効にできる設定があります。

通知>タイムアウトに達した後に通知を削除する


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.