Ubuntu มีระบบการแจ้งเตือนที่ยอดเยี่ยมมาก มีวิธีทำให้ Ubuntu อ่านการแจ้งเตือนเมื่อปรากฏหรือไม่
หรือเป็นไปได้ที่จะเชื่อมโยงข้อความในการแจ้งเตือนไปespeak
?
Ubuntu มีระบบการแจ้งเตือนที่ยอดเยี่ยมมาก มีวิธีทำให้ Ubuntu อ่านการแจ้งเตือนเมื่อปรากฏหรือไม่
หรือเป็นไปได้ที่จะเชื่อมโยงข้อความในการแจ้งเตือนไปespeak
?
คำตอบ:
คำถามนี้น่าสนใจจริง ๆ เพื่อเป็นคำตอบ
dbus-monitor
เมื่อดำเนินการรอสัญญาณและเมื่อมาถึงก็จับและให้ข้อมูลที่เหมาะสมเกี่ยวกับมัน ในทำนองเดียวกันก็สามารถดำเนินการได้รับข้อมูลเกี่ยวกับการแจ้งเตือน เมื่อดำเนินการ:
dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
มันจะรอการแจ้งเตือนและเมื่อการแจ้งเตือนใด ๆ มาถึงมันจะให้ข้อมูลของการแจ้งเตือน
ตัวอย่างเช่นเมื่อเสียงเพิ่มขึ้น / ลดลงหรือมีการเปลี่ยนแทร็กเพลงหรืออื่น ๆ ที่ให้ข้อความ ฉันสร้างการแจ้งเตือนบนเดสก์ท็อปด้วยตนเองโดยใช้notify-send
คำสั่งบนเทอร์มินัลอื่น:
notify-send "Hello How are you?"
จากนั้นเทอร์มินัลแรกที่dbus-monitor
รันคำสั่งจะให้ข้อความดังนี้:
saurav@saurav-P4I45Gx-PE:~$ dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
string ":1.473"
method call sender=:1.474 -> dest=:1.475 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
string "notify-send"
string ""
string "Hello How Are You?"
string ""
string "urgency"
ตอนนี้การส่งออกดังกล่าวข้างต้นสามารถส่งผ่านไปespeak
ยังข้อความที่อ่านได้อย่างง่ายดาย ตัวอย่างเช่น,
การแทนที่dbus-monitor
คำสั่งด้านบนด้วยข้อความต่อไปนี้จะอ่านข้อความแจ้งเตือน:
ตรวจสอบมันทำงานอย่างไร:
ดำเนินการคำสั่งนี้ในเทอร์มินัลและปล่อยให้มันรันอยู่:
dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "string" | grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | grep --line-buffered -v '^\s*$' | xargs -I '{}' espeak {}
ฉันรู้ว่ามันยาวมาก แต่ไม่มีวิธีอื่นที่จะทำให้เล็กเพราะการกรองการแจ้งเตือนจริงทำให้มันยาว
จากนั้นเรียกใช้การแจ้งเตือนบนเดสก์ท็อปไม่ว่าจะเป็นวิธีที่ฉันอธิบายไว้ข้างต้นโดยใช้notify-send
หรือสิ่งอื่นใด notify-send
ฉันใช้ ดังนั้นการรันคำสั่งต่อไปนี้ในเทอร์มินัลอื่น:
notify-send "Hello! I am Saurav Kumar."
ทันทีที่คุณดำเนินการคำสั่งมันจะพูด (อ่าน) การแจ้งเตือน
แม้ว่ามันกิน 4-5 ชั่วโมงของฉัน แต่ตอนนี้ฉันมีความสุขที่จะทำให้มันทำงาน
คุณยังสามารถสร้างคำสั่งของคุณเองsaynoti
และดำเนินการทุกครั้งที่คุณต้องการการแจ้งเตือนการอ่าน โดยทำตามขั้นตอนเหล่านี้คุณสามารถทำได้:
saynoti
ขั้นแรกให้บันทึกคำสั่งที่แท้จริงไฟล์ที่เรียกว่า คุณสามารถใช้ชื่อไฟล์ใดก็ได้ที่จะกลายเป็นชื่อคำสั่งจริงของคุณ
จากนั้นให้ไฟล์ที่ปฏิบัติการได้และย้ายหรือคัดลอกไปที่/bin
:
chmod +x saynoti
sudo cp saynoti /bin
ตอนนี้คุณสามารถดำเนินการคำสั่งใหม่ของคุณเพื่อเริ่มพูดการแจ้งเตือน :
saynoti
เพื่อฆ่ากระบวนการทำงานคุณสามารถดำเนินการคำสั่งนี้:
pkill dbus-monitor
หรือเพียงแค่กดCtrl+ Cบนเทอร์มินัลที่saynoti
กำลังทำงานอยู่
นอกจากนี้คุณยังสามารถเรียกใช้saynoti
ทุกครั้งที่ระบบของคุณเริ่มต้นด้วยการทำให้มันเป็นแอพลิเคชันที่เริ่มต้นขึ้น
ฉันอยากจะบอกว่าขอบคุณสำหรับคำถามนี้ เนื่องจากคำถามนี้ฉันเรียนรู้หลายสิ่งหลายอย่าง :)
ตอบกลับหากคุณพบปัญหาหรือต้องการเปลี่ยนแปลง / แก้ไขเพิ่มเติม ฉันแน่ใจว่าคุณจะมีความสุขที่ได้รับรุ่นสุดท้ายที่ทำงาน
dbus-monitor
ฉันต้องการเริ่มเรียนรู้
ฉันมีปัญหากับพิเศษ "ในที่อยู่อีเมลของฉันดังนั้นฉันได้เพิ่มนี้ในบรรทัดรหัสข้างต้นเป็น espeak ไม่จำเป็นต้อง" เลยอ่านออก;)
| sed 's / \ "// g' |
=>
| grep --line-buffered -v '^ \ s * $' | sed 's / \ "// g' | xargs -I '{}' espeak {}
ทำงานเย็น ดีกว่าส่งทวีต - ส่ง lib เอง 4 "สวัสดี! ฉันชื่อ Saurav Kumar"
ปรับปรุง: ไม่ทำงานอย่างต่อเนื่อง ฉันจะใช้ tee -a $ file |