Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Du serveur X au bureau que j'utilise...

34 réponses
Avatar
Tanguy Briançon
Bonjour,

Je me pose des questions sur la manière dont les systèmes GNU/Linux
(ou BSD...) gère l'affichage graphique. La couche basse est
le serveur Xorg mais qu'elle est son role?
Après il y a un gestionnaire de fenêtre? Puis de bureau
(KDE, Gnome)? Ou se situe Compiz la dedans? J'utlise
gnome (car je n'ai pas réussi à avoir une barre
de tache par écran sous KDE et j'ai deux écrans).
J'utlise souvent des programmes KDE (Dolphin & K3B)
qui marche bien sous gnome...

Si vous avez une référence sur la la manière dont
sont organisées ces différentes couches...

Dans le genre: ça ne sert à rien mais c'est marrant
j'ai lancé la lecture de 3 divx avec mplayer: 1 sur
chaqu'un des deux écrans du bureau un et un autre sur un des écrans
du bureau deux. Quand on fait tourner le cube de compiz
(un cube par écran) les trois restent fluides... On peut
faire ça avec windows?

Tanguy

10 réponses

1 2 3 4
Avatar
Nicolas George
Tanguy Briançon , dans le message
<4f19c75a$0$10628$, a écrit :
j'ai, a priori, besoin de fonctions de bases:

- creer une fenêtre
- Dessiner un pixel au point x*y (en partant en haut à gauche de
la fenêtre) dans la fenêtre.
- Dessiner un segment et un cercle (pour le cercle j'ai codé en c
l'algo de Bresenham, pour le segment c'est faisable...)
- Savoir quelle touche à été frappé (si c'est mon programme
qui a le focus)
- Creer des fenetres "invisible" puis tracer dedans et faire
des copier coller entre la fenêtre visible et l'invisible.
Du genre copy(x_0,x_1,y_0,y_1,&fen1,&fen2).



Oui et non. Tu as besoin de ça, mais ce n'est ni aussi simple ni aussi
compliqué.

Ce n'est pas aussi compliqué au sens où tu as des toolkits qui combinent
tout ça dans une interface plus facile à utiliser. Je conseille vivement
Gtk+ pour ça.

Ce n'est pas aussi simple au sens où ton application n'est pas la seule à
tourner, et doit donc être capable de réagir à des événements liés à cette
situation, comme devoir redessiner à tout moment n'importe quelle portion de
la fenêtre qui vient d'être découverte.

Globalement ce n'est pas très compliqué, mais on ne peut pas y arriver en y
allant avec les idées venues du monde monotâche plein écran, il faut
réapprendre.

J'ai aussi besoin de connaitre la dimension de la fenêtre:
sous hp49g+ je connais la taille de l'écran mais si c'est dans une
fenêtre dont on modifie la taille... Ou bien de créer une fenêtre de
taille fixe dont le gestionnaire de fenêtre
interdit la redimension...



La première solution est clairement la bonne.
Avatar
Tanguy Briançon
On 22/01/2012 09:30, Nicolas George wrote:
Tanguy Briançon , dans le message
<4f19bc4c$0$646$, a écrit :
Donc basiquement un programme envoie au serveur X des requetes
du genre:
-creer_une fentre 200*2000
-Dessine dans cette fenetre un cercle centré en 40,40 de rayon 30
le programme reçoit des infos du genre
on a cliqué en 35,35
la touche k (ou de code machin...) a été appuyé.
J'ai compris ou pas?



Oui, c'est ça.

Donc je reprends mon exemple précédant:
Je cree une nouvelle fenetre
X11 prévient le gestionnaire de fenetre qui dit au serveur X de creer
une fenetre et colle le contenu de ma fenetre dedans et ajoute la
déco...



Voilà. Un petit détail : les fenêtres sont emboîtées, hiérarchisées : il y a
la fenêtre racine au départ, puis les fenêtres d'applications dans la
fenêtre racine, et chaque application peut créer des sous-fenêtres dans ses
propres fenêtres, par exemple pour un bouton ou une liste défilante.

Le gestionnaire de fenêtre n'est notifié que pour les fenêtres ajoutées à la
racine.



Je ne comprends pas bien le terme de fenetre racine: c'est une fenetre
qui occupe tout le(s) bureau(x)?

(En fait, n'importe quel client peut créer une fenêtre dans n'importe quelle
fenêtre, pas seulement les siennes. Mais si les clients n'ont pas un minimum
de discipline, ça va mal se passer.)



Oui on peut imaginer des problèmes voir des gags...


Remarque: il m'est déja arrivé d'avoir les fenetres sans la déco: j'en
déduis que c'est alors le gestionnaire de fenêtre qui s'est planté?



Il est également possible, pour une application de demander qu'une fenêtre
n'ait pas telle ou telle décoration (pour les boîtes de dialogue, par
exemple ; c'est une demande protocolaire au gestionnaire de fenêtres), voire
soit carrément dispensée de gestion (pour les menus déroulants ; c'est une
demande directement à X11), donc impossible de désigner le coupable avec si
peu d'information.



Merci pour les précisions. Je parlais d' un cas toutes les décos des
fenêtres disparus (bordures, ascenseur etc...)



La il y a quelque chose que je ne comprends pas... Une application
s'adresse directement à X11 qui redonne les infos à Compiz?



Oui : quand l'application demande de dessiner dans la fenêtre, X11 dessine
dans un buffer en mémoire à la place, et périodiquement Compiz fait des
choses avec ce buffer.



Quand tu dis en méméoire j'imagine que c'est dans la mémoire de la
carte graphique? (Sauf si plus de place ou driver mal fichus?).

Encpre merci pour les infos.
Avatar
Tanguy Briançon
On 22/01/2012 09:36, Nicolas George wrote:
Tanguy Briançon , dans le message
<4f19c75a$0$10628$, a écrit :
j'ai, a priori, besoin de fonctions de bases:

- creer une fenêtre
- Dessiner un pixel au point x*y (en partant en haut à gauche de
la fenêtre) dans la fenêtre.
- Dessiner un segment et un cercle (pour le cercle j'ai codé en c
l'algo de Bresenham, pour le segment c'est faisable...)
- Savoir quelle touche à été frappé (si c'est mon programme
qui a le focus)
- Creer des fenetres "invisible" puis tracer dedans et faire
des copier coller entre la fenêtre visible et l'invisible.
Du genre copy(x_0,x_1,y_0,y_1,&fen1,&fen2).



Oui et non. Tu as besoin de ça, mais ce n'est ni aussi simple ni aussi
compliqué.

Ce n'est pas aussi compliqué au sens où tu as des toolkits qui combinent
tout ça dans une interface plus facile à utiliser. Je conseille vivement
Gtk+ pour ça.



Mon but n'est pas vraiment de porter mes applis sous gnu/linux
(il existe déja de très bon logiciels pour cela). Mais plutot
de pouvoir tester et debugger avant le transfert vers la hp. Donc
je ne veux (peux) pas utiliser des librairies trop sophistiqués...

Ce n'est pas aussi simple au sens où ton application n'est pas la seule à
tourner, et doit donc être capable de réagir à des événements liés à cette
situation, comme devoir redessiner à tout moment n'importe quelle portion de
la fenêtre qui vient d'être découverte.

Globalement ce n'est pas très compliqué, mais on ne peut pas y arriver en y
allant avec les idées venues du monde monotâche plein écran, il faut
réapprendre.



Ok. Une référence pour apprendre tout ça? (livre ou
site web?)


J'ai aussi besoin de connaitre la dimension de la fenêtre:
sous hp49g+ je connais la taille de l'écran mais si c'est dans une
fenêtre dont on modifie la taille... Ou bien de créer une fenêtre de
taille fixe dont le gestionnaire de fenêtre
interdit la redimension...



La première solution est clairement la bonne.



Sans doute. La taille de l'écran (de la hp) est dans deux constantes.
Je dois pouvoir en faire des variables...
Avatar
Nicolas George
Tanguy Briançon , dans le message
<4f1bd03c$0$26994$, a écrit :
Je ne comprends pas bien le terme de fenetre racine: c'est une fenetre
qui occupe tout le(s) bureau(x)?



Une fenêtre qui occupe tout l'écran, et qui en fait _est_ l'écran.

Les bureaux n'ont pas d'existence à proprement parler, c'est juste une
astuce de présentation que pratique le gestionnaire de fenêtres en déplaçant
astucieusement les fenêtres.

Merci pour les précisions. Je parlais d' un cas toutes les décos des
fenêtres disparus (bordures, ascenseur etc...)



Les ascenseurs ne font pas partie des décoration. Ce que tu décris ressemble
plutôt à une application qui ne réagit plus, et donc ne redessine plus son
contenu.

Quand tu dis en méméoire j'imagine que c'est dans la mémoire de la
carte graphique? (Sauf si plus de place ou driver mal fichus?).



Pas forcément non. Mais je n'ai pas regardé en détail.
Avatar
Nicolas George
Tanguy Briançon , dans le message
<4f1bd40d$0$25958$, a écrit :
Mon but n'est pas vraiment de porter mes applis sous gnu/linux
(il existe déja de très bon logiciels pour cela). Mais plutot
de pouvoir tester et debugger avant le transfert vers la hp. Donc
je ne veux (peux) pas utiliser des librairies trop sophistiqués...



Alors là, je doute que tu arrives à quoi que ce soit : les deux
environnements sont trop différents. Tu t'en sortirais mieux avec un
émulateur.

Ok. Une référence pour apprendre tout ça? (livre ou
site web?)



De mémoire, Gtk+ a de bons tutoriels.
Avatar
Tonton Th
On 01/22/2012 09:59 AM, Tanguy Briançon wrote:

Le gestionnaire de fenêtre n'est notifié que pour les fenêtres
ajoutées à la
racine.



Je ne comprends pas bien le terme de fenetre racine: c'est une fenetre
qui occupe tout le(s) bureau(x)?



C'est l'intégralité de l'écran, qu'il soit physique ou
logique. En gros, la fenêtre racine, c'est celle où
l'on place le wallpaper.

--

Nous vivons dans un monde étrange/
http://foo.bar.quux.over-blog.com/
Avatar
Tanguy Briançon
On 22/01/2012 12:27, Nicolas George wrote:
Tanguy Briançon , dans le message
<4f1bd03c$0$26994$, a écrit :
Je ne comprends pas bien le terme de fenetre racine: c'est une fenetre
qui occupe tout le(s) bureau(x)?



Une fenêtre qui occupe tout l'écran, et qui en fait _est_ l'écran.



J'ai deux écrans physique mais je n'ai qu'une une fenetre racine?
(je peux mettre des fenetres à cheval sur deux écrans: sans interet
mais bon).


Les bureaux n'ont pas d'existence à proprement parler, c'est juste une
astuce de présentation que pratique le gestionnaire de fenêtres en déplaçant
astucieusement les fenêtres.

Merci pour les précisions. Je parlais d' un cas toutes les décos des
fenêtres disparus (bordures, ascenseur etc...)



Les ascenseurs ne font pas partie des décoration. Ce que tu décris ressemble
plutôt à une application qui ne réagit plus, et donc ne redessine plus son
contenu.



Sans doute mais je crois qu'une fois toutes les décos avait disparus:
j'avais un écran noir et toutes les fenetres avaient perdus leurs
décos.

Quand tu dis en méméoire j'imagine que c'est dans la mémoire de la
carte graphique? (Sauf si plus de place ou driver mal fichus?).



Pas forcément non. Mais je n'ai pas regardé en détail.
Avatar
Tanguy Briançon
On 22/01/2012 12:28, Nicolas George wrote:
Tanguy Briançon , dans le message
<4f1bd40d$0$25958$, a écrit :
Mon but n'est pas vraiment de porter mes applis sous gnu/linux
(il existe déja de très bon logiciels pour cela). Mais plutot
de pouvoir tester et debugger avant le transfert vers la hp. Donc
je ne veux (peux) pas utiliser des librairies trop sophistiqués...



Alors là, je doute que tu arrives à quoi que ce soit : les deux
environnements sont trop différents. Tu t'en sortirais mieux avec un
émulateur.



Hélas il n'existe pas je crois d'émulateur hp49g+/50.
(En faite une hp50 est en elle même un émulateur: elle
émule avec un arm le processeur saturn des hps précédantes.
La plus part du code reste du code saturn). Par contre
en C on peut programmer directement pour le processeur ARM et
la vitesse n'a rien a voir (le tracé d'une courbe est immédiat en C
avec geohp, plus lent avec le programme interne)...

