Ưu tiên các ứng dụng X có trọng tâm


8

Có cách nào để ưu tiên các ứng dụng X với trọng tâm, tốt nhất là cả về CPU và I / O không?

Một cái gì đó giống như tất cả các ứng dụng X được ưu tiên và được ưu tiên ion hóa, nhưng khi chúng tập trung, chúng sẽ được bổ sung và trở lại mức bình thường.

Tôi không muốn phát minh lại bánh xe, vì vậy tôi đã hy vọng ai đó đã phát triển một ứng dụng thực hiện điều này.


Điều này đòi hỏi người quản lý cửa sổ phải biết ID tiến trình của máy khách X11 mà nó xử lý. Tôi nghĩ rằng tôi chưa thấy bất kỳ WM nào có thể làm điều này (thật không may), không chắc là nó có thể hay không. (Không thành công vì máy khách X11 thực sự có thể không phải là một quy trình cục bộ, phải không?)
sr_

Câu trả lời:


2

Tôi đã viết một kịch bản nhỏ bằng perl để làm những gì bạn yêu cầu: http://pastie.org 43260943

Nó hoạt động bằng cách nhận tất cả các ID cửa sổ X11 hiện tại bằng cách sử dụng lệnh "xlsclrons -l", lần lượt lấy PID của cửa sổ với xprop. Sau đó, nó sử dụng xprop -root để lấy cửa sổ hiện đang tập trung, sau đó lặp qua tất cả các PID để thay đổi giá trị đẹp của chúng thành 5 (giữ cho giá trị hiện tại tập trung ở mức 0.)

Sau đó, nó đi vào một vòng lặp vô hạn kiểm tra lại cửa sổ tập trung cứ sau hai giây. Nếu tiêu điểm cửa sổ đã thay đổi, nó sẽ thay đổi giá trị tốt đẹp của người cũ thành 5 và giá trị mới thành 0. Ngoài ra, cứ sau 40 giây, nó sẽ làm lại những gì nó đã làm trong đoạn đầu tiên để có thể ưu tiên các quy trình mới.

Kịch bản này có một số sai sót, trong đó rõ ràng nhất là xprop đôi khi không tìm thấy cửa sổ hiện đang tập trung (điều này dường như chỉ xảy ra nếu bạn chuyển đổi giữa các cửa sổ rất nhanh.) Ngoài ra, nếu bạn đang chạy một cửa sổ từ một vị trí mạng, PID có thể không tương quan với PID thực tế trên hệ thống của bạn. Điều đó nói rằng, trung bình tập lệnh sẽ hoạt động (perl có thể xử lý một vài lỗi và vẫn chạy)

Tôi cũng nghĩ rằng nó sẽ nhanh hơn nếu tôi viết cái này trong c, nhưng tôi không có kỹ năng sử dụng thư viện X11, vì vậy nó chứa đầy bash!

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.