Cửa sổ bị ẩn nhưng quá trình đang chạy [đóng]


13

Làm thế nào tôi có thể khôi phục các cửa sổ cho một pid nhất định? Nó sẽ hữu ích trong một số tình huống khi cửa sổ của một chương trình nào đó biến mất (đôi khi xảy ra với tôi).

Ví dụ: mỗi khi tôi hướng tới đóng hexchat, nó sẽ hiển thị hộp thoại để xác nhận. Nếu tôi bấm hủy, dù sao thì cửa sổ cũng biến mất, nhưng quá trình tiếp tục chạy trong nền. (Tôi có thể pgrep nó id).

Có thể khôi phục lại cửa sổ, cho tôi biết pid?


Bạn có hình dung điều này? Điều này thỉnh thoảng vẫn xảy ra với tôi - có vẻ như họ đang gặp sự cố khi sửa lỗi này.
Jason Kleban

Tôi không nhớ chính xác. Phải quay lại cửa sổ một lúc. Tôi nghĩ rằng ai đó đã nói với tôi trong cuộc trò chuyện rằng nó đã được sửa chữa trên nhánh phát triển vào thời điểm đó. Nhưng nếu bạn nói nó vẫn xảy ra, thì lỗi vẫn còn đó ... Xin lỗi vì không được giúp đỡ.
dùngEng15

Tôi sử dụng xdotool, có thể làm việc. 'xdotool search -name hexchat' và 'xdotool windowactivate theWindowId'
zayn

Câu trả lời:


3

Thật không may, không - thường không có cách nào để ứng dụng X Windows kết nối lại với hệ thống cửa sổ nếu mất kết nối và cửa sổ của nó bị phá hủy. Và các cửa sổ nói chung sẽ chỉ biến mất nếu có lỗi trong chính chương trình - trong trường hợp đó, quá trình có thể ở trạng thái treo mà không biết, chờ đợi I / O sẽ không bao giờ xảy ra vì không nhận ra cửa sổ của nó đã biến mất .

Trừ khi ứng dụng có thiết kế rất hiếm và cho phép bạn gửi cho nó một tín hiệu hoặc tin nhắn đặc biệt để kết nối lại với máy chủ X, hoặc xây dựng lại một cửa sổ mới, hoặc trừ khi nó vẫn hiện diện trên màn hình ở đâu đó dưới dạng biểu tượng hoặc biểu tượng được neo và bạn có thể tương tác với nó theo cách đó, quá trình của chương trình đơn giản phải bị giết và bạn phải khởi động lại nó.

Hành vi đóng cửa sổ cuối cùng của nó mà không thoát khỏi quy trình nói chung là một lỗi mà bạn có thể báo cáo ngược dòng về ứng dụng.

(Lưu ý: có những trường hợp ngoại lệ hiếm gặp, như trình duyệt web duy trì quá trình chạy ngay cả khi cửa sổ cuối cùng của chúng bị đóng - nhưng trong những trường hợp đó, hãy nhấp lại vào biểu tượng của trình duyệt hoặc chạy lại từ dòng lệnh chỉ đơn giản là cho biết nó đã chạy quá trình để mở một cửa sổ mới. Một lần nữa, một ứng dụng phải được viết đặc biệt để xử lý tình trạng không có cửa sổ tạm thời nếu điều này hoạt động.)


3

Như Brandon Rhodes đã giải thích, nếu cửa sổ bị phá hủy / ẩn bởi quy trình mẹ của nó, không có cách nào để khôi phục / tạo lại / hiển thị nó từ bên ngoài quy trình hoặc chính ứng dụng.

Bạn có thể xác nhận từ trình quản lý cửa sổ, thử : wmctrl -l -p, không có cửa sổ nào liên quan đến PID của nó được liệt kê.

Vì vậy, có thể hexchatvẫn còn đáp ứng, hãy thử:

hexchat -e --command="gui show"

-e Mở URL hoặc thực thi lệnh trong HexChat hiện có

Người giới thiệu:


1
Làm việc hoàn hảo.
amar

1

Nếu quá trình chỉ đơn giản là trong nền, có lẽ câu trả lời này cũng phù hợp ở đây:

Sử dụng fgđể đưa quá trình trở lại nền trước.

Xem câu trả lời đầy đủ để được hướng dẫn thêm.


1

Tôi không biết hexchat, nhưng có thể chương trình sử dụng biểu tượng khay để có thể lấy lại cửa sổ chính. Thật không may, có nhiều khay triển khai trên linux và không phải tất cả chúng đều hoạt động cùng nhau.

Tôi gặp vấn đề như vậy với chương trình RadioTray không xuất hiện nữa sau khi cập nhật lên Xubfox 14.04. Giải pháp là cấu hình lại nó (tệp ~ / .local / share / radiotray / config.xml có tùy chọn 'gui_engine' với 3 giá trị có thể là 'appindicator', 'systray' và 'chouler').

Nếu điều này không có ích, hãy thử kiểm tra các tùy chọn / tùy chọn của ứng dụng của bạn. Có thể bạn tìm thấy một tùy chọn 'Thu nhỏ vào khay'. Vô hiệu hóa nó và thử đóng cửa sổ một lần nữa.


0

Bạn có thể thử Ctrl + Alt + Del, sau đó kết thúc quá trình. Hi vọng điêu nay co ich. Đây là những gì tôi làm khi một chương trình trong Ubuntu đóng băng hoặc hành động gây cười cho tôi.

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.