Benötigt ein X-Client unbedingt einen Fenstermanager?

32

Benötigt ein X-Client unbedingt einen Fenstermanager? Kann ein X-Client nur mit dem X-Server arbeiten?

Wenn ein X-Client kein Fenster hat , braucht er einen Fenstermanager , um zu funktionieren?

Wenn ein X-Client ohne Fenstermanager arbeiten kann, muss der X-Client dann kein Fenster haben?

Vielen Dank.

Tim
quelle
4
Als ich zum ersten Mal auf X gestoßen bin - also vor ziemlich langer Zeit - wurde in den meisten Einführungsmaterialien die Tatsache diskutiert, dass Sie keinen Fenstermanager benötigen. Das scheint heutzutage nicht der Fall zu sein, aber ich nehme an, dass jemand dies für offensichtlich oder ein Beispiel für Faulheit hält.
dmckee
11
@Tim: Sie scheinen lange genug dabei zu sein, dass Sie wissen sollten, dass eine Ablehnung nicht dazu gedacht ist, "Hass", "Bösartigkeit", "Grausamkeit", "Diskriminierung" oder ähnliches zu kommunizieren. Ein Downvote ist einfach ein Inhaltsbewertungssystem , und einige Inhalte sind weniger wertvoll als andere Inhalte. (Ich habe diese Frage nicht herabgestimmt. Ich finde diese Frage großartig.) Siehe auch: Können wir neuen Benutzern klarer machen, dass Herabstimmungen auf der Hauptseite keine Beleidigungen sind und ihnen in der Tat helfen können, sich selbst zu helfen? ? auf Meta Stack Overflow.
Daniel Pryden
5
@Tim Einige deiner downvoted Fragen scheinen mir nicht nützlich zu sein. Die Benutzeroberfläche (der Alternativtext der Schaltfläche) fordert Benutzer dazu auf, "nicht nützliche" Fragen abzustimmen. Hass ist keine notwendige Komponente. Das Hinzufügen eines kleinen Hinweises / einer Behauptung, dass eine Frage möglicherweise in einem bestimmten Szenario verwendet werden könnte (auch wenn dies sehr unwahrscheinlich / unwahrscheinlich ist), würde diese Reaktion zum größten Teil verhindern. Ihre Fragen, die ich gesehen habe, sind insofern bemerkenswert ähnlich, als ihnen ein solcher Hinweis / eine solche Behauptung fehlt.
Kubanczyk
3
Tim, die Diamantenmoderatoren haben Zugriff auf einige Tools, die das Abstimmen von Mustern erkennen. Kennzeichnen Sie sie und bitten Sie sie, sie zu untersuchen. / mod auf physics.se
dmckee
1
Teile Ihrer Frage erscheinen unsinnig. Der schlimmste Übeltäter scheint zu sein: "Braucht es einen Fenstermanager, ob es funktionieren kann?".
hkBst

Antworten:

26

Gut geschriebene Apps benötigen keinen Fenstermanager.

Einige "moderne" defekte Apps funktionieren jedoch nicht ohne einen Fenstermanager (z. B. Firefox und seine Adressleistenvorschläge, die nicht herunterfallen [1]).

Viele andere untergeordnete Apps setzen nicht nur einen Fenstermanager voraus , sondern auch einen Klick, um den Fenstermanager zu fokussieren . Früher war es zum Beispiel so, dass jede Java-App beim Start einfach den Fokus stiehlt.

Wenn Sie testen möchten, installieren Sie Xephyr(einen "verschachtelten" X11-Server), führen Sie ihn mit aus Xephyr :1und starten Sie dann Ihre Apps mit DISPLAY=:1in ihrer Umgebung.

[1] Die "fantastische Leiste" von Firefox öffnet ihren Vorschlagsbereich nicht, wenn sie in den Verlaufs-Button eingegeben oder darauf geklickt wird, es sei denn, ein Fenstermanager wird ausgeführt. Das Auto-Hide-Menü funktioniert auch nicht.

