# Fenêtre pour confiner une application plein écran

**URL:** <https://www.debian-fr.org/t/fenetre-pour-confiner-une-application-plein-ecran/88840>\
**Category:** Support Debian\
**Tags:** virtualisation, moniteur\
**Created:** [Septembre 22, 2023, 8:54 UTC](https://www.debian-fr.org/t/fenetre-pour-confiner-une-application-plein-ecran/88840 "2023-09-22T08:54:02Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![lenainjaune](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lenainjaune/32/10925_2.png) [@lenainjaune](https://www.debian-fr.org/u/lenainjaune)\
**Post date:** [Septembre 22, 2023, 8:54 UTC](https://www.debian-fr.org/t/fenetre-pour-confiner-une-application-plein-ecran/88840/1 "2023-09-22T08:54:02Z")

</div>

Coucou tout le monde 🙂

[edit]Je ne sais pas si je suis dans la bonne rubrique, si ce n’est pas le cas désolé ![/edit]

Je viens de découvrir Weylus ([rendu visuel](https://github.com/H-M-H/Weylus#weylus)) pour dessiner à distance (ex : Gimp) depuis mon smartphone aux dimensions incompatibles avec mes moniteurs, ce qui donne des zones «&nbsp;mortes&nbsp;» (voir [ce fil](https://www.gimp-forum.net/Thread-Toggle-drawing-area-to-the-most-widely-as-possible?pid=36075#pid36075) dédié Gimp).

Je me suis donc demandé si je ne pouvais pas «&nbsp;confiner&nbsp;» mon application en plein écran dans une fenêtre à l’échelle.

J’ai découvert qu’on pouvait [créer un moniteur virtuel](https://chipsenkbeil.com/notes/linux-virtual-monitors-with-xrandr/) mais qui resterait lié aux moniteurs physiques (pertinent ?).

Est-ce possible ? Comment ?

Note : je peux détailler si ça ne semble pas clair …

Merci d’avance pour le temps que vous m’accorderez 😃

Avec adelphité,  
lnj

---

<div class="post-metadata">

**Author:** ![lenainjaune](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lenainjaune/32/10925_2.png) [@lenainjaune](https://www.debian-fr.org/u/lenainjaune)\
**Post date:** [Septembre 24, 2023, 9:40 UTC](https://www.debian-fr.org/t/fenetre-pour-confiner-une-application-plein-ecran/88840/2 "2023-09-24T09:40:18Z")

</div>

Nos beaux dits ?

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Septembre 24, 2023, 11:39 UTC](https://www.debian-fr.org/t/fenetre-pour-confiner-une-application-plein-ecran/88840/3 "2023-09-24T11:39:55Z")

</div>

Si, je suis là et je suis le sujet car c’est quelque chose que j’aimerai bien pouvoir faire, mais je ne vois pas comment faire.  
J’avais essayé avec Xephyr (ou un truc du genre), mais ça n’avais pas fonctionné (je ne sais plus ce que j’avais eu comme problème).

---

<div class="post-metadata">

**Author:** ![lenainjaune](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lenainjaune/32/10925_2.png) [@lenainjaune](https://www.debian-fr.org/u/lenainjaune)\
**Post date:** [Septembre 24, 2023, 12:48 UTC](https://www.debian-fr.org/t/fenetre-pour-confiner-une-application-plein-ecran/88840/4 "2023-09-24T12:48:54Z")

</div>

Hello et merci pour ta participation 😀

> [@Almtesh](#):
>
> J’avais essayé avec Xephyr (ou un truc du genre), mais ça n’avais pas fonctionné (je ne sais plus ce que j’avais eu comme problème).

Waouh ! Nickel, je ne connaissais pas.

Je suis en train de tester mais pour l’instant il y a des trucs problématiques que je ne m’explique pas : certaines applications s’affichent au coin en haut à gauche de la fenêtre Xephyr (mousepad,audacity), d’autres à une position bizarre et affichent ou pas totalité de leur fenêtre (gimp, vlc), d’autres se lancent mais n’affichent rien (blender ; j’imagine qu’il y a un relais à faire avec la bibliothèque graphique) ; mais dans tous les cas je n’arrive pas à déplacer toutes les fenêtres intégrées (cas de gimp), ni les redimensionner, ni à les mettre en plein écran sur la fenêtre Xephyr (vlc se met bien en plein écran mais sur son espace propre).

Mon dernier test :  
`Xephyr -resizeable -nocursor -ac -softCursor -screen 1024x768 :1`

[edit]Je viens de tester la création d’une fenêtre plus grande que le moniteur physique mais qui peut être redimensionnée avec succès : `Xephyr -resizeable -nocursor -ac -softCursor -screen 2312x1080 :1`[/edit]

J’ai vu qu’il y avait toute une foule de paramètres possibles, mais lesquels sont pertinents ? Mystère …

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Septembre 24, 2023, 2:08 UTC](https://www.debian-fr.org/t/fenetre-pour-confiner-une-application-plein-ecran/88840/5 "2023-09-24T14:08:40Z")

</div>

> [@lenainjaune](#):
>
> certaines applications s’affichent au coin en haut à gauche de la fenêtre Xephyr

Ah oui, je me souviens, en fait, tu as un serveur X11 nu, comme il n’y a pas de gestionnaire de fenêtres, tu ne peux pas redimensionner les fenêtres et elles ont une taille qui est rarement celle que tu veux. Quand je l’ai remarqué, j’ai eu une poussée de flemmingite aiguë et j’ai laissé tomber.  
Tu peux essayer de lancer le gestionnaire de fenêtre de ton environnement de bureau ou un qui serait plus léger.

---

<div class="post-metadata">

**Author:** ![lenainjaune](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lenainjaune/32/10925_2.png) [@lenainjaune](https://www.debian-fr.org/u/lenainjaune)\
**Post date:** [Septembre 26, 2023, 9:15 UTC](https://www.debian-fr.org/t/fenetre-pour-confiner-une-application-plein-ecran/88840/6 "2023-09-26T09:15:32Z")

</div>

Alors …

Mon choix de DE léger s’est porté sur **openbox** , je vous propose mon retour 🙂

# Installation de **Xephyr** et **Openbox** (D11) :

```sh
user@host:~ # apt install -y xserver-xephyr
user@host:~ # apt install --no-install-recommends -y openbox obconf

```

# Ajouter une nouvelle fenêtre de confinement pour gimp

Attention : ici on ne gère pas l’utilisation de multiple fenêtres, donc bien tuer chaque fenêtre avant d’en ouvrir une autre …

Bug visuel : quand on verrouille la taille d’une fenêtre, sur les bords le curseur garde son aspect de redimensionnement même si c’est impossible

On ouvre un autre affichage à l’échelle de la taille de l’écran du smartphone (dans mon cas en 2312 x 1080) :

```
# Sur écran physique 1680x1050
user@host:$ Xephyr -resizeable -nocursor -ac -softCursor \
-nolock -zaphod -screen 1156x540 -title 'WM_NAME_TITLE' :1

# Sur écran physique 1920x1080
user@host:$ Xephyr -resizeable -nocursor -ac -softCursor \
-nolock -zaphod -screen 1734x810 -title 'TITRE_XEPHYR' :1

```

> **Notes sur les paramètres**
>
> Notes (`Xephyr --help` plus complet que `man Xephyr`) :  
> `-nolock` ne peut être utilisé que par root  
> `-zaphod` empêche de changer d’espace de travail (il me semble ; à revoir)  
> `-resizeable` (optionnel) permet de redimensionner (pas utile dans mon cas)  
> `-nocursor` enlève le curseur X de Xorg  
> `-softCursor` fait la jointure avec le DE en cours (à revérifier)  
> `-ac` je ne suis pas sûr que ce soit nécessaire  
> `:1` est le numéro d’affichage (variable **DISPLAY** )

## Fenêtre NON identifiable sous weylus

Dans mon cas, l’application `weylus` ne doit PAS lire la bonne propriété, ce qui donne des titres de fenêtre **UNKNOWN** (pas super pratique ; voir imprimé dessous)

> **Détails pour la résolution**
>
> Quelle est la propriété que `weylus` lit ?
> 
> En exécutant `xprop` interactivement (quand le **+** apparaît, je clicke dans la fenêtre `Xephyr`) :
> 
> ```
> user@host:$ xprop | grep -TITRE_XEPHYR
> WM_NAME(STRING) = "TITRE_XEPHYR"
> 
> ```
> 
> Donc seul **WM\_NAME** est disponible.
> 
> Or les autres fenêtres qui ont un nom identifiable ont d’autres propriétés.
> 
> Par exemple `xprop` sur CETTE page de mon navigateur `firefox` donne :
> 
> ```
> user@host:$ xprop \
> | grep "Fenêtre pour confiner une application plein écran ..."
> WM_ICON_NAME(STRING) = "Fenêtre pour confiner ..."
> _NET_WM_ICON_NAME(UTF8_STRING) = "Fenêtre pour confiner ..."
> WM_NAME(STRING) = "Fenêtre pour confiner ..."
> _NET_WM_NAME(UTF8_STRING) = "Fenêtre pour confiner ..."
> 
> ```
> 
> On voit 2 propriétés NAME intéressantes (ICON semble hors sujet) : **WM\_NAME** (STRING) et **\_NET\_WM\_NAME** (UTF8\_STRING)
> 
> J’en déduis que `weylus` lit **\_NET\_WM\_NAME** qui n’existe pas.
> 
> On va tenter d’ajouter manuellement la propriété **NET\_WM\_NAME**.
> 
> Il faut d’abord obtenir l’ID de la fenêtre soit interactivement avec `xwininfo` + click, soit en se basant sur la propriété **WM\_NAME** :
> 
> ```
> user@host:$ xwininfo -tree -root | grep TITRE_XEPHYR
> 0x2c00026 "TITRE_XEPHYR": ...
> # => ici ID de fenêtre = 0x2c00026
> 
> user@host:$ ID=$( xwininfo -tree -root \
> | awk '/TITRE_XEPHYR/ { print $1 }' )
> 
> # Vérifier
> user@host:$ xprop -id $ID | grep WM_NAME
> WM_NAME(STRING) = "TITRE_XEPHYR"
> 
> ```
> 
> Alors seulement on peut ajouter la nouvelle propriété :
> 
> ```
> user@host:$ xprop -id $ID -f _NET_WM_NAME 8u \
> -set _NET_WM_NAME "gimp dans openbox sur Xephyr"
> 
> # Vérifier que la nouvelle propriété a été ajoutée 
> user@host:$ xprop -id $ID | grep WM_NAME
> _NET_WM_NAME(UTF8_STRING) = "gimp dans openbox sur xephyr"
> WM_NAME(STRING) = "TITRE_XEPHYR"
> # => OK
> 
> ```
> 
> Et … tadaaaaaa la fenêtre est identifiable 😃 !!!

Il suffisait donc d’ajouter la propriété **\_NET\_WM\_NAME** :

```
user@host:$ ID=$( xwininfo -tree -root \
| awk '/TITRE_XEPHYR/ { print $1 }' )

user@host:$ xprop -id $ID -f _NET_WM_NAME 8u \
 -set _NET_WM_NAME "gimp dans openbox sur xephyr"

```

Et la fenêtre est correctement identifiée par `weylus` depuis mon smartphone :

 ![image](https://www.debian-fr.org/uploads/default/original/2X/a/a791a80d42d3b72320559ed8ca0f164d7f465302.png)

# Configurer openbox pour que gimp s’ouvre en fullscreen

Avertissement : pour éviter de quitter prématurément la session utilisateur en cours sans avertissement (j’en ai fait les frais 😉 ), j’ai désactivé dans un 2e temps le menu `openbox` pour contraindre à fermer par la fenêtre `Xephyr` en mettant en commentaire la ligne qui ouvre le menu (rappel : en XML un commentaire est contenu entre `<!-- et -->`). Au final, un click dans l’espace `openbox`, indiquera une erreur comme quoi le menu n’est pas disponible.

Voir aussi : [http://openbox.org/wiki/Help:Applications](http://openbox.org/wiki/Help:Applications)

```
user@host:$ mkdir $HOME/.config/openbox
user@host:$ grep -c @ /etc/xdg/openbox/rc.xml | 
0
user@host:$ cat /etc/xdg/openbox/rc.xml | tr '\n' '@' \
| sed -e 's'\
'#<applications>@<!--@'\
'#<applications>'\
'@ <application name="gimp*">'\
'@ <fullscreen>yes</fullscreen>'\
'@ </application>@<!--@'\
'#g' \
-e 's@<file>menu.xml</file>@<!-- file>menu.xml</file -->@g' \
| tr '@' '\n' > $HOME/.config/openbox/rc_Xephyr.xml

```

> **Explications**
>
> - `tr` convertit les sauts de ligne **\n** en **@** au début puis à fin fait l’opération inverse (j’ai vérifié avant que le fichier ne contenait pas de **@** ) et j’ai utilisé **#** comme séparateur de la commande substitution de `sed` pour clarifier l’écriture
> - pour autoriser uniquement le fullscreen pour `gimp`, on filtre avec la propriété **name** (voir aussi [ceci](http://openbox.org/wiki/Help:Applications))

> **Vérification**
>
> ```
> user@host:$ cat $HOME/.config/openbox/rc_Xephyr.xml
> ...
> <!-- file>menu.xml</file -->
> ...
> <applications>
> <application name="gimp*">
> <fullscreen>yes</fullscreen>
> </application>
> </applications>
> </openbox_config>
> 
> ```
> 
> =\> OK

# Ouvrir gimp dans openbox depuis une fenêtre de confinement Xephyr

Ajouter une nouvelle fenêtre de confinement `Xephyr` en tant que **DISPLAY**  **:1** (voir dessus).

Ouvrir gimp dans un DE `openbox` confiné dans le **DISPLAY**  **:1**

```
user@host:$ DISPLAY=:1 openbox \
 --config-file $HOME/.config/openbox/rc_Xephyr.xml \
 --startup gimp

```

Et voilà 😃 !!!

Un exemple de fenêtre gimp confinée (zone de dessin sans et avec groupes de fenêtres - docks) :

 ![image](https://www.debian-fr.org/uploads/default/original/2X/7/733a3ddae6ac4ce76a528728e8205c171187b43f.png) ![image](https://www.debian-fr.org/uploads/default/original/2X/1/1d905884ac6a71256bba1062f82abc41ca328d07.png)

* * *

Donc mille merci pour Xephyr, bien utile 😉 !

Problème résolu !

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Septembre 28, 2023, 11:42 UTC](https://www.debian-fr.org/t/fenetre-pour-confiner-une-application-plein-ecran/88840/7 "2023-09-28T11:42:57Z")

</div>

Ah, super, si je veux retenter d’utiliser Xephyr à l’occasion, je tenterai de faire comment tu as fait.
