แจ้งเตือน - ส่งละเว้นการหมดเวลาหรือไม่


47

บางทีฉันอาจทำสิ่งผิดปกติ แต่ไม่ควรใช้คำสั่ง (ทำงานแยกกัน)

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

มีช่วงเวลาที่แตกต่างกันอย่างไร คนแรกเกือบจะทันทีทันใดคนที่สองใช้เวลา 1 วินาทีและ 100 วินาทีที่สาม ในทุกกรณีดูเหมือนว่าจะใช้เวลาประมาณหกวินาที

มีวิธีแก้ไขพฤติกรรมไหม? ในฐานะนักพัฒนาระบุว่าสิ่งนี้เป็น "คุณสมบัติ" แทนที่จะเป็นข้อบกพร่องฉันต้องการทางเลือกบางอย่าง ...


1
ใช่ฉันยืนยันแล้ว
Ringtail

สำหรับฉันมันใช้งานได้ตามที่คาดไว้โดยใช้ XFCE4
Grumbel

@BlueXrider คุณเห็นปัญหาเช่นเดียวกับที่ฉันทำอย่างไร ถ้าเป็นเช่นนั้นคุณใช้เวอร์ชั่นอะไร?
ติดยา

ฉันยืนยันว่ารหัสทดสอบทำงานได้อย่างถูกต้อง ฉันได้เวลาตามที่กำหนด
Ringtail

6
หรือคุณสามารถใช้notify-send "Text Here" ; sleep 3 ; killall notify-osd(ซึ่งsleep 3เป็นตัวอย่างของการหมดอายุ (ฆ่าจริง) หลังจาก 3 วินาที)!
Pandya

คำตอบ:


44

นี่เป็นข้อผิดพลาดที่รู้จัก: https://bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508

(ถือเป็นการตัดสินใจการออกแบบโดยผู้ดูแล)


3
นี่ไม่ใช่ข้อผิดพลาดจริงๆ มันเป็นการตัดสินใจออกแบบ
Eren Tantekin

68
การตัดสินใจออกแบบที่ผิดอาจเป็นข้อบกพร่อง
Boris Bukh

23
เมื่อซอฟต์แวร์อ้างว่าทำสิ่งหนึ่งขณะที่ทำสิ่งอื่นมันเป็นข้อผิดพลาด หากนักพัฒนาไม่ต้องการให้เราพิจารณาว่าเป็นข้อผิดพลาดอย่าอ้างว่ามันทำตัวเหมือนไม่เป็นเช่นนั้น
hytromo

10
นั่นไม่ใช่คุณสมบัติ นั่นเป็นข้อผิดพลาด! เมื่อคุณให้ก้าน aa เพื่อเปิดที่ปัดน้ำฝนของกระจกหน้ารถและไม่สามารถใช้งานได้มันก็จะเสีย
Matt H

3
@ChristopherDone ด้วยความเคารพมันเป็นข้อผิดพลาด ความช่วยเหลือสำหรับการแจ้งเตือนการส่ง (ส่วนหนึ่งของ alert-osd) พูดว่า: alert-send --help | grep timeout -t, - expire-time = TIME ระบุการหมดเวลาเป็นมิลลิวินาทีที่จะหมดอายุการแจ้งเตือน นั่นคืออินเทอร์เฟซหลักสำหรับผู้ใช้เครื่องมือ อินเทอร์เฟซหลักนั้นอยู่ที่ผู้ใช้และนี่คือข้อผิดพลาด มันอาจจะเป็นข้อผิดพลาดที่มีข้อความช่วยเหลือหรือการใช้งานขึ้นอยู่กับมุมมองของคุณ แต่มันก็เป็นข้อผิดพลาดอย่างแน่นอน
Michael Sparks

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

ไม่จำเป็น

วิธีเพิ่มฟีเจอร์การส่งการแจ้งเตือนมากกว่าที่คุณมีอยู่ในปัจจุบัน

ตั้งแต่ 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


น่าเสียดายที่ที่เก็บไม่ได้ให้แพคเกจอีกต่อไปว่า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

สิ่งนี้ได้ผล! ในฐานะที่เป็นคำชี้แจงสำหรับคนอื่น ๆ คุณต้องติดตั้งไฟล์แจ้งเตือน -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 ขอบคุณมาก!
Michael Sparks

