Có cách nào để hiển thị thông báo trên tường cho người dùng máy tính để bàn không?


9

Hãy nói rằng tôi xa nhà, ssh-ing trên máy tính ở nhà của tôi. Vì bất kỳ lý do gì, tôi cần nó khởi động lại.

# shutdown -r +10

Điều này sẽ gửi một thông điệp cảnh báo mỗi phút thông qua wall, điều này hoàn toàn vô hình đối với việc sử dụng máy tính để bàn thông thường bởi, giả sử, cha mẹ tôi.

Có cách nào walltin nhắn có thể đến máy tính để bàn thông qua, nói, thông báo.


1
Nhờ thông tin trong các câu trả lời cho bài đăng này, tôi có thể hack cùng một chương trình Python thực hiện đúng những gì tôi cần. Nó phụ thuộc vào libnotify-bingói.
badp

Câu trả lời:


8

Các phần bên trong wallvà bị chặn và cổ xưa đến mức thực sự không có cách nào để lấy thông điệp từ nó một khi nó ở đó.

Ý tưởng thực sự duy nhất đưa ra cho vấn đề này ( vấn đề đã được thảo luận trước đây , nhiều lần) là thay đổi tập lệnh shutdownreboottập lệnh để chúng có thể cung cấp một cái gì đó thông qua dbus hoặc (vì chúng tôi chỉ xử lý một máy tính và một bản sửa lỗi) mà bạn có thể chỉ cần nó gửi một tin nhắn gửi tin nhắn.

Họ chỉ kịch bản vì vậy bạn chỉ có thể xâm nhập vào chúng. Nhưng tôi nghĩ rằng đây có lẽ là một nguyên nhân đáng để thúc đẩy. Gửi một lỗi đối với Ubuntu và thêm các bản vá của bạn (chỉ cần đảm bảo rằng chúng có thể hoạt động mà không cần gửi thông báo nếu không có môi trường X). Đây là loại khả năng sử dụng mà chúng ta cần.

Tôi chưa bao giờ nghe nói gxmessagetrước đây, nhưng tôi sẽ sử dụng notify-send.

Một giải pháp đầy đủ sẽ cần để phục vụ cho khả năng có nhiều màn hình (ví dụ: nhiều đầu, người dùng từ xa, v.v.) nhưng rất may tôi đã viết một số mã cho bit đó ngày hôm qua:

for display in `ps aux | grep -oE "/usr/bin/X\s[^ ]+" | cut -d " " -f 2`; do
    DISPLAY=$display notify-send -u critical 'Shutdown notice' 'Save all your work. THE SYSTEM IS GOING DOWN!!' -i /usr/share/pixmaps/gnome-computer.png
done

(Tôi đang sử dụng xuất thay vì một cờ -displayhoặc --displayvì tôi không biết điều đó notify-sendxảy ra)


gxmessage là một ứng dụng cổ xưa. hãy nghĩ về nó dbus và thông báo-gửi là một lựa chọn tốt hơn nhiều. Có lẽ tôi có thể làm việc gì đó với sự thoải mái.
tinhed

Vâng, tôi không chắc những gì tốt nhất. zenitycảnh báo có thể gây khó chịu nếu bạn tranh giành để có được những thứ được lưu trước khi bạn đăng xuất ... Nhưng notify-sendthông báo có thể bị bỏ qua.
Oli

1
Đúng là thông báo gửi thông báo có thể bị bỏ qua nhưng nếu được hiển thị một vài lần (ví dụ 10 phút) thì họ có thể thực hiện công việc!
OpenNingia

@Oli Tôi thấy bạn cũng cần biến môi trường XAUTHORITY được đặt chính xác để làm việc này, tuy nhiên.
badp

1
DISPLAY=$display notify-send...sẽ chỉ xuất giá trị đó của HIỂN THỊ cho lệnh đó; không phải là vấn đề ở đây, nhưng nó hữu ích ở nơi khác và, IMHO, sạch hơn một chút.

2

Bạn có thể gửi tin nhắn theo cách thủ công bằng cách sử dụng zenity

zenity --warning --text "badp's about to restart the computer" --display=:0

Tất nhiên, bạn có thể bao gồm điều này trong một kịch bản.


Tôi không thể mở màn hình, ngay cả với tư cách là siêu người dùng (tôi phải sudo là đúng người dùng) :(
badp

Có thể - chắc chắn rằng bạn đã có dấu hai chấm ở đó ( =:0không =0)
misterben

không thể, bạn cũng cần đặt biến môi trường XAUTHORITY chính xác.
badp

1

Bạn sẽ có thể viết một tập lệnh tạo ra một ptty và lắng nghe các tin nhắn bằng văn bản (từ viết hoặc tường) và sau đó chuyển tiếp nó đến một đầu ra GUI.


0

AFAIK không có máy khách X cho lệnh wall để hiển thị các thông báo này trong môi trường đồ họa. Bạn có thể sử dụng ứng dụng gxmessage để hiển thị cửa sổ bật lên nhưng sau đó bạn sẽ phải tự viết kịch bản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.