ขณะนี้ฉันกำลังเรียกใช้ mcabber เป็นลูกค้า Jabber ของฉัน (ซึ่งใช้ ncurses) ในเซสชั่น tmux บน homeserver ของฉัน ในพื้นที่ฉันเรียกใช้ iTerm2 เป็นเทอร์มินัลอีมูเลเตอร์ซึ่งรองรับการกระตุ้นการแจ้งเตือนคำรามผ่านลำดับการหลีกเลี่ยงตัวละคร
หมายเหตุ: ทั้งหมดecho
ในคำถามนี้ทำงานเหมือนprintf %b
หรือecho -e
ในทุบตีและ echo
GNU
เช่นecho "\e]9;foobar\007"
ทำให้ iTerm2 ส่งข้อความคำรามด้วยข้อความ "foobar"
อย่างไรก็ตามเมื่ออยู่ในเซสชั่น tmux ลำดับการหลีกเลี่ยงจะถูกทำลาย ดังนั้นการใช้ลำดับ escape character ที่เป็นกรรมสิทธิ์\Ptmux
สามารถใช้ดังนี้:
echo "\ePtmux;\e\e]9;foobar\007\e\\"
สิ่งนี้ทริกเกอร์ข้อความคำรามจากภายในเซสชัน tmux
อย่างไรก็ตามเมื่อฉันใช้สิ่งนี้ในสคริปต์เหตุการณ์ mcabber ของฉันที่ถูกไล่ออกเมื่อได้รับข้อความใหม่จะไม่มีการแจ้งเตือนใด ๆ ขึ้นมาราวกับว่าเสียงสะท้อนถูกส่งไปยังเทอร์มินัลผิด
ฉันคิดว่าสิ่งนี้เกี่ยวข้องกับ mcabber ซึ่งเรียกสคริปต์ว่าเป็นแอปพลิเคชัน ncurses ดังนั้นผลลัพธ์จากสคริปต์ทุบตีปกติของฉันจะหายไปและ iTerm 2 ไม่เคยเห็นเลย
ฉันพยายามโทร smcup โดยไม่ประสบความสำเร็จก่อนที่จะสะท้อนความคิดบางอย่างที่ฉันค้นพบ
tput smcup
echo "\ePtmux;\e\e]9;$FROM: $MSG\007\e\\"
tput rmcup
ฉันคิดว่าสิ่งนี้ไม่ทำงานเนื่องจากปัญหาไม่ได้เปลี่ยนกลับไปเป็น "หน้าต่างเทอร์มินัลจริง" แต่ให้นำผลลัพธ์ไปที่หน้าต่าง ncurses มากขึ้น
ความคิดใด ๆ เกี่ยวกับเรื่องนี้?