1
@MichaelSparks เปลี่ยนไปupgrade dist-upgradeที่ควรดูแลสิ่งต่าง ๆ ตามที่แจ้งเตือน -osd ติดตั้งแล้วและควรได้รับการอัพเกรดแน่นอน
Fabby

4

สิ่งนี้เป็นการดำเนินการโดยเจตนาที่ขัดต่ออนุสัญญาที่จัดตั้งขึ้นโดยไม่ตัดสิทธิ์ในสภาพแวดล้อมของเครื่องโฮสต์ กล่าวคือ notify-sendไม่ควรอยู่อีกต่อไปเพราะมันประนีประนอมฟังก์ชั่นที่คาดว่าจะได้รับและเป็นเอกสารที่ดีขึ้นดังนั้นแทนที่จะมีคำสั่งใหม่notify-graffitiตอนนี้ - อะไร ???? รอสักครู่ ... สคริปต์ทั้งหมดที่ใช้การสะกดชื่อคำสั่ง "ปกติ" จะถูกทำลาย!?! โดยการเปลี่ยนการประชุมของวิธีการสะกดชื่อคำสั่ง?!?! - hmmm ปรัชญานี้ล้ำเลิศเป็นคนเจ้าเล่ห์ที่ขัดแย้งกันโดยดำเนินการโดย Unity desktop terminal interface

ไม่สามารถทำได้ทั้งสองวิธี - รักษาอนุสัญญาบางอย่างเช่น ชื่อของคำสั่งและไม่ใช่ชื่ออื่น ๆ การทำงานของคำสั่งตามที่บันทึกไว้ หากฟังก์ชั่นการใช้งานถูกบุกรุกดังนั้นควรตั้งชื่อคำสั่งเพื่อรักษาความสมบูรณ์แบบแผนความสอดคล้อง ฯลฯ ของผู้ใช้ "ประสบการณ์" หรือผู้ใช้นั้น "หงุดหงิด", "รำคาญ", "ระคายเคือง", ..

Ref:

คั่นหน้า: การ
แจ้งเตือน - ส่งจะละเว้นการหมดเวลาหรือไม่


ลิงก์ "Non-expiring_notifications" และ "การแจ้งเตือน | Ubuntu App Developer" จะเสียหาย (หรือมากกว่าหน้าเว็บที่พวกเขาอ้างถึง)
Keith Thompson

2

มีสคริปต์ขนาดเล็กที่มีประโยชน์alert-send.shแทนการแทนที่แบบแจ้งเตือนการส่งซึ่งช่วยให้คุณสามารถปิดหรือแทนที่การแจ้งเตือนที่ส่งก่อนหน้านี้

แก้ไข: เนื่องจาก @Glutanimate ชี้ให้เห็นว่าสคริปต์นี้รองรับการหมดอายุตามค่าเริ่มต้น

ฉันไม่สามารถหมดเวลาทำงานได้ในตอนท้ายดังนั้นฉันจึงค่อนข้างแฮ็กในการส่งการแจ้งเตือนด้วยการหมดเวลา2 วินาทีดังนี้:

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


สคริปต์นี้ยอดเยี่ยม! ขอบคุณที่แชร์ที่นี่ ดูเหมือนว่าตอนนี้มันเข้ากันได้อย่างสมบูรณ์กับข้อโต้แย้ง CLI ดั้งเดิมของการแจ้งเตือนการส่ง เช่น: คุณสามารถส่งการแจ้งเตือนที่มีหมดเวลา 2 notify-send.sh -t 2 "Hello World!"วินาทีผ่าน ฉันเชื่อมโยงสคริปต์ไปยังไดเรกทอรี $ PATH ในพื้นที่ของฉันและเปลี่ยนชื่อเป็นแจ้งเตือน - ส่ง ไม่มีการจัดการกับการใช้งาน notification-osd subpar เพิ่มเติมอีก!
Glutanimate

Oh cool @Glutanimate! ขอขอบคุณที่แจ้งให้เราทราบ
NiMa Thr

0

สำหรับผู้ที่ใช้สภาพแวดล้อมเดสก์ทอป Cinnamon มีการตั้งค่าที่สามารถเปิดใช้งาน:

การแจ้งเตือน> ลบการแจ้งเตือนหลังจากถึงเวลาหมด


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