Ich habe ein kleines Skript in Perl geschrieben, um das zu tun, was Sie verlangen:
http://pastie.org/3460943
Es funktioniert, indem alle aktuellen X11-Fenster-IDs mit dem Befehl "xlsclients -l" abgerufen werden und die PID des Fensters mit xprop abgerufen wird. Anschließend wird xprop -root verwendet, um das aktuell fokussierte Fenster abzurufen. Anschließend werden alle PIDs durchlaufen, um ihren netten Wert auf 5 zu ändern (wobei der aktuell fokussierte Wert bei 0 bleibt).
Es tritt dann in eine Endlosschleife ein, die das fokussierte Fenster alle zwei Sekunden erneut überprüft. Wenn sich der Fensterfokus geändert hat, ändert sich der schöne Wert des alten auf 5 und der neue auf 0. Außerdem wird alle 40 Sekunden das im ersten Absatz vorgenommene wiederholt, sodass neue Prozesse priorisiert werden können.
Dieses Skript weist mehrere Fehler auf, von denen der offensichtlichste darin besteht, dass xprop das aktuell fokussierte Fenster manchmal nicht findet (dies scheint nur zu passieren, wenn Sie sehr schnell zwischen Fenstern wechseln.) Auch wenn Sie ein Fenster ausführen Von einem Netzwerkstandort aus korreliert die PID möglicherweise nicht mit der tatsächlichen PID auf Ihrem System. Das heißt, im Durchschnitt funktioniert das Skript (Perl kann einige Fehler behandeln und trotzdem ausgeführt werden)
Ich denke auch, dass es schneller wäre, wenn ich dies in c schreiben würde, aber ich habe keine Kenntnisse in der Verwendung der X11-Bibliothek, also ist es perlgefülltes Perl!