Ok. Une référence pour apprendre tout ça? (livre ou
site web?)



De mémoire, Gtk+ a de bons tutoriels.



Je vais essayer de voir ça.
Avatar
Nicolas George
Tanguy Briançon , dans le message
<4f1c3d54$0$6544$, a écrit :
J'ai deux écrans physique mais je n'ai qu'une une fenetre racine?



Oui. Sauf si tu utilises le mode Zaphod, mais il n'est plus supporté par la
plupart des drivers.

(je peux mettre des fenetres à cheval sur deux écrans: sans interet
mais bon).



Tu ne pourrais pas s'il y avait une fenêtre racine par écran.

Sans doute mais je crois qu'une fois toutes les décos avait disparus:
j'avais un écran noir et toutes les fenetres avaient perdus leurs
décos.



Si des décorations qui étaient présentes ont disparu, c'est bizarre, parce
que la session devrait se terminer avec le crash du WM.
Avatar
Nicolas George
Tanguy Briançon , dans le message
<4f1c446e$0$3683$, a écrit :
Hélas il n'existe pas je crois d'émulateur hp49g+/50.



Alors il faudra te bricoler ton propre environnement d'émulation : tu ne
peux pas espérer tester des application prévues pour un environnement aussi
étranger directement.
1 2 3 4