มีวิธีแสดงการแจ้งเตือนจากสคริปต์ทุบตีใน Ubuntu หรือไม่


103

แอปพลิเคชั่นส่วนใหญ่สามารถแสดงการแจ้งเตือนที่มีการจัดรูปแบบไว้อย่างดีสำหรับเหตุการณ์ที่ปรากฏที่มุมขวาบนของหน้าจอ ฉันกำลังจะเขียนสคริปต์ทุบตีที่จะทำการประมวลผลที่ยาวนานของนางฟ้าในพื้นหลังและฉันต้องการที่จะรู้ว่าเมื่อมันเสร็จสิ้น ฉันจะแสดงการแจ้งเตือนที่ดีจากสคริปต์ทุบตีได้อย่างไร


คำตอบ:


124

หากคุณใช้ระบบการแจ้งเตือนใหม่ใน Jaunty คุณต้องการคำสั่งแจ้งเตือนการส่ง

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

ผู้ใช้รูทส่งข้อความจาก crons, init.d, etc อย่างไร
Lance Caraccioli

6
ตัวอย่าง: แจ้งเตือน - ส่งทดสอบ "Hello World"
Thaha kp

3
พารามิเตอร์ - อายุการใช้งานไม่ทำงานบน 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 แล้ว)


ฉันชอบ Zenity ที่ให้การโต้ตอบกับผู้ใช้สำหรับการโต้ตอบ (ต่างจากการแจ้งเตือนการส่ง)
Waffle's Crazy Peanut

12

นอกจากนี้ยังมีxmessageที่จะป็อปอัพหน้าต่างดังนั้นจึงควรทำงานกับระบบ X11 ใด ๆ

Pro:มันยังช่วยให้ผู้ใช้พร้อมปุ่มโต้ตอบ

คอนดิชั่น:เช่นเดียวกับการแจ้งเตือนแบบป๊อปอัพมันมักจะได้รับการโฟกัสดังนั้นหากคุณอยู่ในระหว่างการพิมพ์มันอาจหายไปก่อนที่คุณจะอ่านข้อความ


4
คอนดิชั่น: มันดูน่าเกลียดเหมือนนรก, และมันก็เป็นหน้าต่างเล็ก ๆ ที่ผู้ใช้ไม่ค่อยเห็นด้วย. อย่างไรก็ตามมันเป็นสากลแม้ว่า :)
Nik Reiman

xmessage ไม่สามารถใช้งานได้ใน Fedora มันไม่ได้ติดตั้งโดยค่าเริ่มต้น
Abhay Mittal

ไม่สามารถใช้ได้ในการติดตั้ง Xorg เริ่มต้นของ Arch Linux เช่นกัน
friederbluemle

นอกจากนี้คุณยังจะได้รับหน้าต่างป๊อปอัพที่มี "ตกลง" และ "ยกเลิก" ผ่านหรือnotify-send --expire-time=0 "Hello World" notify-send -t 0 "Hello world"มิฉะนั้น-tตัวเลือกจะถูกละเว้นเนื่องจากการตัดสินใจออกแบบ "โง่": askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples

ฉันไม่สามารถรับมันได้ ฉันต้องเขียนคำตอบของตัวเอง :) superuser.com/a/1310142/425838
Gabriel Staples

11

สำหรับผู้ใช้ KDE:

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

เป็นไปได้ไหมที่จะตั้งไอคอนสำหรับการแจ้งเตือน?
Malabarba

5

การแจ้งเตือนป๊อปอัพที่ปิดอัตโนมัติหลังจาก 10 วินาที:

notify-send "Hello world"

ที่มา: https://superuser.com/a/31919/425838

หน้าต่างป๊อปอัปพร้อมปุ่มให้คลิก:

[หน้าต่างไม่ได้รับการโฟกัสอัตโนมัติ]

notify-send -t 0 "Hello world"

ที่มา: ตัวฉันเอง; ทราบ: -t จะถูกละเว้นค่าทั้งหมดยกเว้น 0 - วิธีการโง่ :(


หรือ
[หน้าต่างได้รับโฟกัสอัตโนมัติ]

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

ที่มา: https://askubuntu.com/a/804475/327339


หรือ

[รายการโปรดของฉันเนื่องจากหน้าต่างจะปิดอัตโนมัติหลังจากที่ระบุ--timeoutในไม่กี่วินาที]

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

ที่มา: ตัวฉันเองอ่าน man man: man zenity


หรือ
[ดูน่าเกลียดสุด ๆ ]

xmessage 'hello world'

ที่มา: http://www.linux-commands-examples.com/xmessage



2

ในเชลล์สคริปต์คุณสามารถเรียกใช้ยูทิลิตี osd_cat จาก libxosd


1
สิ่งนี้แตกต่างกันเล็กน้อยเนื่องจากไม่ได้ใช้การแจ้งเตือนของ Ubuntu บนเดสก์ท็อป
vava

ใช่นี่เป็นทางเลือกที่คุณสามารถใช้กับการแจกจ่าย Linux และ WM / DE ใด ๆ
geek
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.