Tôi hiện đang chạy mcabber với tư cách là ứng dụng khách Jabber của mình (sử dụng ncurses) trong phiên tmux trên máy chủ của tôi. Tại địa phương tôi chạy iTerm2 như một trình giả lập thiết bị đầu cuối, hỗ trợ kích hoạt các thông báo gầm gừ thông qua các chuỗi thoát ký tự.
Lưu ý: Tất cả echo
trong câu hỏi này hoạt động như printf %b
, hoặcecho -e
trong bash và GNU echo
.
ví dụ echo "\e]9;foobar\007"
làm cho iTerm2 gửi tin nhắn Growl với nội dung "foobar".
Tuy nhiên, khi trong một phiên tmux, các chuỗi thoát được ăn hết. Do đó, sử dụng chuỗi thoát ký tự độc quyền \Ptmux
có thể được sử dụng như thế này:
echo "\ePtmux;\e\e]9;foobar\007\e\\"
Điều này kích hoạt một thông điệp gầm gừ từ trong một phiên tmux.
Tuy nhiên, khi tôi sử dụng điều này trong tập lệnh sự kiện mcabber của mình sẽ bị kích hoạt khi nhận được tin nhắn mới, không có thông báo nào được kích hoạt, như thể tiếng vang được gửi đến thiết bị đầu cuối sai.
Tôi cho rằng điều này có liên quan đến mcabber đó kích hoạt tập lệnh là một ứng dụng ncurses để đầu ra từ tập lệnh bash bình thường của tôi bị mất và iTerm 2 không bao giờ nhìn thấy nó.
Tôi cũng đã thử gọi smcup nhưng không thành công trước khi lặp lại với một số ý tưởng mà tôi phát hiện ra
tput smcup
echo "\ePtmux;\e\e]9;$FROM: $MSG\007\e\\"
tput rmcup
Tôi cho rằng điều này không hoạt động vì vấn đề không chuyển trở lại "cửa sổ thiết bị đầu cuối thực sự", mà chỉ đạo đầu ra nhiều hơn ở cửa sổ ncurses.
Có ý kiến gì về cái này không?