Mosvy
quelle
Gibt es einen offenen Fehler in Firefox für das von Ihnen erwähnte Problem? Ich denke, dass Firefox Open Source bereit wäre, eine Fehlerbehebung für dieses Problem vorzunehmen.
t3dodson
4
@ t3dodson Du kannst versuchen, einen einzureichen, aber es ist höchst zweifelhaft, ob es jemandem etwas ausmacht, einen Patch zu lesen, der das behebt. Das Ausführen von Firefox wird nicht wirklich unterstützt, wenn kein Window Manager, Session Manager und in letzter Zeit kein pulseaudio-Server ausgeführt wird. Natürlich kannst du es
gabelen
Imo jede Antwort auf dieses Thema ist nicht vollständig, ohne Xephyr zu erwähnen. +1
Rui F Ribeiro
38

Nein, Sie müssen keinen Fenstermanager ausführen, damit ein X-Client ausgeführt werden kann. Einige Systeme bieten die Möglichkeit, ein Terminal nur beim Start auszuführen, und von dort aus können Sie zusätzliche Programme, einschließlich Fenstermanagern, starten. Einige Kiosk-Setups, bei denen nur eine Anwendung ausgeführt werden soll, benötigen keinen Fenstermanager. Einige Implementierungen von X für Microsoft Windows vermeiden einen X Window Manager, indem das Betriebssystem die Fenster verwalten kann.

Ohne einen Fenstermanager müssen Sie in der Regel die Geometrie für die Programme angeben, damit nicht alles in der oberen linken Ecke platziert wird.

In X ist der Fenstermanager nur ein weiterer X-Client. Dies war zu dieser Zeit ungewöhnlich, machte es jedoch einfach, verschiedene Fenstermanager zu haben.

Eine andere Möglichkeit, die Frage zu betrachten, besteht darin, zu beobachten, dass Sie den Fenstermanager im laufenden Betrieb wechseln können, so dass zwischen dem ersten Stopp und dem zweiten die Steuerung liegt. Da jedoch alle Ihre Anwendungen nicht abstürzen, müssen sie in der Lage sein ohne zu arbeiten.

icarus
quelle
2
Tipp: Es gibt ein Tool namens xwit, das beim Experimentieren mit Konfigurationen ohne WM-Zugriff wirklich hilft.
Rackandboneman
7

Ein Fenstermanager ist eine Annehmlichkeit für Benutzer.

In den guten alten Tagen hatte ich eine ~/.XclientsDatei, die lautete:

#!/bin/sh

HOST=`uname -n | sed 's/\..*$//'`

xv -root -rmode 5 $HOME/misc/millennium/theme/Wallpaper.gif -quit &

xterm -geometry 80x24+0+85 \#52x71-104+0 -n $HOST -T $HOST &
xterm -geometry 80x24+510+429 \#52x71-52+0  -n $HOST -T $HOST &
xclock -digital -update 1 -geometry +1059+982 &
xscreensaver -nosplash &
exec /usr/local/lib/X11/fvwm/fvwm

Diese Datei würde ausgeführt, wenn ich X mit starte startx. Wenn dieses Skript beendet ist, wird der X-Server heruntergefahren.

Beachten Sie die letzte Zeile: exec .../fvwm. Dies ist die Zeile, die meinen Fenstermanager (fvwm) gestartet hat. Alle bisherigen Anwendungen ( xv, xterm, xclock, xscreensaver) ausgeführt wurden , bevor der Window - Manager gestartet. Da der Anruf bei fvwmdie letzte Zeile war und nicht in den Hintergrund gestellt wurde, bedeutete dies, dass fvwmX bei Beendigung schließen würde.

Der X-Start hatte sogar einen "Fallback" -Standard ... wenn keine Konfigurationsdateien vorhanden waren, starten Sie X mit einer einzigen xtermAusführung. Wenn Sie dies schließen, wird xtermdie X-Sitzung beendet.

