
Bitte beachten Sie, dass diese Frage völlig verschieden ist von
- Wie kann ich verhindern, dass Programme den Arbeitsbereich wechseln?
- Wie kann ich eine Anwendung (und alle ihre neuen Fenster) in einem bestimmten Arbeitsbereich sperren?
- Verhindern, dass Anwendungen den Arbeitsbereich ändern
- So verhindern Sie, dass Unity den Arbeitsbereich ändert, wenn das Fenster aktiviert wird, das zuvor teilweise über zwei Arbeitsbereiche gezogen wurde
Denn bei dieser Frage geht es NICHT darum, wie man
- Öffnen Sie ein Programm im aktuellen Arbeitsbereich. Das weiß ich.
- Öffnen Sie ein Programm auf einem anderen Arbeitsbereich. Das weiß ich.
- Verhindern, dass ein Fenster in einen Arbeitsbereich verschoben wird. Ich weiß, wie man damit umgeht.
- Verhindern Sie, dass der Arbeitsbereich durch Klicken auf ein Symbol gewechselt wird, oder verwenden Sie den Task-Umschalter.
Diese Frage bezieht sich auch NICHT auf Chromium. Chromium ist nur die bekannteste App unter vielen Anwendungen, die sich schlecht verhalten.
Die Frage ist, wie man Wayland daran hindern kann, den aktuellen Arbeitsbereich zu wechseln, wenn eine andere Anwendung (wie Chromium oder andere) versucht, den Fokus ohne direkte Benutzerinteraktion auf sich selbst zu ändern. Dies ist so etwas wie Fokusraub, was ärgerlich genug ist, wenn es im aktuellen Arbeitsbereich geschieht.
Wenn ich mit Compiz einen Arbeitsbereich auswähle, darf dieser nicht geändert werden, bis ich einen anderen auswähle, unabhängig davon, was andere Anwendungen im Hintergrund versuchen.
Gibt es vielleicht eine Möglichkeit, Wayland anzuweisen, nur Umschaltbefehlen von bestimmten Anwendungen wie Compiz und wmctrl Folge zu leisten? Kann dies vielleicht mit einem dbus
Filter erreicht werden (obwohl ich weiß, wie ich den Code von Linux-Kernelmodulen wie CIFS oder ZFS an meine Bedürfnisse anpassen kann, verstehe ich dbus
weder Wayland noch SystemD wirklich, tut mir leid). LD_PRELOAD
? Irgendeine (vorhandene) X0-Protokoll-Firewall? Irgendetwas?
Meine derzeitige Problemumgehung besteht darin,
while sleep .01; do DISPLAY=:0 wmctrl -s 2; done
Wenn Chromium (oder eine der anderen Apps) den Arbeitsbereich wechselt, wechselt Wayland sofort zurück zu dem, an dem ich arbeite. Dieses minutenlange, stetige Bildschirmflackern aufgrund dieses Hin- und Herwechselns ist jedoch irritierend. Außerdem geht aufgrund des Flackerns manchmal der Mausfokus verloren (oder es passiert etwas ganz anderes, z. B. wenn etwas aufgrund des Race Condition auf den falschen Desktop gezogen wird).
Beachten Sie, dass Chromium am nervigsten ist. Die meisten anderen Apps wechseln den Arbeitsbereich nur einmal. Chromium hingegen tut dies anscheinend für jedes Fenster, das beim Start geöffnet wird. Bei mehreren tausend geöffneten Fenstern dauert der gesamte Start von Chrome Minuten (mein Computer hat genug RAM und CPU, also handelt es sich nicht um ein Wechselproblem), und während des Starts versucht es ständig, den Arbeitsbereich zu wechseln, bis es bereit ist. Die Frage ist jedoch auch, wie verhindert werden kann, dass FireFox, IDEs und andere Fenster auf diese Weise den Fokus stehlen.
Bitte beachten Sie, dass es bei dieser Frage nicht um den Fokusdiebstahl selbst geht. Es geht lediglich um den Fokusdiebstahl durch Wechseln des Arbeitsbereichs, da dies etwas völlig anderes ist als der normale Fokusdiebstahl, den Sie beobachten.
Ich möchte also nicht verhindern, dass Fenster herumspringen, sich in einen anderen Arbeitsbereich bewegen oder den Fokus vom aktuellen Arbeitsbereich stehlen. Apps dürfen also weiterhin meine Fensterplatzierung ruinieren.
Ich möchte lediglich den aktuellen Arbeitsbereich „sperren“, sodass nichts anderes ihn ändern kann, bis ich mich für den Wechsel zu einem anderen Arbeitsbereich entscheide.
Einige Gedanken dazu:
Wayland stellt nur einen bestimmten Teil (den Arbeitsbereich) einer viel größeren Leinwand dar (die alle Arbeitsbereiche enthält). Wenn man also den Arbeitsbereich ändert, ändert man nur den Ursprung, von dem aus die Leinwand angezeigt wird. Und die Anzeigen sind Bereiche relativ zu diesem Ursprung. (Natürlich passiert da noch ein bisschen mehr, da auch der Eingabefokus verschoben werden muss.)
Soweit ich weiß, sollte es einfach sein, das Verschieben des Ursprungs zu verhindern (und damit auch die Änderung des Fokus). Genau das möchte ich erreichen. Vielleicht ist dies bereits irgendwo in Wayland eingebaut. Oder es könnte in den Code gehackt werden, so etwas wie eine Firewall, die verhindert, dass der Ursprung durch nicht autorisierte Apps geändert wird. Dies ist etwas, das ich implementieren könnte, wenn ich die richtige Stelle finden könnte, an der diese Ursprungsänderung in Wayland stattfindet.
Aber bevor ich mich damit befasse (was wahrscheinlich mehrere Tage dauern wird), möchte ich wissen, ob es vielleicht eine bessere oder standardmäßige Möglichkeit gibt, dies zu archivieren.
Einige abschließende Anmerkungen:
Ich muss Ubuntu und Wayland verwenden, da mein Display-Setup/meine Hardware/mein HWE-Stack unter reinem X11 nicht unterstützt wird. (Einer meiner Monitore kann nicht richtig betrieben werden. Beachten Sie, dass ich diesen Fehler höchstwahrscheinlich finden und beheben könnte, mir jedoch die Zeit dafür fehlt.)
Von Wayland weg zu wechseln hilft mir also nicht weiter. Ich nutze natürlich LTS, also ist auch Ubuntu 22.04 voreingestellt, also bringt mir auch ein OS-Wechsel nichts.