Ubuntu'da bash betiğinden bildirim göstermenin bir yolu var mı?


103

Uygulamanın çoğu, ekranın sağ üst köşesinde görünen olaylarla ilgili güzel bir şekilde biçimlendirilmiş bildirim gösterebilir. Arka planda uzun ömürlü işlemler yapacak bir bash betiği yazmak üzereyim ve ne zaman biteceğini gerçekten bilmek istiyorum. Bir bash betiğinden bu güzel bildirimi nasıl gösterebilirim?


Yanıtlar:


124

Jaunty'deki yeni bildirim sistemini kullanıyorsanız, notify-send komutunu istiyorsunuz.

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
Teşekkürler, sadece kendim buldum :) apt-get install libnotify-bin onu almak için önce çalıştırılmalıdır.
vava

Kök kullanıcı, nasıl crons, init.d, vb. Bir mesaj gönderir?
Lance Caraccioli,

6
Örn: notify-send Test "Merhaba Dünya"
Thaha kp

3
--Expire-time parametresi bu "özellik" (hata) sayesinde Ubuntu'da çalışmıyor. bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

Bunun notify-sendvideo / ses oynatımı sırasında engellendiğini öğrendim . Bu geçerli bir kullanım şekli olsa da, yine de onları görmek istiyorsanız --urgency = kritik eklenmelidir.
ccpizza

29

Zenity aracılığıyla başka bir yol buldum

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

(Bu aynı zamanda Ubuntu’ya halihazırda kurulmuş olması avantajına da sahiptir.)


Zenity'yi diyaloglar için kullanıcı etkileşimlerini desteklediği için seviyorum (notify-send aksine)
Waffle's Crazy Peanut

12

Ayrıca bir pencere açacak olan bir xmessage vardır, bu nedenle herhangi bir X11 sisteminde çalışması gerekir.

Pro: Ayrıca, etkileşimli olarak düğmelerle kullanıcıyı yönlendirmeye izin verir.

Con: Herhangi bir pop-up uyarısı gibi, genellikle odağı alır, bu yüzden yazmanın ortasındaysanız, mesajı okumadan önce kaybolabilir.


4
Con: Cehennem gibi çirkin görünüyor ve aynı zamanda kullanıcı için her zaman açık olmayan süper küçük bir pencere. Neyse, yine de evrensel. :)
Nik Reiman

xmessage, Fedora'da çalışmıyor. Varsayılan olarak yüklenmez.
Abhay Mittal

Arch Linux'un varsayılan Xorg kurulumunda da mevcut değildir.
friederbluemle

Ayrıca aracılığıyla "İptal" "Tamam" ve düğme içeren bir açılır pencere alabilirsiniz notify-send --expire-time=0 "Hello World"ya notify-send -t 0 "Hello world". Aksi halde, -tbazı aptal "tasarım kararları" nedeniyle seçenek göz ardı edilir: askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples

Onu alamadım; Kendi cevabımı yazmak zorunda kaldım :) superuser.com/a/1310142/425838
Gabriel Staples

11

KDE kullanıcıları için:

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

Bildirim için bir simge ayarlamak mümkün mü?
Malabarba

5

10 saniye sonra otomatik olarak kapanan açılır pencere bildirimi:

notify-send "Hello world"

Kaynak: https://superuser.com/a/31919/425838

Tıklamak için düğmeli açılır pencere:

[pencere otomatik odaklanmıyor]

notify-send -t 0 "Hello world"

Kaynak: kendim; not: -t 0 - nasıl aptalca hariç tüm değerler için dikkate alınmaz . :(


VEYA
[pencere otomatik odaklanır]

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

Kaynak: https://askubuntu.com/a/804475/327339


VEYA

[MY FAVORITE, çünkü pencere belirtilen --timeoutsaniye sonra otomatik olarak kapanıyor ]

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

Kaynak: kendim man sayfalarını okudum: man zenity


VEYA
[süper çirkin görünümlü]

xmessage 'hello world'

Kaynak: http://www.linux-commands-examples.com/xmessage


3

Yfiton adında çapraz platform çözümü var :

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

2

Bir kabuk betiğinde, osd_cat yardımcı programını libxosd'dan çağırabilirsiniz.


1
Ubuntu masaüstü bildirimlerini kullanmadığından bu biraz farklıdır.
vava

Evet, bu herhangi bir Linux dağıtımı ve herhangi bir WM / DE ile kullanabileceğiniz bir alternatiftir.
geek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.