Pour exposer une seule fenêtre d'une application déjà lancée x11vnc prend en charge le partage d'une fenêtre en fonction de son identifiant,
x11vnc -id 0x200002
xwininfo permet de récupérer l'ID d'une fenêtre:
x11vnc -id win_id
en utilisant l'identifiant win_id récupéré ci-dessus.# créer un affichage virtuel sur le nœud de calcul Xvnc :33 & # lancer l'application sur cet écran virtuel export DISPLAY=:33 glxgears & # découvrir son identifiant de fenêtre xwininfo -root -children # -> xwininfo: ID de la fenêtre: 0xdc (la fenêtre racine) (n'a pas de nom) # # Root window id: 0xdc (the root window) (has no name) # Parent window id: 0x0 (none) # 1 child: # 0x200002 "glxgears": () 300x300+0+0 +0+0 # démarrer le serveur vnc avec ce xid spécifique x11vnc -id 0x200002 &
pour récupérer l'ID de la fenêtre dans une variable:
window_id=$(xwininfo -root -tree | grep glxgears | tail -n1 | sed "s/^[ \t]*//" | cut -d ' ' -f1)
On obtient donc:
xwininfo -root -tree
l'arborescence, grep glxgears
filtrage du programme que l'on recherche, tail -n1
la dernière option, sed "s/^[ \t]*//"
suppression des espaces blancs de fin, cut -d ' ' -f1
la première colonne uniquement et la sauvegarde. x11vnc -id $window_id &
Pour récupérer l'ID de la fenêtre en ligne de commande:
echo "Select Window...";x11vnc -id $(xwininfo|grep -oP '(?<=id: ).*(?= ")') -viewonly -forever
Ou un plus court:
x11vnc -id pick -viewonly -forever
Apache Guacamole est une passerelle de bureau à distance sans client. Il prend en charge les protocoles standard tels que VNC, RDP et SSH.
Par exemple on peut partager une unique application ouverte dans une fenêtre de bureau (pour une présentation) en utilisant une session x11vnc avec guacamole:
echo "Select Window...";x11vnc -shared -id $(xwininfo|grep -oP '(?<=id: ).*(?= ")') -forever -viewonly
Le commutateur -shared de la commande x11vnc autorise la connexion de plusieurs clients sur la même session
/etc/guacamole/user-mapping.xml
sudo sed -i -e '/termvnc/ s/password=".*"/password="'$(openssl rand -base64 14)'"/g' /etc/guacamole/user-mapping.xml ; wait 2; sed -n '/termvnc/p' /etc/guacamole/user-mapping.xml; sudo systemctl restart tomcat9 guacd
La commande retourne le mot de passe attribué que l'on peut envoyer aux clients pour qu'ils puissent se connecter:
<authorize username="termvnc" password="Ob2VnoinjmoJxBempXY=">