Ubuntuにbashスクリプトからの通知を表示する方法はありますか?


103

ほとんどのアプリケーションでは、画面の右上隅に表示されるイベントについて、適切にフォーマットされた通知を表示できます。バックグラウンドで妖精の長い処理を行うbashスクリプトを作成しようとしていますが、いつ終了するかを知りたいです。bashスクリプトからの素敵な通知を表示するにはどうすればよいですか?


回答:


124

Jauntyで新しい通知システムを使用している場合は、notify-sendコマンドが必要です。

notify-send - a program to send desktop notifications

SYNOPSIS

With notify-send you can sends desktop notifications to the user via
a notification daemon from the command line.  These notifications can be
used to inform the user about an event or display some form of information
without getting in the user's way.

OPTIONS

-u, --urgency=LEVEL
Specifies the urgency level (low, normal, critical).

-t, --expire-time=TIME
    Specifies the timeout in milliseconds at which to expire the notification.
-i, --icon=ICON[,ICON...]
    Specifies an icon filename or stock icon to display.
-c, --category=TYPE[,TYPE...]
    Specifies the notification category.

4
おかげで、自分で見つけただけです:) apt-get install libnotify-binを取得する前に実行する必要があります。
vava 09

rootユーザーはどのようにcrons、init.dなどからメッセージを送信しますか?
ランスカラチョリ

6
例:通知送信テスト "Hello World"
Thaha kp 14年

3
--expire-timeパラメーターは、この「機能」のおかげでUbuntuでは機能しません(バグ)。 bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

notify-sendビデオ/オーディオの再生中に禁止されていることがわかりました。これは有効なユースケースですが、まだ表示したい場合は --urgency = criticalを追加する必要があります。
ccpizza

29

Zenityを通じて別の方法を見つけた

echo 'message:hi' | zenity --notification --listen

(これにはすでにUbuntuにインストールされているという利点もあります。)


Zenifyは、ダイアログのユーザーインタラクションをサポートするという点で(notify-sendとは異なります)
ワッフルのクレイジーピーナッツ

12

ウィンドウをポップアップするxmessageもあるので、どのX11システムでも動作するはずです。

長所:また、ボタンを使用してユーザーに対話形式でプロンプトを表示することもできます。

欠点:他のポップアップアラートと同様に、通常はフォーカスを受け取るため、入力中の場合はメッセージを読む前に消えることがあります。


4
短所:それは地獄のようにく、また、ユーザーにとって常に明白ではない、非常に小さなウィンドウです。とにかく、それは普遍的です。:)
ニックレイマン

ただし、xmessageはFedoraでは機能しません。デフォルトではインストールされません。
Abhay Mittal 14年

Arch LinuxのデフォルトのXorgインストールでも利用できません。
friederbluemle

notify-send --expire-time=0 "Hello World"またはを使用して、[OK]ボタンと[キャンセル]ボタンが付いたポップアップウィンドウを表示することもできますnotify-send -t 0 "Hello world"。そうでない場合は、しかし、-tオプションは何らかの愚かな「設計上の決定」に無視されます。askubuntu.com/questions/110969/notify-send-ignores-timeout
ガブリエルステープルズ

私はそれを取ることができませんでした。私は自分の答えを書かなければなりませんでした:) superuser.com/a/1310142/425838
ガブリエルステープルズ

11

KDEユーザーの場合:

$ kdialog --title "Long process completed!" --passivepopup "This popup will disappear in 5 seconds" 5 &

通知のアイコンを設定することはできますか?
マラバルバ

5

10秒後に自動的に閉じるポップアップ通知:

notify-send "Hello world"

ソース:https : //superuser.com/a/31919/425838

クリックするボタンのあるポップアップウィンドウ:

[ウィンドウはオートフォーカスを取得しません]

notify-send -t 0 "Hello world"

出典:自分; 注:-t 0--how stupidを除くすべての値では無視されます。:(


または
[ウィンドウがオートフォーカスを取得]

zenity --info --title "Hello" --text "World"

ソース:https : //askubuntu.com/a/804475/327339


または

[私のお気に入り、指定さ--timeoutれた秒後にウィンドウが自動的に閉じるため]

zenity --info --title "Hello" --text "World" --timeout=2

ソース:マニュアルページを読んでいる自分: man zenity


または
[非常に見苦しい]

xmessage 'hello world'

ソース:http : //www.linux-commands-examples.com/xmessage


3

Yfitonと呼ばれるクロスプラットフォームソリューションが存在します。

$ yfiton -n desktop -Pmessage="Lunch time!" -Pposition=TOP_RIGHT

2

シェルスクリプトで、libxosdからosd_catユーティリティを呼び出すこともできます。


1
これは、ubuntuデスクトップ通知を使用しないため、少し異なります。
vava 09

はい、これはLinuxディストリビューションおよびWM / DEで使用できる代替手段です。
オタク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.