Faire du fullscreen sous X11

 

Le fullscreen consiste a utiliser la totalité de la surface de l'écran pour son application.

Le principe est généralement le suivant:

- Passer l'écran dans la résolution désirée.

- Créer une fenêtre sans bordure ni titre sur la totalité de la surface de l'écran.

- Positionner cette fenêtre au coin supérieur gauche de l'écran.

 

Le problème, c'est qu'avec X Window, vous ne pouvez qu'émettre des souhaits sur la manière de dessiner ou de positionner une fenêtre. Car au final, c'est le window Manager qui décide du rendu de la fenêtre.

Seule la longueur et la hauteur de la fenêtre sera respectée.

 

Pour changer de résolution, nous avons déjà vu qu'il y avait une solution en utilisant XFree86 Vidéo.

En ce qui concerne la position et la manière de dessiner une fenêtre, il reste une solution...

Tout d'abord créer une fenêtre X Window normalement,

Puis il faut communiquer avec le window Manager et lui demander s'il est possible de le modifier:

Pour cela, nous aurons besoin de l'atome définissant le style: "_MOTIF_WM_HINTS

property = XInternAtom(display,"_MOTIF_WM_HINTS",True);

 

Enfin, changer la forme de la fenêtre si la fonction précédente n'a pas retourné 0:

XChangeProperty(display,window,property,property,32,PropModeReplace,(unsigned char *)&hints,5);

Cette solution n'est cependant pas parfaite:

En effet, si vous décidez de mettre votre écran fullscreen dans la même résolution que votre session X Window, vous verrez apparaître la barre de tâches en bas de l'écran. Si vous ne voulez pas la voir, il faudra utiliser des résolutions inférieures. Ainsi, le viewport pourra être positionné en dehors de la zone de la barre de tâches.