Stephen Harris
quelle
Was war der Vorteil von fvwm ohne Hintergrund?
Alex Hajnal
1
Das Skript darf nicht beendet werden, da der X-Server sonst beendet wird. Indem wir nicht im Hintergrund arbeiten fvwm(und ausführen exec), stellen wir sicher, dass es immer noch einen Prozess gibt, der das Herunterfahren des X-Servers verhindert. Wenn Sie diesen letzten Vorgang fvwmausführen, kann ein Menüelement "Beenden" wie erwartet ausgeführt werden.
Stephen Harris
Ich habs. Es ist schon eine Weile her, dass ich mit X viel Low-Level gemacht habe. Ich muss allerdings sagen, dass fvwm 2 einer meiner beiden Lieblings-Window-Manager ist (der andere ist kwin 3).
Alex Hajnal
In meinem Fall fvwm-1.24rwar mein Lieblingsfenstermanager :-)
Stephen Harris
Ich höre dich darauf. Ich erinnere mich, dass v2 anpassbarer war als v1 (mit allen Konfigurationsoptionen in einer einzigen Textdatei und on-the-fly nachladbar?). Ziemlich leicht, vor allem für heutige Verhältnisse. Ich habe es zuletzt täglich in der P-II-Ära IIRC verwendet.
Alex Hajnal
6

Um anderen Antworten hinzuzufügen, habe ich eine Open-Source-App entwickelt und veröffentlicht, die ohne Fenstermanager funktioniert (dh, Sie können sie direkt von xinitrc aus starten). Es gibt einige zusätzliche Schritte, die die Anwendung in diesem Fall ausführen sollte, neben der Verwaltung der Geometrie und der Z-Reihenfolge ihrer Dialoge, dies ist jedoch völlig verwaltbar.

George Y.
quelle
1

Hier gibt es viele gute detaillierte Antworten. Hier ist die einfache klare Antwort.

Benötigt ein X-Client unbedingt einen Fenstermanager?

Nein: Aber ohne, wenn Sie Schwierigkeiten haben, Ihre Fenster zu verwalten (Verschieben, Ändern der Größe, Senken, Anheben usw.). Es gibt andere Tools, die dies tun können, wenn Sie es brauchen.

Kann ein X-Client nur mit dem X-Server arbeiten?

Ja

Wenn ein X-Client kein Fenster hat, braucht er einen Fenstermanager, um zu funktionieren?

Wenn es keine Fenster gibt, sollte es keinen Nachteil geben, keinen Fenstermanager zu haben.

Wenn ein X-Client ohne Fenstermanager arbeiten kann, muss der X-Client dann kein Fenster haben?

Nein, es kann Fenster geben.

Versuche dies.

DISPLAY=:21
vncserver -localhost -geometry 1920x1080  -SecurityTypes None $DISPLAY &
ssvnc $DISPLAY
xterm &

dann im neuen xtermtyp fvwm.

Sie können installieren müssen vncserver, ssvncund fvwm, zuerst.

Strg-Alt-Delor
quelle
1

Ja, ein X-Client kann nur mit dem X-Server arbeiten. Als Beispiel gebe ich meinen virtuellen Maschinen eine eigene virtuelle Konsole auf dem Host.

# Press CTRL-ALT-F5, login and enter this command:
startx /usr/bin/virt-viewer -a -k -r -w -c qemu:///system CentOS -- :4

# Press CTRL-ALT-F6, login and enter this command:
startx /usr/bin/virt-viewer -a -k -r -w -c qemu:///system Windows -- :5

Der Befehl "startx" startet den Xorg X-Server auf den Anzeigen: 4 und: 5 nur mit virt-viewer als Client.

"CentOS" und "Windows" sind die Namen, die ich meinen virtuellen Maschinen bei der Installation gegeben habe. Mit der Option -k für virt-viewer wird der gesamte Bildschirm mit minimalen Steuerelementen angezeigt, sodass jeder virtuellen Maschine scheinbar der Computer gehört, bis ich STRG-ALT-Fn drücke, um zu einer anderen virtuellen Konsole zu wechseln.

Natürlich führt CentOS einen Display-Manager und einen Window-Manager in der virtuellen Maschine aus, aber das hat keine Verbindung mit dem X-Server, der auf dem Host ausgeführt wird.

Ken Jackson
quelle