Priorisieren Sie X-Anwendungen mit Fokus


8

Gibt es eine Möglichkeit, X-Anwendungen mit Fokus zu priorisieren, vorzugsweise sowohl hinsichtlich der CPU als auch der E / A?

So etwas wie alle X-Anwendungen sind in ihrer Priorität geglättet und ionisiert, aber wenn sie den Fokus gewinnen, werden sie wieder auf ein normales Niveau gebracht.

Ich möchte das Rad nicht neu erfinden, also hatte ich gehofft, dass jemand bereits eine Anwendung entwickelt hat, die dies tut.


Dazu muss der Fenstermanager die Prozess-ID des X11-Clients kennen, den er verarbeitet. Ich glaube, ich habe noch keine WM gesehen, die dies (leider) kann, nicht sicher, ob es möglich ist. (Es schlägt fehl, weil der X11-Client möglicherweise überhaupt kein lokaler Prozess ist , oder?)
sr_

Antworten:


2

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!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.