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!