web-dev-qa-db-fra.com

Un client X a-t-il nécessairement besoin d'un gestionnaire de fenêtres pour fonctionner?

Un client X a-t-il nécessairement besoin d'un gestionnaire de fenêtres pour fonctionner? Un client X peut-il fonctionner uniquement avec le serveur X?

Si un client X n'a ​​pas de fenêtre , est-ce que cela peut fonctionner a besoin d'un gestionnaire de fenêtres?

Si un client X peut fonctionner sans gestionnaire de fenêtres, le client X n'a-t-il pas nécessairement de fenêtre?

Merci.

32
Tim

Non. Les applications bien écrites n'ont pas besoin d'un gestionnaire de fenêtres.

Mais certaines applications cassées "modernes" ne fonctionneront pas correctement sans un gestionnaire de fenêtres (par exemple, Firefox et ses suggestions de barre d'adresse qui ne tomberont pas [1]).

De nombreuses autres applications de qualité inférieure non seulement supposez un gestionnaire de fenêtres, mais pour ajouter l'insulte aux blessures, un cliquez pour vous concentrer gestionnaire de fenêtres. Par exemple, autrefois, n'importe quelle application Java volerait simplement l'attention au démarrage.

Si vous voulez tester, installez Xephyr (un serveur X11 "imbriqué"), exécutez-le avec Xephyr :1, puis démarrez vos applications avec DISPLAY=:1 dans leur environnement.

[1] la "barre impressionnante" de Firefox n'ouvrira pas son volet de suggestions lorsqu'elle est tapée ou cliquée sur le bouton d'historique à moins qu'un gestionnaire de fenêtres ne soit en cours d'exécution. Le menu de masquage automatique ne fonctionnera pas non plus.

26
mosvy

Non, vous n'avez pas besoin d'exécuter un gestionnaire de fenêtres pour permettre à un client X de fonctionner. Certains systèmes offrent une option pour exécuter simplement un terminal au démarrage, et à partir de là, vous pouvez démarrer des programmes supplémentaires, y compris des gestionnaires de fenêtres. Certaines configurations de kiosque qui ne souhaitent exécuter qu'une seule application n'ont pas besoin d'un gestionnaire de fenêtres. Certaines implémentations de X pour Microsoft Windows évitent un gestionnaire de fenêtres X en laissant le système d'exploitation gérer les fenêtres.

Sans gestionnaire de fenêtres, vous devez généralement spécifier la géométrie des programmes afin que tout ne soit pas placé dans le coin supérieur gauche.

Dans X, le gestionnaire de fenêtres n'est qu'un autre client X. C'était inhabituel à l'époque, mais il était facile d'avoir différents gestionnaires de fenêtres.

Une autre façon de voir la question est d'observer que vous pouvez changer de gestionnaire de fenêtres à la volée, donc il y a un temps entre le premier arrêt et le second qui prend le contrôle, mais comme toutes vos applications ne plantent pas, elles doivent pouvoir travailler sans.

38
icarus

Un gestionnaire de fenêtres est une commodité pour les utilisateurs.

Au bon temps ^ Wbad jadis, j'avais un ~/.Xclients fichier qui lit:

#!/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

Ce fichier serait exécuté lorsque j'ai démarré X avec startx. Une fois ce script terminé, le serveur X s'arrête.

Notez la dernière ligne: exec .../fvwm. C'est la ligne qui a démarré mon gestionnaire de fenêtres (fvwm). Toutes les applications précédentes (xv, xterm, xclock, xscreensaver) étaient en cours d'exécution avant le démarrage du gestionnaire de fenêtres. Parce que l'appel à fvwm était la dernière ligne et pas mis en arrière-plan, cela signifiait que lorsque fvwm se terminait, X se fermait.

Le démarrage de X avait même une valeur par défaut de "repli" ... s'il n'y avait pas de fichiers de configuration, alors démarrez X avec un seul xterm en cours d'exécution. La fermeture de xterm mettrait fin à la session X.

7
Stephen Harris

Pour ajouter à d'autres réponses, j'ai développé et publié une application open source qui fonctionne sans gestionnaire de fenêtres (ce qui signifie que vous pouvez le démarrer directement à partir de xinitrc). Il y a quelques étapes supplémentaires que l'application devrait faire dans ce cas en plus de gérer la géométrie et l'ordre Z de ses boîtes de dialogue, mais cela est totalement gérable.

6
George Y.

Il y a beaucoup de bonnes réponses détaillées ici. Voici la réponse claire et simple.

Un client X a-t-il nécessairement besoin d'un gestionnaire de fenêtres pour fonctionner?

Non: Mais sans si vous aurez du mal à gérer vos fenêtres (déplacement, redimensionnement, abaissement, élévation, etc.). Il existe d'autres outils qui peuvent le faire, si vous en avez besoin.

Un client X peut-il fonctionner uniquement avec le serveur X?

Oui

Si un client X n'a ​​pas de fenêtre, est-ce qu'il peut fonctionner avec un gestionnaire de fenêtres?

S'il n'a pas de fenêtres, il ne devrait y avoir aucun inconvénient à ne pas avoir de gestionnaire de fenêtres.

Si un client X peut fonctionner sans gestionnaire de fenêtres, le client X n'a-t-il pas nécessairement de fenêtre?

Non: il peut avoir des fenêtres.

Essaye ça.

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

puis dans le nouveau xterm tapez fvwm.

Vous devrez peut-être d'abord installer vncserver, ssvnc et fvwm.

1
ctrl-alt-delor

Oui, un client X ne peut fonctionner qu'avec le serveur X. À titre d'exemple, je donne à mes machines virtuelles leur propre console virtuelle sur l'hôte, comme ceci.

# 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

La commande "startx" démarre le serveur Xorg X sur les écrans: 4 et: 5 avec seulement virt-viewer comme client.

"CentOS" et "Windows" sont les noms que j'ai donnés à mes machines virtuelles lorsque je les ai installées. Le commutateur - k pour virt-viewer le rend plein écran avec un minimum de contrôles, donc chaque machine virtuelle semble posséder la machine jusqu'à ce que j'appuie sur CTRL-ALT-Fn pour basculer vers une autre console virtuelle.

Bien sûr, CentOS exécute un gestionnaire d'affichage et un gestionnaire de fenêtres à l'intérieur de la machine virtuelle, mais qui n'a aucune connexion avec le serveur X exécuté sur l'hôte.

1
Ken Jackson